Makefile.mk: Add a common link_stage function and use it
A few differences with the original link targets: - 'libs' is now supported on all arch even though only x86 uses it - compiler_rt is included on arch that previously did not (arm). This however has no impact as there compiler_rt is not defined for those arch in xcompile - LIBGCC_FILE_NAME_bootblock is not included, but this was not defined anywhere so this is a noop Change-Id: I64f7686894c99732d06972e7ba327061db6d7c44 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83574 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
cb26ed489c
commit
7bb8de1843
@ -1314,6 +1314,15 @@ ifeq ($(CONFIG_CBFS_VERIFICATION),y)
|
||||
fi
|
||||
endif # CONFIG_CBFS_VERIFICATION
|
||||
|
||||
define link_stage
|
||||
# $1 stage name
|
||||
|
||||
$$(objcbfs)/$(1).debug: $$$$($(1)-libs) $$$$($(1)-objs)
|
||||
@printf " LINK $$(subst $$(obj)/,,$$(@))\n"
|
||||
$$(LD_$(1)) $$(LDFLAGS_$(1)) -o $$@ -L$$(obj) $$(COMPILER_RT_FLAGS_$(1)) --whole-archive --start-group $$(filter-out %.ld,$$($(1)-objs)) $$($(1)-libs) --no-whole-archive $$(COMPILER_RT_$(1)) --end-group -T $(call src-to-obj,$(1),$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
|
||||
endef
|
||||
|
||||
ifeq ($(CONFIG_SEPARATE_ROMSTAGE),y)
|
||||
cbfs-files-y += $(CONFIG_CBFS_PREFIX)/romstage
|
||||
$(CONFIG_CBFS_PREFIX)/romstage-file := $(objcbfs)/romstage.elf
|
||||
|
@ -43,13 +43,8 @@ bootblock-y += memmove.S
|
||||
bootblock-y += clock.c
|
||||
bootblock-y += stages.c
|
||||
|
||||
$(objcbfs)/bootblock.debug: $$(bootblock-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) -T $(call src-to-obj,bootblock,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) --end-group
|
||||
|
||||
$(objcbfs)/decompressor.debug: $$(decompressor-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) -T $(call src-to-obj,decompressor,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(decompressor-objs)) --end-group
|
||||
$(eval $(call link_stage,bootblock))
|
||||
$(eval $(call link_stage,decompressor))
|
||||
|
||||
endif # CONFIG_ARCH_BOOTBLOCK_ARM
|
||||
|
||||
@ -59,9 +54,7 @@ endif # CONFIG_ARCH_BOOTBLOCK_ARM
|
||||
|
||||
ifeq ($(CONFIG_ARCH_VERSTAGE_ARM),y)
|
||||
|
||||
$(objcbfs)/verstage.debug: $$(verstage-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_verstage) $(LDFLAGS_verstage) -o $@ -L$(obj) -T $(call src-to-obj,verstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(verstage-objs)) --end-group
|
||||
$(eval $(call link_stage,verstage))
|
||||
|
||||
verstage-y += boot.c
|
||||
verstage-y += div0.c
|
||||
@ -92,9 +85,7 @@ rmodules_arm-y += memcpy.S
|
||||
rmodules_arm-y += memmove.S
|
||||
rmodules_arm-y += eabi_compat.c
|
||||
|
||||
$(objcbfs)/romstage.debug: $$(romstage-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_romstage) $(LDFLAGS_romstage) -o $@ -L$(obj) -T $(call src-to-obj,romstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(romstage-objs)) --end-group
|
||||
$(eval $(call link_stage,romstage))
|
||||
|
||||
endif # CONFIG_ARCH_ROMSTAGE_ARM
|
||||
|
||||
@ -122,8 +113,6 @@ rmodules_arm-y += memmove.S
|
||||
rmodules_arm-y += eabi_compat.c
|
||||
ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c)
|
||||
|
||||
$(objcbfs)/ramstage.debug: $$(ramstage-objs)
|
||||
@printf " CC $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_ramstage) $(LDFLAGS_ramstage) -o $@ -L$(obj) -T $(call src-to-obj,ramstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(ramstage-objs)) --end-group
|
||||
$(eval $(call link_stage,ramstage))
|
||||
|
||||
endif # CONFIG_ARCH_RAMSTAGE_ARM
|
||||
|
@ -43,13 +43,8 @@ bootblock-y += memmove.S
|
||||
|
||||
# Build the bootblock
|
||||
|
||||
$(objcbfs)/bootblock.debug: $$(bootblock-objs) $(obj)/config.h
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) --end-group -T $(call src-to-obj,bootblock,$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
|
||||
$(objcbfs)/decompressor.debug: $$(decompressor-objs) $(obj)/config.h
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(decompressor-objs)) --end-group -T $(call src-to-obj,decompressor,$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
$(eval $(call link_stage,bootblock))
|
||||
$(eval $(call link_stage,decompressor))
|
||||
|
||||
endif # CONFIG_ARCH_BOOTBLOCK_ARM64
|
||||
|
||||
@ -59,9 +54,7 @@ endif # CONFIG_ARCH_BOOTBLOCK_ARM64
|
||||
|
||||
ifeq ($(CONFIG_ARCH_VERSTAGE_ARM64),y)
|
||||
|
||||
$(objcbfs)/verstage.debug: $$(verstage-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_verstage) $(LDFLAGS_verstage) -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(verstage-objs)) --end-group -T $(call src-to-obj,verstage,$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
$(eval $(call link_stage,verstage))
|
||||
|
||||
verstage-y += boot.c
|
||||
verstage-y += div0.c
|
||||
@ -103,9 +96,7 @@ rmodules_arm64-y += memcpy.S
|
||||
rmodules_arm64-y += memmove.S
|
||||
rmodules_arm64-y += eabi_compat.c
|
||||
|
||||
$(objcbfs)/romstage.debug: $$(romstage-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_romstage) $(LDFLAGS_romstage) -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(romstage-objs)) --end-group -T $(call src-to-obj,romstage,$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
$(eval $(call link_stage,romstage))
|
||||
|
||||
endif # CONFIG_ARCH_ROMSTAGE_ARM64
|
||||
|
||||
@ -144,9 +135,7 @@ ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c)
|
||||
|
||||
# Build the ramstage
|
||||
|
||||
$(objcbfs)/ramstage.debug: $$(ramstage-objs)
|
||||
@printf " CC $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_ramstage) $(LDFLAGS_ramstage) -o $@ -L$(obj) --whole-archive --start-group $(filter-out %.ld,$(ramstage-objs)) --end-group -T $(call src-to-obj,ramstage,$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
$(eval $(call link_stage,ramstage))
|
||||
|
||||
# Build ARM Trusted Firmware (BL31)
|
||||
|
||||
|
@ -21,11 +21,7 @@ bootblock-y += \
|
||||
|
||||
bootblock-generic-ccopts += $(ppc64_flags)
|
||||
|
||||
$(objcbfs)/bootblock.debug: $$(bootblock-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) \
|
||||
-T $(call src-to-obj,bootblock,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) \
|
||||
$(LIBGCC_FILE_NAME_bootblock) --end-group $(COMPILER_RT_bootblock)
|
||||
$(eval $(call link_stage,bootblock))
|
||||
|
||||
endif
|
||||
|
||||
@ -48,9 +44,7 @@ romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||
|
||||
# Build the romstage
|
||||
|
||||
$(objcbfs)/romstage.debug: $$(romstage-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_romstage) $(LDFLAGS_romstage) -o $@ -L$(obj) -T $(call src-to-obj,romstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(romstage-objs)) --end-group $(COMPILER_RT_romstage)
|
||||
$(eval $(call link_stage,romstage))
|
||||
|
||||
romstage-c-ccopts += $(ppc64_flags)
|
||||
romstage-S-ccopts += $(ppc64_asm_flags)
|
||||
@ -81,9 +75,7 @@ ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/mainboard.c
|
||||
|
||||
# Build the ramstage
|
||||
|
||||
$(objcbfs)/ramstage.debug: $$(ramstage-objs)
|
||||
@printf " CC $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_ramstage) $(LDFLAGS_ramstage) -o $@ -L$(obj) -T $(call src-to-obj,ramstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(ramstage-objs)) --end-group $(COMPILER_RT_ramstage)
|
||||
$(eval $(call link_stage,ramstage))
|
||||
|
||||
ramstage-c-ccopts += $(ppc64_flags)
|
||||
ramstage-S-ccopts += $(ppc64_asm_flags)
|
||||
|
@ -75,11 +75,7 @@ ifeq ($(CONFIG_ARCH_BOOTBLOCK_RISCV),y)
|
||||
|
||||
bootblock-y = bootblock.S
|
||||
|
||||
$(objcbfs)/bootblock.debug: $$(bootblock-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_bootblock) $(LDFLAGS_bootblock) -o $@ -L$(obj) \
|
||||
-T $(call src-to-obj,bootblock,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(bootblock-objs)) \
|
||||
$(LIBGCC_FILE_NAME_bootblock) --end-group $(COMPILER_RT_bootblock)
|
||||
$(eval $(call link_stage,bootblock))
|
||||
|
||||
bootblock-c-ccopts += $(riscv_flags)
|
||||
bootblock-S-ccopts += $(riscv_asm_flags)
|
||||
@ -99,9 +95,7 @@ romstage-$(CONFIG_SEPARATE_ROMSTAGE) += romstage.S
|
||||
|
||||
# Build the romstage
|
||||
|
||||
$(objcbfs)/romstage.debug: $$(romstage-objs)
|
||||
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_romstage) $(LDFLAGS_romstage) -o $@ -L$(obj) -T $(call src-to-obj,romstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(romstage-objs)) --end-group $(COMPILER_RT_romstage)
|
||||
$(eval $(call link_stage,romstage))
|
||||
|
||||
romstage-c-ccopts += $(riscv_flags)
|
||||
romstage-S-ccopts += $(riscv_asm_flags)
|
||||
@ -129,9 +123,7 @@ ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/mainboard.c
|
||||
|
||||
# Build the ramstage
|
||||
|
||||
$(objcbfs)/ramstage.debug: $$(ramstage-objs)
|
||||
@printf " CC $(subst $(obj)/,,$(@))\n"
|
||||
$(LD_ramstage) $(LDFLAGS_ramstage) -o $@ -L$(obj) -T $(call src-to-obj,ramstage,$(CONFIG_MEMLAYOUT_LD_FILE)) --whole-archive --start-group $(filter-out %.ld,$(ramstage-objs)) --end-group $(COMPILER_RT_ramstage)
|
||||
$(eval $(call link_stage,ramstage))
|
||||
|
||||
ramstage-c-ccopts += $(riscv_flags)
|
||||
ramstage-S-ccopts += $(riscv_asm_flags)
|
||||
|
@ -50,18 +50,6 @@ pci$(stripped_second_vbios_id).rom-align := 64
|
||||
pci$(stripped_vgabios_dgpu_id).rom-align := 64
|
||||
endif # CONFIG_SOC_AMD_COMMON_BLOCK_LPC_SPI_DMA
|
||||
|
||||
###############################################################################
|
||||
# common support for early assembly includes
|
||||
###############################################################################
|
||||
|
||||
define x86_stage
|
||||
# $1 stage name
|
||||
|
||||
$$(objcbfs)/$(1).debug: $$$$($(1)-libs) $$$$($(1)-objs)
|
||||
@printf " LINK $$(subst $$(obj)/,,$$(@))\n"
|
||||
$$(LD_$(1)) $$(LDFLAGS_$(1)) -o $$@ -L$$(obj) $$(COMPILER_RT_FLAGS_$(1)) --whole-archive --start-group $$(filter-out %.ld,$$($(1)-objs)) $$($(1)-libs) --no-whole-archive $$(COMPILER_RT_$(1)) --end-group -T $(call src-to-obj,$(1),$(CONFIG_MEMLAYOUT_LD_FILE))
|
||||
endef
|
||||
|
||||
###############################################################################
|
||||
# bootblock
|
||||
###############################################################################
|
||||
@ -90,7 +78,7 @@ bootblock-y += car.ld
|
||||
|
||||
$(call src-to-obj,bootblock,$(dir)/id.S): $(obj)/build.h
|
||||
|
||||
$(eval $(call x86_stage,bootblock))
|
||||
$(eval $(call link_stage,bootblock))
|
||||
|
||||
ifeq ($(CONFIG_BOOTBLOCK_IN_CBFS),y)
|
||||
add_bootblock = \
|
||||
@ -139,7 +127,7 @@ verstage-y += car.ld
|
||||
|
||||
verstage-libs ?=
|
||||
|
||||
$(eval $(call x86_stage,verstage))
|
||||
$(eval $(call link_stage,verstage))
|
||||
|
||||
endif # CONFIG_ARCH_VERSTAGE_X86_32 / CONFIG_ARCH_VERSTAGE_X86_64
|
||||
|
||||
@ -174,7 +162,7 @@ romstage-y += car.ld
|
||||
romstage-srcs += $(wildcard $(src)/mainboard/$(MAINBOARDDIR)/romstage.c)
|
||||
romstage-libs ?=
|
||||
|
||||
$(eval $(call x86_stage,romstage))
|
||||
$(eval $(call link_stage,romstage))
|
||||
|
||||
# Compiling crt0 with -g seems to trigger https://sourceware.org/bugzilla/show_bug.cgi?id=6428
|
||||
romstage-S-ccopts += -g0
|
||||
@ -212,7 +200,7 @@ postcar-$(CONFIG_HAVE_CF9_RESET) += cf9_reset.c
|
||||
|
||||
LDFLAGS_postcar += -Map $(objcbfs)/postcar.map
|
||||
|
||||
$(eval $(call x86_stage,postcar))
|
||||
$(eval $(call link_stage,postcar))
|
||||
|
||||
$(objcbfs)/postcar.elf: $(objcbfs)/postcar.debug.rmod
|
||||
cp $< $@
|
||||
@ -291,7 +279,7 @@ endif
|
||||
|
||||
ramstage-libs ?=
|
||||
|
||||
$(eval $(call x86_stage,ramstage))
|
||||
$(eval $(call link_stage,ramstage))
|
||||
|
||||
$(objcbfs)/ramstage.elf: $(objcbfs)/ramstage.debug.rmod
|
||||
cp $< $@
|
||||
|
Loading…
x
Reference in New Issue
Block a user