mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-11 07:24:46 +00:00
Makefile: Make sure all linker input objects exist
In case the build system builds a directory with empty Makefile, one which does not contain any obj-y entries, the build fails to link due to missing built-in.o . This happens because of this part of scripts/Makefile.build 81 ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),) 82 builtin-target := $(obj)/built-in.o 83 endif which does not assign builtin-target in case obj-y is empty. The built-in target is then not built at all, and built-in.o is not generated by this part of scripts/Makefile.build 325 ifdef builtin-target 326 quiet_cmd_link_o_target = AR $@ 327 # If the list of objects to link is empty, just create an empty built-in.o ... 335 targets += $(builtin-target) 336 endif # builtin-target This is the correct behavior. The final link however expects the built-in.o to exist in every directory included in the build, even in those where the aforementioned code skipped generation of built-in.o . Make sure the built-in.o does exist for every directory used in final link simply by doing touch on every built-in.o used for the link, which will create empty built-in.o in case any built-in.o is missing. A possible alternative fix is the always define the builtin-target and always generate built-in.o . Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Tested-by: Quentin Schulz <quentin.schulz@cherry.de>
This commit is contained in:
parent
24c76a1f43
commit
37a777e128
3 changed files with 12 additions and 3 deletions
5
Makefile
5
Makefile
|
@ -1788,6 +1788,7 @@ endif
|
|||
ifeq ($(LTO_ENABLE),y)
|
||||
quiet_cmd_u-boot__ ?= LTO $@
|
||||
cmd_u-boot__ ?= \
|
||||
touch $(u-boot-main) ; \
|
||||
$(CC) -nostdlib -nostartfiles \
|
||||
$(LTO_FINAL_LDFLAGS) $(c_flags) \
|
||||
$(KBUILD_LDFLAGS:%=-Wl,%) $(LDFLAGS_u-boot:%=-Wl,%) -o $@ \
|
||||
|
@ -1801,7 +1802,9 @@ quiet_cmd_u-boot__ ?= LTO $@
|
|||
$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
|
||||
else
|
||||
quiet_cmd_u-boot__ ?= LD $@
|
||||
cmd_u-boot__ ?= $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
|
||||
cmd_u-boot__ ?= \
|
||||
touch $(u-boot-main) ; \
|
||||
$(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
|
||||
-T u-boot.lds $(u-boot-init) \
|
||||
--whole-archive \
|
||||
$(u-boot-main) \
|
||||
|
|
|
@ -22,7 +22,9 @@ SANITIZERS += -fsanitize=fuzzer
|
|||
endif
|
||||
KBUILD_CFLAGS += $(SANITIZERS)
|
||||
|
||||
cmd_u-boot__ = $(CC) -o $@ -Wl,-T u-boot.lds $(u-boot-init) \
|
||||
cmd_u-boot__ = \
|
||||
touch $(u-boot-main) ; \
|
||||
$(CC) -o $@ -Wl,-T u-boot.lds $(u-boot-init) \
|
||||
$(KBUILD_LDFLAGS:%=-Wl,%) \
|
||||
$(SANITIZERS) \
|
||||
$(LTO_FINAL_LDFLAGS) \
|
||||
|
@ -32,7 +34,9 @@ cmd_u-boot__ = $(CC) -o $@ -Wl,-T u-boot.lds $(u-boot-init) \
|
|||
-Wl,--no-whole-archive \
|
||||
$(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -Wl,--gc-sections
|
||||
|
||||
cmd_u-boot-spl = (cd $(obj) && $(CC) -o $(SPL_BIN) -Wl,-T u-boot-spl.lds \
|
||||
cmd_u-boot-spl = (cd $(obj) && \
|
||||
touch $(patsubst $(obj)/%,%,$(u-boot-spl-main)) && \
|
||||
$(CC) -o $(SPL_BIN) -Wl,-T u-boot-spl.lds \
|
||||
$(KBUILD_LDFLAGS:%=-Wl,%) \
|
||||
$(SANITIZERS) \
|
||||
$(LTO_FINAL_LDFLAGS) \
|
||||
|
|
|
@ -510,6 +510,7 @@ quiet_cmd_u-boot-spl ?= LTO $@
|
|||
cmd_u-boot-spl ?= \
|
||||
( \
|
||||
cd $(obj) && \
|
||||
touch $(patsubst $(obj)/%,%,$(u-boot-spl-main)) && \
|
||||
$(CC) -nostdlib -nostartfiles $(LTO_FINAL_LDFLAGS) $(c_flags) \
|
||||
$(KBUILD_LDFLAGS:%=-Wl,%) $(LDFLAGS_$(@F):%=-Wl,%) \
|
||||
$(patsubst $(obj)/%,%,$(u-boot-spl-init)) \
|
||||
|
@ -526,6 +527,7 @@ quiet_cmd_u-boot-spl ?= LD $@
|
|||
cmd_u-boot-spl ?= \
|
||||
( \
|
||||
cd $(obj) && \
|
||||
touch $(patsubst $(obj)/%,%,$(u-boot-spl-main)) && \
|
||||
$(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_$(@F)) \
|
||||
$(patsubst $(obj)/%,%,$(u-boot-spl-init)) \
|
||||
--whole-archive \
|
||||
|
|
Loading…
Add table
Reference in a new issue