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 <[email protected]>

Acked-by: Peter Stuge <[email protected]>


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"


--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to