[coreboot-gerrit] Patch set updated for coreboot: e95d767 build system x86: deprecate bootblock_lds and ldscripts variables

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Fri Apr 3 11:43:36 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9289

-gerrit

commit e95d76711c463c14c3598eb826442739686458df
Author: Patrick Georgi <pgeorgi at chromium.org>
Date:   Fri Apr 3 10:47:15 2015 +0200

    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 at chromium.org>
    Based-On-Change-Id: I50af7dacf616e0f8ff4c43f4acc679089ad7022b
    Based-On-Signed-off-by: Julius Werner <jwerner at chromium.org>
    Based-On-Reviewed-on: https://chromium-review.googlesource.com/219170
---
 Makefile                                  |  2 +-
 Makefile.inc                              | 13 ++++++++++--
 src/arch/mips/Makefile.inc                |  2 +-
 src/arch/riscv/Makefile.inc               |  2 +-
 src/arch/x86/Makefile.inc                 | 33 +++++++++++++++----------------
 src/cpu/dmp/vortex86ex/Makefile.inc       |  4 ++--
 src/northbridge/via/vx800/Makefile.inc    |  2 +-
 src/northbridge/via/vx900/Makefile.inc    |  2 +-
 src/southbridge/nvidia/ck804/Makefile.inc |  2 +-
 src/southbridge/nvidia/mcp55/Makefile.inc |  2 +-
 src/southbridge/sis/sis966/Makefile.inc   |  2 +-
 src/southbridge/via/k8t890/Makefile.inc   |  2 +-
 12 files changed, 38 insertions(+), 30 deletions(-)

diff --git a/Makefile b/Makefile
index 3ad19df..97a14a8 100644
--- a/Makefile
+++ b/Makefile
@@ -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 0e34577..155ba18 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 %.a %.o,$(1))); $$(LD_ramstage) -o $$@ -r $$^ ) \
+	$(eval ramstage-objs:=$(d)ramstage.o $(filter-out $(call files-in-dir,$(d),$(1)),$(filter %.a %.o,$(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 18f98ab..159d0e0 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 242fd40..9134cda 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 += rom_media.c
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index e2170f5..9fa77d1 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 %.a %.o,$(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 %.a %.o,$(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 %.a %.o,$(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 c68bf9e..6d68289 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 1963880..2305db9 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 85282dd..b510309 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 dacfc9c..c88da39 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 b4dc460..e2f8553 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 5c69622..5cf5954 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 1c5ff3f..634ccd1 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



More information about the coreboot-gerrit mailing list