diff options
author | Patrick Georgi <pgeorgi@chromium.org> | 2015-04-03 10:47:15 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2015-04-04 20:07:12 +0200 |
commit | 990e7c90f035f0c9363e0c65100373795758a1da (patch) | |
tree | d16c415a16268b60206ec230a6d1907e6fbdb70c | |
parent | d69839bdfdea5d67bbbed12f29cdac52e9036875 (diff) |
build system x86: deprecate bootblock_lds and ldscripts variables
Instead of keeping this separate variable around, add linker scripts
to the $(class)-y source lists and let the build system sort things out.
This is inspired by the commit listed below, but rewritten to match
upstream, and split in smaller pieces to keep intent clear.
Change-Id: I4af687becf2971e009cb077debc902d2f0722cfb
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Based-On-Change-Id: I50af7dacf616e0f8ff4c43f4acc679089ad7022b
Based-On-Signed-off-by: Julius Werner <jwerner@chromium.org>
Based-On-Reviewed-on: https://chromium-review.googlesource.com/219170
Reviewed-on: http://review.coreboot.org/9289
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@google.com>
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | Makefile.inc | 13 | ||||
-rw-r--r-- | src/arch/mips/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/riscv/Makefile.inc | 2 | ||||
-rw-r--r-- | src/arch/x86/Makefile.inc | 33 | ||||
-rw-r--r-- | src/cpu/dmp/vortex86ex/Makefile.inc | 4 | ||||
-rw-r--r-- | src/northbridge/via/vx800/Makefile.inc | 2 | ||||
-rw-r--r-- | src/northbridge/via/vx900/Makefile.inc | 2 | ||||
-rw-r--r-- | src/southbridge/nvidia/ck804/Makefile.inc | 2 | ||||
-rw-r--r-- | src/southbridge/nvidia/mcp55/Makefile.inc | 2 | ||||
-rw-r--r-- | src/southbridge/sis/sis966/Makefile.inc | 2 | ||||
-rw-r--r-- | src/southbridge/via/k8t890/Makefile.inc | 2 |
12 files changed, 38 insertions, 30 deletions
@@ -225,7 +225,7 @@ alldirs:=$(sort $(abspath $(dir $(allobjs)))) # macro to define template macros that are used by use_template macro define create_cc_template # $1 obj class -# $2 source suffix (c, S) +# $2 source suffix (c, S, ld, ...) # $3 additional compiler flags # $4 additional dependencies ifn$(EMPTY)def $(1)-objs_$(2)_template diff --git a/Makefile.inc b/Makefile.inc index 0e34577683..f5cc207014 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -113,8 +113,8 @@ files-in-dir=$(filter-out $(call dir-wildcards,$(call filter-out-dirs,$(1),$(sor # reduce command line length by linking the objects of each # directory into an intermediate file ramstage-postprocess=$(foreach d,$(sort $(dir $(1))), \ - $(eval $(d)ramstage.o: $(call files-in-dir,$(d),$(1)); $$(LD_ramstage) -o $$@ -r $$^ ) \ - $(eval ramstage-objs:=$(d)ramstage.o $(filter-out $(call files-in-dir,$(d),$(1)),$(ramstage-objs)))) + $(eval $(d)ramstage.o: $(call files-in-dir,$(d),$(filter-out %.ld,$(1))); $$(LD_ramstage) -o $$@ -r $$^ ) \ + $(eval ramstage-objs:=$(d)ramstage.o $(filter-out $(call files-in-dir,$(d),$(1)),$(filter-out %.ld,$(ramstage-objs))))) romstage-generic-ccopts += -D__PRE_RAM__ ifeq ($(CONFIG_TRACE),y) @@ -139,6 +139,15 @@ romstage-c-deps:=$$(OPTION_TABLE_H) verstage-c-deps:=$$(OPTION_TABLE_H) bootblock-c-deps:=$$(OPTION_TABLE_H) +# Add handler to copy linker scripts +define generic-objs_ld_template_gen +de$(EMPTY)fine $(1)-objs_ld_template +$$(call src-to-obj,$1,$$(1).ld): $$(1).ld + @printf " CP $$$$(subst $$$$(obj)/,,$$$$(@))\n" + cp $$$$< $$$$@ +en$(EMPTY)def +endef + # Add handler to add no rules for manual files define generic-objs_manual_template_gen # do nothing diff --git a/src/arch/mips/Makefile.inc b/src/arch/mips/Makefile.inc index 18f98ab6dc..159d0e0a63 100644 --- a/src/arch/mips/Makefile.inc +++ b/src/arch/mips/Makefile.inc @@ -43,7 +43,7 @@ bootblock-y += ../../lib/memcpy.c bootblock-y += ../../lib/memmove.c bootblock-y += ../../lib/memset.c -bootblock_lds = $(src)/arch/mips/bootblock.ld +bootblock-y += bootblock.ld # Much of the assembly code is generated by the compiler, and may contain # terms which the preprocessor will happily go on to replace. For example diff --git a/src/arch/riscv/Makefile.inc b/src/arch/riscv/Makefile.inc index 30c84a93e2..599c7af4b8 100644 --- a/src/arch/riscv/Makefile.inc +++ b/src/arch/riscv/Makefile.inc @@ -28,7 +28,7 @@ riscv_asm_flags = ################################################################################ ifeq ($(CONFIG_ARCH_BOOTBLOCK_RISCV),y) -bootblock_lds = $(src)/arch/riscv/bootblock.ld +bootblock-y += bootblock.ld bootblock-y = bootblock.S stages.c bootblock-y += boot.c diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc index e2170f5d40..e7903aa464 100644 --- a/src/arch/x86/Makefile.inc +++ b/src/arch/x86/Makefile.inc @@ -73,15 +73,15 @@ endif ifeq ($(CONFIG_ARCH_BOOTBLOCK_X86_32),y) -bootblock_lds = $(src)/arch/x86/init/failover.ld -bootblock_lds += $(src)/cpu/x86/16bit/entry16.ld -bootblock_lds += $(src)/cpu/x86/16bit/reset16.ld -bootblock_lds += $(src)/arch/x86/lib/id.ld -bootblock_lds += $(chipset_bootblock_lds) +bootblock-srcs += $(src)/arch/x86/init/failover.ld +bootblock-srcs += $(src)/cpu/x86/16bit/entry16.ld +bootblock-srcs += $(src)/cpu/x86/16bit/reset16.ld +bootblock-srcs += $(src)/arch/x86/lib/id.ld ifeq ($(CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE),y) -bootblock_lds += $(src)/cpu/intel/fit/fit.ld +bootblock-srcs += $(src)/cpu/intel/fit/fit.ld endif +# TODO: Why can't this use the real bootblock-y += xxx.S mechanism instead? bootblock_inc = $(src)/arch/x86/init/prologue.inc bootblock_inc += $(src)/cpu/x86/16bit/entry16.inc bootblock_inc += $(src)/cpu/x86/16bit/reset16.inc @@ -103,9 +103,9 @@ ifeq ($(CONFIG_SSE),y) bootblock_romccflags := -mcpu=k7 -msse -O2 -D__PRE_RAM__ -D__BOOT_BLOCK__ endif -$(objgenerated)/bootblock.ld: $$(bootblock_lds) $(obj)/ldoptions +$(objgenerated)/bootblock.ld: $(obj)/ldoptions $$(filter %.ld,$$(bootblock-srcs)) @printf " GEN $(subst $(obj)/,,$(@))\n" - printf '$(foreach ldscript,ldoptions $(bootblock_lds),INCLUDE "$(ldscript)"\n)' > $@ + printf '$(foreach ldscript,$(^),INCLUDE "$(ldscript)"\n)' > $@ $(objgenerated)/bootblock_inc.S: $$(bootblock_inc) @printf " GEN $(subst $(obj)/,,$(@))\n" @@ -139,10 +139,9 @@ endif # CONFIG_ARCH_BOOTBLOCK_X86_32 ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y) crt0s = $(src)/arch/x86/init/prologue.inc -ldscripts = -ldscripts += $(src)/arch/x86/init/romstage.ld +romstage-srcs += $(src)/arch/x86/init/romstage.ld crt0s += $(src)/cpu/x86/32bit/entry32.inc -ldscripts += $(src)/cpu/x86/32bit/entry32.ld +romstage-srcs += $(src)/cpu/x86/32bit/entry32.ld crt0s += $(src)/cpu/x86/fpu_enable.inc ifeq ($(CONFIG_SSE),y) @@ -202,7 +201,7 @@ romstage-libs ?= $(objcbfs)/romstage_null.debug: $$(romstage-objs) $(objgenerated)/romstage_null.ld $$(romstage-libs) @printf " LINK $(subst $(obj)/,,$(@))\n" - $(LD_romstage) --gc-sections -nostdlib -nostartfiles -static -o $@ -L$(obj) $(COMPILER_RT_FLAGS_romstage) --start-group $(romstage-objs) $(romstage-libs) $(COMPILER_RT_romstage) --end-group -T $(objgenerated)/romstage_null.ld + $(LD_romstage) --gc-sections -nostdlib -nostartfiles -static -o $@ -L$(obj) $(COMPILER_RT_FLAGS_romstage) --start-group $(filter-out %.ld,$(romstage-objs)) $(romstage-libs) $(COMPILER_RT_romstage) --end-group -T $(objgenerated)/romstage_null.ld $(OBJCOPY_romstage) --only-section .illegal_globals $(@) $(objcbfs)/romstage_null.offenders && \ $(NM_romstage) $(objcbfs)/romstage_null.offenders | grep -q ""; if [ $$? -eq 0 ]; then \ echo "Forbidden global variables in romstage:"; \ @@ -211,13 +210,13 @@ $(objcbfs)/romstage_null.debug: $$(romstage-objs) $(objgenerated)/romstage_null. $(objcbfs)/romstage.debug: $$(romstage-objs) $(objgenerated)/romstage.ld $$(romstage-libs) @printf " LINK $(subst $(obj)/,,$(@))\n" - $(LD_romstage) --gc-sections -nostdlib -nostartfiles -static -o $@ -L$(obj) $(COMPILER_RT_FLAGS_romstage) --start-group $(romstage-objs) $(romstage-libs) $(COMPILER_RT_romstage) --end-group -T $(objgenerated)/romstage.ld + $(LD_romstage) --gc-sections -nostdlib -nostartfiles -static -o $@ -L$(obj) $(COMPILER_RT_FLAGS_romstage) --start-group $(filter-out %.ld,$(romstage-objs)) $(romstage-libs) $(COMPILER_RT_romstage) --end-group -T $(objgenerated)/romstage.ld -$(objgenerated)/romstage_null.ld: $$(ldscripts) $(obj)/ldoptions +$(objgenerated)/romstage_null.ld: $(obj)/ldoptions $$(filter %.ld,$$(romstage-srcs)) @printf " GEN $(subst $(obj)/,,$(@))\n" rm -f $@ printf "ROMSTAGE_BASE = 0x0;\n" > $@.tmp - printf '$(foreach ldscript,ldoptions $(ldscripts),INCLUDE "$(ldscript:$(obj)/%=%)"\n)' >> $@.tmp + printf '$(foreach ldscript,$(^),INCLUDE "$(ldscript)"\n)' >> $@.tmp mv $@.tmp $@ $(objgenerated)/romstage.ld: $(objgenerated)/romstage_null.ld $(objcbfs)/base_xip.txt @@ -278,7 +277,7 @@ endif ifneq ($(wildcard src/mainboard/$(MAINBOARDDIR)/fadt.c),) ramstage-srcs += src/mainboard/$(MAINBOARDDIR)/fadt.c endif -endif +endif # CONFIG_GENERATE_ACPI_TABLES ifeq ($(CONFIG_HAVE_SMI_HANDLER),y) ifneq ($(wildcard src/mainboard/$(MAINBOARDDIR)/smihandler.c),) smm-srcs += src/mainboard/$(MAINBOARDDIR)/smihandler.c @@ -308,7 +307,7 @@ endif $(objgenerated)/ramstage.o: $$(ramstage-objs) $(COMPILER_RT_ramstage) $$(ramstage-libs) @printf " CC $(subst $(obj)/,,$(@))\n" - $(LD_ramstage) -m elf_i386 -r -o $@ $(COMPILER_RT_FLAGS_ramstage) --start-group $(ramstage-objs) $(ramstage-libs) $(COMPILER_RT_ramstage) --end-group + $(LD_ramstage) -m elf_i386 -r -o $@ $(COMPILER_RT_FLAGS_ramstage) --start-group $(filter-out %.ld,$(ramstage-objs)) $(ramstage-libs) $(COMPILER_RT_ramstage) --end-group endif # CONFIG_ARCH_RAMSTAGE_X86_32 diff --git a/src/cpu/dmp/vortex86ex/Makefile.inc b/src/cpu/dmp/vortex86ex/Makefile.inc index c68bf9e066..6d68289b52 100644 --- a/src/cpu/dmp/vortex86ex/Makefile.inc +++ b/src/cpu/dmp/vortex86ex/Makefile.inc @@ -25,7 +25,7 @@ subdirs-y += ../../x86/smm chipset_bootblock_inc += $(src)/cpu/dmp/vortex86ex/biosdata.inc chipset_bootblock_inc += $(src)/cpu/dmp/vortex86ex/biosdata_ex.inc -chipset_bootblock_lds += $(src)/cpu/dmp/vortex86ex/biosdata.ld -chipset_bootblock_lds += $(src)/cpu/dmp/vortex86ex/biosdata_ex.ld +bootblock-y += biosdata.ld +bootblock-y += biosdata_ex.ld ROMCCFLAGS := -mcpu=i386 -O2 diff --git a/src/northbridge/via/vx800/Makefile.inc b/src/northbridge/via/vx800/Makefile.inc index 19638802c1..2305db9b45 100644 --- a/src/northbridge/via/vx800/Makefile.inc +++ b/src/northbridge/via/vx800/Makefile.inc @@ -24,4 +24,4 @@ ramstage-y += lpc.c ramstage-y += ide.c chipset_bootblock_inc += $(src)/northbridge/via/vx800/romstrap.inc -chipset_bootblock_lds += $(src)/northbridge/via/vx800/romstrap.ld +bootblock-y += romstrap.ld diff --git a/src/northbridge/via/vx900/Makefile.inc b/src/northbridge/via/vx900/Makefile.inc index 85282ddcdc..b51030944a 100644 --- a/src/northbridge/via/vx900/Makefile.inc +++ b/src/northbridge/via/vx900/Makefile.inc @@ -45,4 +45,4 @@ ramstage-y += ./../../../drivers/pc80/vga/vga_io.c chipset_bootblock_inc += $(src)/northbridge/via/vx900/romstrap.inc -chipset_bootblock_lds += $(src)/northbridge/via/vx900/romstrap.ld +bootblock-y += romstrap.ld diff --git a/src/southbridge/nvidia/ck804/Makefile.inc b/src/southbridge/nvidia/ck804/Makefile.inc index dacfc9c8c5..c88da3994d 100644 --- a/src/southbridge/nvidia/ck804/Makefile.inc +++ b/src/southbridge/nvidia/ck804/Makefile.inc @@ -20,4 +20,4 @@ ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c romstage-y += early_smbus.c chipset_bootblock_inc += $(src)/southbridge/nvidia/ck804/romstrap.inc -chipset_bootblock_lds += $(src)/southbridge/nvidia/ck804/romstrap.ld +bootblock-y += romstrap.ld diff --git a/src/southbridge/nvidia/mcp55/Makefile.inc b/src/southbridge/nvidia/mcp55/Makefile.inc index b4dc460b59..e2f8553939 100644 --- a/src/southbridge/nvidia/mcp55/Makefile.inc +++ b/src/southbridge/nvidia/mcp55/Makefile.inc @@ -19,4 +19,4 @@ romstage-$(CONFIG_USBDEBUG_IN_ROMSTAGE) += enable_usbdebug.c ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c chipset_bootblock_inc += $(src)/southbridge/nvidia/mcp55/romstrap.inc -chipset_bootblock_lds += $(src)/southbridge/nvidia/mcp55/romstrap.ld +bootblock-y += romstrap.ld diff --git a/src/southbridge/sis/sis966/Makefile.inc b/src/southbridge/sis/sis966/Makefile.inc index 5c696222d9..5cf5954992 100644 --- a/src/southbridge/sis/sis966/Makefile.inc +++ b/src/southbridge/sis/sis966/Makefile.inc @@ -14,4 +14,4 @@ romstage-$(CONFIG_USBDEBUG_IN_ROMSTAGE) += enable_usbdebug.c ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c chipset_bootblock_inc += $(src)/southbridge/sis/sis966/romstrap.inc -chipset_bootblock_lds += $(src)/southbridge/sis/sis966/romstrap.ld +bootblock-y += romstrap.ld diff --git a/src/southbridge/via/k8t890/Makefile.inc b/src/southbridge/via/k8t890/Makefile.inc index 1c5ff3fefa..634ccd198e 100644 --- a/src/southbridge/via/k8t890/Makefile.inc +++ b/src/southbridge/via/k8t890/Makefile.inc @@ -9,4 +9,4 @@ ramstage-y += error.c ramstage-y += chrome.c chipset_bootblock_inc += $(src)/southbridge/via/k8t890/romstrap.inc -chipset_bootblock_lds += $(src)/southbridge/via/k8t890/romstrap.ld +bootblock-y += romstrap.ld |