Author: rminnich Date: 2009-02-20 00:50:38 +0100 (Fri, 20 Feb 2009) New Revision: 1135
Modified: coreboot-v3/arch/x86/Makefile Log:
The initram build allows you to -fcombine the source. But if you put a .S into the source file list, for reasons unknown, gcc only builds a .o with the .S symbols/code in it; all the .c bits disappear.
So, a few changes: 1. add a rule for secondary.o, we're going to need it.
I like the fact that adding a .S file is inconvenient. Good. Adding assembly should be hard.
2. Make two steps to initram .o building: first, the .c files, then any extra .o files as specified by the mainboard Makefile
I realize this is a bit ugly, if there is a better solution, I'll take it.
Signed-off-by: Ronald G. Minnich rminnich@gmail.com
Acked-by: Peter Stuge peter@stuge.se
Modified: coreboot-v3/arch/x86/Makefile =================================================================== --- coreboot-v3/arch/x86/Makefile 2009-02-18 21:17:22 UTC (rev 1134) +++ coreboot-v3/arch/x86/Makefile 2009-02-19 23:50:38 UTC (rev 1135) @@ -282,9 +282,18 @@ $(Q)printf " AS $(subst $(shell pwd)/,,$(@))\n" $(Q)$(AS) $(obj)/arch/x86/stage0_asm.s -o $@
-$(obj)/coreboot.initram $(obj)/coreboot.initram.map: $(obj)/stage0.init $(obj)/stage0-prefixed.o $(INITRAM_SRC) +$(obj)/arch/x86/secondary.o: $(src)/arch/x86/secondary.S + $(Q)mkdir -p $(dir $@) + $(Q)printf " CC $(subst $(shell pwd)/,,$(@))\n" + $(Q)$(CC) -E $(COREBOOTINCLUDE) $< \ + -o $(obj)/arch/x86/secondary.s + $(Q)printf " AS $(subst $(shell pwd)/,,$(@))\n" + $(Q)$(AS) $(obj)/arch/x86/secondary.s -o $@ + +$(obj)/coreboot.initram $(obj)/coreboot.initram.map: $(obj)/stage0.init $(obj)/stage0-prefixed.o $(INITRAM_SRC) $(INITRAM_OBJ) $(Q)printf " CC $(subst $(shell pwd)/,,$(@)) (XIP)\n" - $(Q)$(CC) $(INITCFLAGS) -fPIE -c -combine $(COMBINEFLAGS) $(INITRAM_SRC) -o $(obj)/coreboot.initram_partiallylinked.o + $(Q)$(CC) $(INITCFLAGS) -fPIE -c -combine $(COMBINEFLAGS) $(INITRAM_SRC) -o $(obj)/coreboot.initram_csource.o + $(Q)$(LD) -r $(obj)/coreboot.initram_csource.o $(INITRAM_OBJ) -o $(obj)/coreboot.initram_partiallylinked.o
$(Q)# .data and .bss must be empty because they aren't handled $(Q)printf " CHECK initram (non-empty writable/allocatable sections)\n"