[U-Boot] Parallel make issue with helloworld.efi

Tuomas Tynkkynen tuomas.tynkkynen at iki.fi
Sun May 27 18:15:02 UTC 2018


Hi Heinrich,

Thanks for taking a look.

On 05/27/2018 08:11 PM, Heinrich Schuchardt wrote:
> On 11/07/2017 04:57 PM, Tuomas Tynkkynen wrote:
>> Hi,
>>
>> Every now and then I see parallel builds failing, e.g. with
>> Linksprite_pcDuino3_Nano_defconfig:
>>
>>    CC      lib/efi_loader/efi_bootmgr.o
>>    CC      lib/efi_loader/efi_disk.o
>>    CC      lib/efi_loader/efi_net.o
>> make[2]: *** No rule to make target 'lib/efi_loader/helloworld.efi',
>> needed by '__build'.  Stop.
>> make[2]: *** Waiting for unfinished jobs....
>>    CC      lib/efi_loader/efi_smbios.o
>> make[1]: *** [scripts/Makefile.build:425: lib/efi_loader] Error 2
>> make: *** [Makefile:1279: lib] Error 2
>>
>> This has been going for a while now (since ~2017.03 or so).
>> Anybody have ideas on how to express the dependency properly?
> 
> Hello Tuomas,
> 
> the build dependencies for *.efi files are described in
> ./scripts/Makefile.lib:
> 
> EFI_LDS_PATH = $(srctree)/arch/$(ARCH)/lib/$(EFI_LDS)
> 
> cmd_efi_ld = $(LD) -nostdlib -znocombreloc -T $(EFI_LDS_PATH) -shared \
>                  -Bsymbolic $^ -o $@
> 
> $(obj)/%_efi.so: $(obj)/%.o arch/$(ARCH)/lib/$(EFI_CRT0) \
>                  arch/$(ARCH)/lib/$(EFI_RELOC)
>          $(call cmd,efi_ld)
> 
> $(obj)/%.efi: $(obj)/%_efi.so
>          $(call cmd,efi_objcopy)

Right, but...

> The target is selected in lib/efi_loader/Makefile:
> 
> ifneq ($(CONFIG_CMD_BOOTEFI_HELLO_COMPILE),)
> always += helloworld.efi
> endif
> 

... as I've described in

https://lists.denx.de/pipermail/u-boot/2018-March/323624.html

, the problem is that when recursive make is building lib/efi_loader,
arch/$(ARCH)/lib/$(EFI_CRT0) might not exist yet and the rule for building
it is only known by the recursive make responsible for building
arch/arm/lib.

> obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o
> obj-y += efi_image_loader.o efi_boottime.o efi_runtim
> 
> Does the problem ever occur if you run mrproper beforehand?
> 

It doesn't matter if it's a clean or incremental build. By increasing
the race window with this hacky patch (the ':=' -> '=' change is important):

diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 655727f431..fb569f57f2 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -99,10 +99,10 @@ endif
  endif

  # For building EFI apps
-CFLAGS_$(EFI_CRT0) := $(CFLAGS_EFI)
+CFLAGS_$(EFI_CRT0) = $(CFLAGS_EFI) $(shell echo sleeping >&2 && sleep 60)
  CFLAGS_REMOVE_$(EFI_CRT0) := $(CFLAGS_NON_EFI)

-CFLAGS_$(EFI_RELOC) := $(CFLAGS_EFI)
+CFLAGS_$(EFI_RELOC) = $(CFLAGS_EFI) $(shell echo sleeping >&2 && sleep 60)
  CFLAGS_REMOVE_$(EFI_RELOC) := $(CFLAGS_NON_EFI)

  extra-$(CONFIG_CMD_BOOTEFI_HELLO_COMPILE) += $(EFI_CRT0) $(EFI_RELOC)


and running:

export CROSS_COMPILE=arm-linux-gnueabihf-
rm -rf build-qemu_arm
make O=build-qemu_arm qemu_arm_defconfig
make O=build-qemu_arm all -j4

... I can reproduce the problem 100% of the time, even in incremental builds.
For example:

$ make O=build-qemu_arm all -j4 V=1

make -C /home/tmtynkky/opt/u-boot/build-qemu_arm KBUILD_SRC=/home/tmtynkky/opt/u-boot \
-f /home/tmtynkky/opt/u-boot/Makefile all
make[1]: Entering directory '/home/tmtynkky/opt/u-boot/build-qemu_arm'
set -e; : '  CHK     include/config/uboot.release'; mkdir -p include/config/; 	echo "2018.05$(/bin/sh ../scripts/setlocalversion ..)" < include/config/auto.conf > include/config/uboot.release.tmp; if [ -r include/config/uboot.release ] && cmp -s include/config/uboot.release include/config/uboot.release.tmp; then rm -f include/config/uboot.release.tmp; else : '  UPD     include/config/uboot.release'; mv -f include/config/uboot.release.tmp include/config/uboot.release; fi
ln -fsn .. source
set -e; : '  CHK     include/generated/timestamp_autogenerated.h'; mkdir -p include/generated/; 	(if test -n "${SOURCE_DATE_EPOCH}"; then SOURCE_DATE="@${SOURCE_DATE_EPOCH}"; DATE=""; for date in gdate date.gnu date; do ${date} -u -d "${SOURCE_DATE}" >/dev/null 2>&1 && DATE="${date}"; done; if test -n "${DATE}"; then LC_ALL=C ${DATE} -u -d "${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"'; LC_ALL=C ${DATE} -u -d "${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; LC_ALL=C ${DATE} -u -d "${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; LC_ALL=C ${DATE} -u -d "${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; LC_ALL=C ${DATE} -u -d "${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; else return 42; fi; else LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; LC_ALL=C date +'#define U_BOOT_TIME "%T"'; LC_ALL=C date +'#define U_BOOT_TZ "%z"'; LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; fi) < ../Makefile > include/generated/timestamp_autogenerated.h.tmp; if [ -r include/generated/timestamp_autogenerated.h ] && cmp -s include/generated/timestamp_autogenerated.h include/generated/timestamp_autogenerated.h.tmp; then rm -f include/generated/timestamp_autogenerated.h.tmp; else : '  UPD     include/generated/timestamp_autogenerated.h'; mv -f include/generated/timestamp_autogenerated.h.tmp include/generated/timestamp_autogenerated.h; fi
/bin/sh ../scripts/mkmakefile \
     .. . 2018 05
make -f ../scripts/Makefile.build obj=scripts/basic
   GEN     ./Makefile
make -f ../scripts/Makefile.autoconf u-boot.cfg
rm -f .tmp_quiet_recordmcount
make -f ../scripts/Makefile.build obj=scripts
make -f ../scripts/Makefile.build obj=scripts/dtc
if [ -f ../.config -o -d ../include/config ]; then \
	echo >&2 "  .. is not clean, please run 'make mrproper'"; \
	echo >&2 "  in the '..' directory.";\
	/bin/false; \
fi;
set -e; : '  CHK     include/generated/version_autogenerated.h'; mkdir -p include/generated/; 	(echo \#define PLAIN_VERSION \"2018.05""-00424-g2a8e80dfce-dirty\"; echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; echo \#define CC_VERSION_STRING \"$(LC_ALL=C arm-linux-gnueabihf-gcc --version | head -n 1)\"; echo \#define LD_VERSION_STRING \"$(LC_ALL=C arm-linux-gnueabihf-ld.bfd --version | head -n 1)\"; ) < include/config/uboot.release > include/generated/version_autogenerated.h.tmp; if [ -r include/generated/version_autogenerated.h ] && cmp -s include/generated/version_autogenerated.h include/generated/version_autogenerated.h.tmp; then rm -f include/generated/version_autogenerated.h.tmp; else : '  UPD     include/generated/version_autogenerated.h'; mv -f include/generated/version_autogenerated.h.tmp include/generated/version_autogenerated.h; fi
make -f ../scripts/Makefile.build obj=.
mkdir -p lib/
mkdir -p arch/arm/lib/
set -e; : '  CHK     include/generated/generic-asm-offsets.h'; mkdir -p include/generated/; 	(set -e; echo "#ifndef __GENERIC_ASM_OFFSETS_H__"; echo "#define __GENERIC_ASM_OFFSETS_H__"; echo "/*"; echo " * DO NOT MODIFY."; echo " *"; echo " * This file was generated by Kbuild"; echo " */"; echo ""; sed -ne 	"s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; /^->/{s:->#\(.*\):/* \1 */:; s:^->\([^ ]*\) [\$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; s:^->\([^ ]*\) [\$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"; echo ""; echo "#endif" ) < lib/asm-offsets.s > include/generated/generic-asm-offsets.h.tmp; if [ -r include/generated/generic-asm-offsets.h ] && cmp -s include/generated/generic-asm-offsets.h include/generated/generic-asm-offsets.h.tmp; then rm -f include/generated/generic-asm-offsets.h.tmp; else : '  UPD     include/generated/generic-asm-offsets.h'; mv -f include/generated/generic-asm-offsets.h.tmp include/generated/generic-asm-offsets.h; fi
set -e; : '  CHK     include/generated/asm-offsets.h'; mkdir -p include/generated/; 	(set -e; echo "#ifndef __ASM_OFFSETS_H__"; echo "#define __ASM_OFFSETS_H__"; echo "/*"; echo " * DO NOT MODIFY."; echo " *"; echo " * This file was generated by Kbuild"; echo " */"; echo ""; sed -ne 	"s:[[:space:]]*\.ascii[[:space:]]*\"\(.*\)\":\1:; /^->/{s:->#\(.*\):/* \1 */:; s:^->\([^ ]*\) [\$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; s:^->\([^ ]*\) [\$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"; echo ""; echo "#endif" ) < arch/arm/lib/asm-offsets.s > include/generated/asm-offsets.h.tmp; if [ -r include/generated/asm-offsets.h ] && cmp -s include/generated/asm-offsets.h include/generated/asm-offsets.h.tmp; then rm -f include/generated/asm-offsets.h.tmp; else : '  UPD     include/generated/asm-offsets.h'; mv -f include/generated/asm-offsets.h.tmp include/generated/asm-offsets.h; fi
make -f ../scripts/Makefile.build obj=tools
   cc -Wp,-MD,tools/.mkenvimage.o.d -Itools -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer --std=gnu11 -include ../include/compiler.h -idirafterinclude -idirafter../include -idirafter../arch/arm/include  -I../../scripts/dtc/libfdt -I../scripts/dtc/libfdt  -I../../tools -I../tools -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -D_GNU_SOURCE -c -o tools/mkenvimage.o ../tools/mkenvimage.c
   cc -Wp,-MD,tools/.fit_image.o.d -Itools -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer --std=gnu11 -include ../include/compiler.h -idirafterinclude -idirafter../include -idirafter../arch/arm/include  -I../../scripts/dtc/libfdt -I../scripts/dtc/libfdt  -I../../tools -I../tools -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -D_GNU_SOURCE -DMKIMAGE_DTC=\""dtc"\" -c -o tools/fit_image.o ../tools/fit_image.c
   cc -Wp,-MD,tools/.image-host.o.d -Itools -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer --std=gnu11 -include ../include/compiler.h -idirafterinclude -idirafter../include -idirafter../arch/arm/include  -I../../scripts/dtc/libfdt -I../scripts/dtc/libfdt  -I../../tools -I../tools -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -D_GNU_SOURCE -c -o tools/image-host.o ../tools/image-host.c
   cc -Wp,-MD,tools/.dumpimage.o.d -Itools -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer --std=gnu11 -include ../include/compiler.h -idirafterinclude -idirafter../include -idirafter../arch/arm/include  -I../../scripts/dtc/libfdt -I../scripts/dtc/libfdt  -I../../tools -I../tools -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -D_GNU_SOURCE -c -o tools/dumpimage.o ../tools/dumpimage.c
   cc -Wp,-MD,tools/.mkimage.o.d -Itools -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer --std=gnu11 -include ../include/compiler.h -idirafterinclude -idirafter../include -idirafter../arch/arm/include  -I../../scripts/dtc/libfdt -I../scripts/dtc/libfdt  -I../../tools -I../tools -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -D_GNU_SOURCE -c -o tools/mkimage.o ../tools/mkimage.c
mkdir -p include/asm
if [ -d /home/tmtynkky/opt/u-boot/arch/arm/mach-/include/mach ]; then	\
	dest=arch/arm/mach-/include/mach;			\
else									\
	dest=arch/arm/include/asm/arch-armv7;	\
fi;									\
ln -fsn /home/tmtynkky/opt/u-boot/$dest include/asm/arch
set -e; : '  CHK     include/config.h'; mkdir -p include/; 	(echo "/* Automatically generated - do not edit */"; for i in $(echo "" | sed 's/,/ /g'); do echo \#define CONFIG_$i | sed '/=/ {s/=/	/;q; } ; { s/$/	1/; }'; done; echo \#define CONFIG_BOARDDIR board/emulation/qemu-arm; echo \#include \<config_defaults.h\>; echo \#include \<config_uncmd_spl.h\>; echo \#include \<configs/"qemu-arm".h\>; echo \#include \<asm/config.h\>; echo \#include \<linux/kconfig.h\>; echo \#include \<config_fallbacks.h\>;) < ../scripts/Makefile.autoconf > include/config.h.tmp; if [ -r include/config.h ] && cmp -s include/config.h include/config.h.tmp; then rm -f include/config.h.tmp; else : '  UPD     include/config.h'; mv -f include/config.h.tmp include/config.h; fi
   arm-linux-gnueabihf-gcc -E -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -fshort-wchar -Os -fno-stack-protector -fno-delete-null-pointer-checks  -g -fstack-usage -Wno-format-nonliteral -Werror=date-time  -D__KERNEL__ -D__UBOOT__   -D__ARM__ -marm -mno-thumb-interwork  -mabi=aapcs-linux  -mword-relocations  -fno-pic  -mno-unaligned-access  -ffunction-sections -fdata-sections -fno-common -ffixed-r9  -msoft-float    -pipe -Iinclude  -I../include -I../arch/arm/include -include ../include/linux/kconfig.h  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/7.2.0/include  -DDO_DEPS_ONLY -dM ../include/common.h > u-boot.cfg.tmp && { grep 'define CONFIG_' u-boot.cfg.tmp > u-boot.cfg; rm u-boot.cfg.tmp; } || { rm u-boot.cfg.tmp; false; }
   cc  -o tools/mkenvimage tools/mkenvimage.o tools/os_support.o tools/lib/crc32.o
   cc  -o tools/dumpimage tools/aisimage.o tools/atmelimage.o tools/common/bootm.o tools/lib/crc32.o tools/default_image.o tools/lib/fdtdec_common.o tools/lib/fdtdec.o tools/fit_common.o tools/fit_image.o tools/common/image-fit.o tools/image-host.o tools/common/image.o tools/imagetool.o tools/imximage.o tools/kwbimage.o tools/lib/md5.o tools/lpc32xximage.o tools/mxsimage.o tools/omapimage.o tools/os_support.o tools/pblimage.o tools/pbl_crc32.o tools/vybridimage.o tools/stm32image.o tools/lib/rc4.o tools/rkcommon.o tools/rkimage.o tools/rksd.o tools/rkspi.o tools/socfpgaimage.o tools/lib/sha1.o tools/lib/sha256.o tools/common/hash.o tools/ublimage.o tools/zynqimage.o tools/zynqmpimage.o tools/zynqmpbif.o tools/libfdt/fdt.o tools/libfdt/fdt_wip.o tools/libfdt/fdt_sw.o tools/libfdt/fdt_rw.o tools/libfdt/fdt_strerror.o tools/libfdt/fdt_empty_tree.o tools/libfdt/fdt_addresses.o tools/libfdt/fdt_overlay.o tools/lib/libfdt/fdt_ro.o tools/lib/libfdt/fdt_region.o tools/gpimage.o tools/gpimage-common.o tools/dumpimage.o
   cc  -o tools/mkimage tools/aisimage.o tools/atmelimage.o tools/common/bootm.o tools/lib/crc32.o tools/default_image.o tools/lib/fdtdec_common.o tools/lib/fdtdec.o tools/fit_common.o tools/fit_image.o tools/common/image-fit.o tools/image-host.o tools/common/image.o tools/imagetool.o tools/imximage.o tools/kwbimage.o tools/lib/md5.o tools/lpc32xximage.o tools/mxsimage.o tools/omapimage.o tools/os_support.o tools/pblimage.o tools/pbl_crc32.o tools/vybridimage.o tools/stm32image.o tools/lib/rc4.o tools/rkcommon.o tools/rkimage.o tools/rksd.o tools/rkspi.o tools/socfpgaimage.o tools/lib/sha1.o tools/lib/sha256.o tools/common/hash.o tools/ublimage.o tools/zynqimage.o tools/zynqmpimage.o tools/zynqmpbif.o tools/libfdt/fdt.o tools/libfdt/fdt_wip.o tools/libfdt/fdt_sw.o tools/libfdt/fdt_rw.o tools/libfdt/fdt_strerror.o tools/libfdt/fdt_empty_tree.o tools/libfdt/fdt_addresses.o tools/libfdt/fdt_overlay.o tools/lib/libfdt/fdt_ro.o tools/lib/libfdt/fdt_region.o tools/gpimage.o tools/gpimage-common.o tools/mkimage.o
make -f ../scripts/Makefile.build obj=arch/arm/cpu
make -f ../scripts/Makefile.build obj=arch/arm/cpu/armv7
make -f ../scripts/Makefile.build obj=arch/arm/lib
make -f ../scripts/Makefile.build obj=board/emulation/qemu-arm
make -f ../scripts/Makefile.build obj=cmd
make -f ../scripts/Makefile.build obj=common
make -f ../scripts/Makefile.build obj=disk
make -f ../scripts/Makefile.build obj=drivers
   arm-linux-gnueabihf-gcc -Wp,-MD,arch/arm/lib/.crt0_arm_efi.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/7.2.0/include -Iinclude  -I../include  -I../arch/arm/include -include ../include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -D__ASSEMBLY__ -g -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7   -c -o arch/arm/lib/crt0_arm_efi.o ../arch/arm/lib/crt0_arm_efi.S
sleeping
make -f ../scripts/Makefile.build obj=common/init
make -f ../scripts/Makefile.build obj=drivers/adc
   arm-linux-gnueabihf-gcc -Wp,-MD,common/.main.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/7.2.0/include -Iinclude  -I../include  -I../arch/arm/include -include ../include/linux/kconfig.h  -I../common -Icommon -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -fshort-wchar -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(main)"  -D"KBUILD_MODNAME=KBUILD_STR(main)" -c -o common/main.o ../common/main.c
make -f ../scripts/Makefile.build obj=drivers/ata
   arm-linux-gnueabihf-gcc -Wp,-MD,cmd/.version.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/7.2.0/include -Iinclude  -I../include  -I../arch/arm/include -include ../include/linux/kconfig.h  -I../cmd -Icmd -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -fshort-wchar -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(version)"  -D"KBUILD_MODNAME=KBUILD_STR(version)" -c -o cmd/version.o ../cmd/version.c
make -f ../scripts/Makefile.build obj=drivers/block
make -f ../scripts/Makefile.build obj=drivers/core
    arm-linux-gnueabihf-ld.bfd     -r -o common/built-in.o common/init/built-in.o common/main.o common/exports.o common/hash.o common/cli_hush.o common/autoboot.o common/board_f.o common/board_r.o common/bootm.o common/bootm_os.o common/fdt_support.o common/miiphyutil.o common/usb.o common/usb_hub.o common/splash.o common/menu.o common/cli_readline.o common/cli_simple.o common/console.o common/dlmalloc.o common/malloc_simple.o common/image.o common/image-fdt.o common/memsize.o common/stdio.o common/cli.o common/command.o common/s_record.o common/xyzModem.o
make -f ../scripts/Makefile.build obj=drivers/dma
    arm-linux-gnueabihf-ld.bfd     -r -o cmd/built-in.o cmd/boot.o cmd/bootm.o cmd/help.o cmd/version.o cmd/blk_common.o cmd/source.o cmd/bdinfo.o cmd/bootefi.o cmd/bootz.o cmd/console.o cmd/echo.o cmd/elf.o cmd/exit.o cmd/ext4.o cmd/ext2.o cmd/fat.o cmd/fdt.o cmd/flash.o cmd/fs.o cmd/itest.o cmd/load.o cmd/mem.o cmd/mii.o cmd/misc.o cmd/net.o cmd/part.o cmd/pci.o cmd/pcmcia.o cmd/pxe.o cmd/nvme.o cmd/scsi.o cmd/disk.o cmd/setexpr.o cmd/test.o cmd/usb.o cmd/ximg.o cmd/nvedit.o
make -f ../scripts/Makefile.build obj=drivers/gpio
make -f ../scripts/Makefile.build obj=drivers/crypto
make -f ../scripts/Makefile.build obj=drivers/i2c
make -f ../scripts/Makefile.build obj=drivers/crypto/fsl
make -f ../scripts/Makefile.build obj=drivers/crypto/rsa_mod_exp
make -f ../scripts/Makefile.build obj=drivers/mtd
make -f ../scripts/Makefile.build obj=drivers/dfu
make -f ../scripts/Makefile.build obj=drivers/firmware
make -f ../scripts/Makefile.build obj=drivers/input
make -f ../scripts/Makefile.build obj=drivers/mtd/onenand
make -f ../scripts/Makefile.build obj=drivers/mailbox
make -f ../scripts/Makefile.build obj=drivers/memory
make -f ../scripts/Makefile.build obj=drivers/mtd/spi
make -f ../scripts/Makefile.build obj=drivers/misc
make -f ../scripts/Makefile.build obj=drivers/nvme
make -f ../scripts/Makefile.build obj=drivers/pcmcia
make -f ../scripts/Makefile.build obj=drivers/net
make -f ../scripts/Makefile.build obj=drivers/phy/marvell
make -f ../scripts/Makefile.build obj=drivers/pwm
make -f ../scripts/Makefile.build obj=drivers/net/phy
make -f ../scripts/Makefile.build obj=drivers/reset
make -f ../scripts/Makefile.build obj=drivers/pci
make -f ../scripts/Makefile.build obj=drivers/rtc
make -f ../scripts/Makefile.build obj=drivers/power
make -f ../scripts/Makefile.build obj=drivers/scsi
make -f ../scripts/Makefile.build obj=drivers/power/battery
make -f ../scripts/Makefile.build obj=drivers/power/domain
make -f ../scripts/Makefile.build obj=drivers/soc
make -f ../scripts/Makefile.build obj=drivers/sound
make -f ../scripts/Makefile.build obj=drivers/power/fuel_gauge
make -f ../scripts/Makefile.build obj=drivers/spmi
make -f ../scripts/Makefile.build obj=drivers/sysreset
make -f ../scripts/Makefile.build obj=drivers/thermal
make -f ../scripts/Makefile.build obj=drivers/tpm
make -f ../scripts/Makefile.build obj=drivers/video
make -f ../scripts/Makefile.build obj=drivers/power/mfd
make -f ../scripts/Makefile.build obj=drivers/watchdog
make -f ../scripts/Makefile.build obj=drivers/power/pmic
make -f ../scripts/Makefile.build obj=drivers/power/regulator
make -f ../scripts/Makefile.build obj=drivers/video/bridge
make -f ../scripts/Makefile.build obj=drivers/video/sunxi
make -f ../scripts/Makefile.build obj=drivers/serial
make -f ../scripts/Makefile.build obj=drivers/spi
make -f ../scripts/Makefile.build obj=drivers/usb/common
make -f ../scripts/Makefile.build obj=drivers/usb/dwc3
make -f ../scripts/Makefile.build obj=drivers/usb/emul
make -f ../scripts/Makefile.build obj=drivers/usb/eth
make -f ../scripts/Makefile.build obj=drivers/usb/gadget
make -f ../scripts/Makefile.build obj=drivers/usb/gadget/udc
make -f ../scripts/Makefile.build obj=drivers/usb/host
make -f ../scripts/Makefile.build obj=drivers/usb/musb-new
make -f ../scripts/Makefile.build obj=drivers/usb/musb
make -f ../scripts/Makefile.build obj=drivers/usb/phy
make -f ../scripts/Makefile.build obj=drivers/usb/ulpi
make -f ../scripts/Makefile.build obj=env
make -f ../scripts/Makefile.build obj=fs
make -f ../scripts/Makefile.build obj=fs/ext4
make -f ../scripts/Makefile.build obj=fs/fat
make -f ../scripts/Makefile.build obj=lib
make -f ../scripts/Makefile.build obj=net
make -f ../scripts/Makefile.build obj=test
make -f ../scripts/Makefile.build obj=test/dm
make -f ../scripts/Makefile.build obj=lib/efi_driver
make -f ../scripts/Makefile.build obj=lib/efi_loader
make -f ../scripts/Makefile.build obj=lib/efi_selftest
make -f ../scripts/Makefile.build obj=lib/libfdt
make -f ../scripts/Makefile.build obj=lib/zlib
   arm-linux-gnueabihf-gcc -Wp,-MD,lib/.smbios.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/7.2.0/include -Iinclude  -I../include  -I../arch/arm/include -include ../include/linux/kconfig.h  -I../lib -Ilib -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -fshort-wchar -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(smbios)"  -D"KBUILD_MODNAME=KBUILD_STR(smbios)" -c -o lib/smbios.o ../lib/smbios.c
   arm-linux-gnueabihf-gcc -Wp,-MD,lib/.display_options.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/7.2.0/include -Iinclude  -I../include  -I../arch/arm/include -include ../include/linux/kconfig.h  -I../lib -Ilib -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -fshort-wchar -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -D__LINUX_ARM_ARCH__=7    -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(display_options)"  -D"KBUILD_MODNAME=KBUILD_STR(display_options)" -c -o lib/display_options.o ../lib/display_options.c
make[3]: *** No rule to make target 'lib/efi_loader/helloworld.efi', needed by '__build'.  Stop.
make[2]: *** [../scripts/Makefile.build:423: lib/efi_loader] Error 2
make[2]: *** Waiting for unfinished jobs....


More information about the U-Boot mailing list