Author: blueswirl Date: 2009-08-17 18:58:42 +0200 (Mon, 17 Aug 2009) New Revision: 556
Modified: trunk/openbios-devel/Makefile.target trunk/openbios-devel/arch/ppc/build.xml trunk/openbios-devel/arch/sparc32/build.xml trunk/openbios-devel/arch/sparc64/build.xml trunk/openbios-devel/arch/unix/build.xml trunk/openbios-devel/arch/x86/build.xml trunk/openbios-devel/arch/x86/entry.S trunk/openbios-devel/config/xml/dictionary.xsl trunk/openbios-devel/config/xml/object.xsl trunk/openbios-devel/config/xml/rules.xml trunk/openbios-devel/kernel/bootstrap.c Log: Introduce quiet build
Make forthstrap quiet by default. Use generic rules when possible, unify the rules and cleanup white space. Use ld flag --whole-archive to avoid some local rule use. We can also remove some hacks introduced to avoid missing symbols.
Fix problems brought in by ld flag --whole-archive: * x86: fix missing nvram symbols * PPC: disable misc.S build for qemu (conflicts with our libgcc)
Signed-off-by: Blue Swirl blauwirbel@gmail.com
Modified: trunk/openbios-devel/Makefile.target =================================================================== --- trunk/openbios-devel/Makefile.target 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/Makefile.target 2009-08-17 16:58:42 UTC (rev 556) @@ -65,4 +65,6 @@
build: all
+quiet-command = $(if $(V),$1,$(if $(2),@echo $2 && $1, @$1)) + include rules.mak
Modified: trunk/openbios-devel/arch/ppc/build.xml =================================================================== --- trunk/openbios-devel/arch/ppc/build.xml 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/arch/ppc/build.xml 2009-08-17 16:58:42 UTC (rev 556) @@ -6,13 +6,13 @@ <object source="briq/tree.fs"/> <object source="briq/briq.fs"/> </dictionary> - + <dictionary name="openbios-pearpc" init="openbios" target="forth" condition="PEARPC"> <object source="ppc.fs"/> <object source="pearpc/tree.fs"/> <object source="pearpc/pearpc.fs"/> </dictionary> - + <dictionary name="openbios-qemu" init="openbios" target="forth" condition="QEMU"> <object source="ppc.fs"/> <object source="qemu/tree.fs"/> @@ -24,86 +24,75 @@ <object source="mol/tree.fs"/> <object source="mol/mol.fs"/> </dictionary> - + <!-- HACK ALERT --> - + <executable name="target/include/briq-dict.h" target="target" condition="BRIQ"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ - @echo "};" >> $@ - ]]></rule> + @echo "};" >> $@]]></rule> <external-object source="openbios-briq.dict"/> </executable> - + <executable name="target/arch/ppc/briq/kernel.o" target="target" condition="BRIQ"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/briq/kernel.c - ]]></rule> - <external-object source="target/include/briq-dict.h"/> + <rule><![CDATA[ $(SRCDIR)/arch/ppc/briq/kernel.c $(ODIR)/target/include/static-dict.h + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/briq/kernel.c, " CC $(TARGET_DIR)$@")]]></rule> </executable> - - + + <executable name="target/include/pearpc-dict.h" target="target" condition="PEARPC"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ - @echo "};" >> $@ - ]]></rule> + @echo "};" >> $@]]></rule> <external-object source="openbios-pearpc.dict"/> </executable> - + <executable name="target/arch/ppc/pearpc/kernel.o" target="target" condition="PEARPC"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/pearpc/kernel.c - ]]></rule> - <external-object source="target/include/pearpc-dict.h"/> + <rule><![CDATA[ $(SRCDIR)/arch/ppc/pearpc/kernel.c $(ODIR)/target/include/pearpc-dict.h + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/pearpc/kernel.c, " CC $(TARGET_DIR)$@")]]></rule> </executable>
<executable name="target/include/qemu-dict.h" target="target" condition="QEMU"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ - @echo "};" >> $@ - ]]></rule> + @echo "};" >> $@]]></rule> <external-object source="openbios-qemu.dict"/> </executable>
<executable name="target/arch/ppc/qemu/kernel.o" target="target" condition="QEMU"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/qemu/kernel.c - ]]></rule> - <external-object source="target/include/qemu-dict.h"/> + <rule><![CDATA[ $(SRCDIR)/arch/ppc/qemu/kernel.c $(ODIR)/target/include/qemu-dict.h + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/qemu/kernel.c, " CC $(TARGET_DIR)$@")]]></rule> </executable>
- + <executable name="target/include/mol-dict.h" target="target" condition="MOL"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ - @echo "};" >> $@ - ]]></rule> + @echo "};" >> $@]]></rule> <external-object source="openbios-mol.dict"/> </executable> - + <executable name="target/arch/ppc/mol/kernel.o" target="target" condition="MOL"> <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/mol/kernel.c - ]]></rule> - <external-object source="target/include/mol-dict.h"/> + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/ppc/mol/kernel.c, " CC $(TARGET_DIR)$@")]]></rule> </executable> - + <!-- END OF HACK ALERT --> - + <library name="briq" target="target" type="static" condition="BRIQ"> - <object source="misc.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + <object source="misc.S"/> <object source="ofmem.c"/> <object source="briq/briq.c" flags="-I$(SRCDIR)/arch/ppc"/> <object source="briq/init.c" flags="-I$(SRCDIR)/arch/ppc"/> @@ -113,12 +102,9 @@ <object source="briq/tree.c" flags="-I$(SRCDIR)/arch/ppc"/> <object source="briq/vfd.c" flags="-I$(SRCDIR)/arch/ppc"/> </library> - + <library name="pearpc" target="target" type="static" condition="PEARPC"> - <object source="misc.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + <object source="misc.S"/> <object source="ofmem.c"/> <object source="pearpc/pearpc.c" flags="-I$(SRCDIR)/arch/ppc"/> <object source="pearpc/init.c" flags="-I$(SRCDIR)/arch/ppc"/> @@ -130,12 +116,8 @@ <!-- taken from mol: generalize --> <object source="pearpc/console.c" flags="-I$(SRCDIR)/arch/ppc"/> </library> - + <library name="qemu" target="target" type="static" condition="QEMU"> - <object source="misc.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> <object source="qemu/ofmem.c"/> <object source="qemu/qemu.c" flags="-I$(SRCDIR)/arch/ppc"/> <object source="qemu/init.c" flags="-I$(SRCDIR)/arch/ppc"/> @@ -146,12 +128,8 @@ <object source="qemu/console.c" flags="-I$(SRCDIR)/arch/ppc"/> </library>
- <library name="mol" target="target" type="static" condition="MOL"> - <object source="misc.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + <object source="misc.S"/> <object source="ofmem.c"/> <object source="mol/init.c" flags="-I$(SRCDIR)/arch/ppc"/> <object source="mol/main.c" flags="-I$(SRCDIR)/arch/ppc"/> @@ -165,22 +143,14 @@ <object source="mol/tree.c" flags="-I$(SRCDIR)/arch/ppc"/> <external-object source="target/arch/ppc/mol/kernel.o"/> </library> - + <executable name="openbios-briq.elf" target="target" condition="BRIQ"> <rule> - $(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@ - $(NM) $@ | sort > $(ODIR)/openbios-briq.syms - cp $@ $@.nostrip - $(STRIP) $@ - </rule> - <object source="start.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> - <object source="timebase.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + $(call quiet-command,$(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-briq.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> + <object source="start.S"/> + <object source="timebase.S"/> <external-object source="libbriq.a"/> <external-object source="libbootstrap.a"/> <external-object source="libmodules.a"/> @@ -188,23 +158,14 @@ <external-object source="liblibc.a"/> <external-object source="libfs.a"/> </executable> - - + <executable name="openbios-pearpc.elf" target="target" condition="PEARPC"> <rule> - $(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@ - $(NM) $@ | sort > $(ODIR)/openbios-pearpc.syms - cp $@ $@.nostrip - $(STRIP) $@ - </rule> - <object source="start.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> - <object source="timebase.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + $(call quiet-command,$(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-pearpc.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> + <object source="start.S"/> + <object source="timebase.S"/> <external-object source="libpearpc.a"/> <external-object source="libbootstrap.a"/> <external-object source="libmodules.a"/> @@ -215,44 +176,26 @@
<executable name="openbios-qemu.elf" target="target" condition="QEMU"> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/ppc/qemu/ldscript $^ -o $@ - $(NM) $@ | sort > $(ODIR)/openbios-qemu.syms - cp $@ $@.nostrip - $(STRIP) $@ - </rule> - <object source="qemu/start.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> - <object source="timebase.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/ppc/qemu/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-qemu.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> + <object source="qemu/start.S"/> + <object source="timebase.S"/> <external-object source="libqemu.a"/> <external-object source="libbootstrap.a"/> - <external-object source="libdrivers.a"/> - <!-- Needs to be after drivers to avoid missing symbols --> <external-object source="libmodules.a"/> + <external-object source="libdrivers.a"/> <external-object source="liblibc.a"/> <external-object source="libfs.a"/> <external-object source="libgcc.a"/> </executable>
- - - <executable name="openbios-mol.elf" target="target" condition="MOL"> <rule> - $(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@ - $(NM) $@ | sort > $(ODIR)/openbios-mol.syms - cp $@ $@.nostrip - $(STRIP) $@ - - </rule> - <object source="start.S"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </object> + $(call quiet-command,$(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-mol.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> + <object source="start.S"/> <external-object source="libmol.a"/> <external-object source="libbootstrap.a"/> <external-object source="libmodules.a"/> @@ -260,5 +203,5 @@ <external-object source="liblibc.a"/> <external-object source="libfs.a"/> </executable> - + </build>
Modified: trunk/openbios-devel/arch/sparc32/build.xml =================================================================== --- trunk/openbios-devel/arch/sparc32/build.xml 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/arch/sparc32/build.xml 2009-08-17 16:58:42 UTC (rev 556) @@ -20,26 +20,16 @@ <object source="forthload.c"/> <object source="loadfs.c"/> <object source="romvec.c"/> + <object source="entry.S"/> + <object source="vectors.S"/> </library>
- <executable name="target/arch/sparc32/entry.o" target="target"> - <rule><![CDATA[ $(SRCDIR)/arch/sparc32/entry.S - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </executable> - <executable name="target/arch/sparc32/vectors.o" target="target"> - <rule><![CDATA[ $(SRCDIR)/arch/sparc32/vectors.S $(SRCDIR)/arch/sparc32/wof.S $(SRCDIR)/arch/sparc32/wuf.S - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/sparc32/vectors.S]]></rule> - </executable> - <executable name="openbios-plain.elf" target="target" condition="IMAGE_ELF"> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/sparc32/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms - cp $@.nostrip $@ - $(STRIP) $@</rule> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/sparc32/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <object source="plainboot.c"/> - <external-object source="target/arch/sparc32/vectors.o"/> - <external-object source="target/arch/sparc32/entry.o"/> <external-object source="libsparc32.a"/> <external-object source="libbootstrap.a"/> <external-object source="libmodules.a"/> @@ -53,6 +43,7 @@
<executable name="target/include/static-dict.h" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ @@ -62,19 +53,16 @@
<executable name="target/arch/sparc32/builtin.o" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule><![CDATA[ $(SRCDIR)/arch/sparc32/builtin.c $(ODIR)/target/include/static-dict.h - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/sparc32/builtin.c]]></rule> + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/sparc32/builtin.c, " CC $(TARGET_DIR)$@")]]></rule> </executable>
<!-- END OF HACK ALERT -->
<executable name="openbios-builtin.elf" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/sparc32/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms - cp $@.nostrip $@ - $(STRIP) $@</rule> - <external-object source="target/arch/sparc32/vectors.o"/> - <external-object source="target/arch/sparc32/entry.o"/> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/sparc32/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <external-object source="target/arch/sparc32/builtin.o"/> <external-object source="libsparc32.a"/> <external-object source="libbootstrap.a"/>
Modified: trunk/openbios-devel/arch/sparc64/build.xml =================================================================== --- trunk/openbios-devel/arch/sparc64/build.xml 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/arch/sparc64/build.xml 2009-08-17 16:58:42 UTC (rev 556) @@ -20,36 +20,21 @@ <object source="fcodeload.c"/> <object source="loadfs.c"/> <object source="ofmem_sparc64.c"/> + <object source="entry.S"/> + <object source="vectors.S"/> + <object source="call-client.S"/> </library>
- <executable name="target/arch/sparc64/entry.o" target="target"> - <rule><![CDATA[ $(SRCDIR)/arch/sparc64/entry.S - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </executable> - <executable name="target/arch/sparc64/vectors.o" target="target"> - <rule><![CDATA[ $(SRCDIR)/arch/sparc64/vectors.S - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </executable> - <executable name="target/arch/sparc64/call-client.o" target="target"> - <rule><![CDATA[ $(SRCDIR)/arch/sparc64/call-client.S - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </executable> - <executable name="openbios-plain.elf" target="target" condition="IMAGE_ELF"> <rule> - $(LD) --warn-common -T $(SRCDIR)/arch/sparc64/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms - cp $@.nostrip $@ - $(STRIP) $@</rule> + $(call quiet-command,$(LD) --warn-common -T $(SRCDIR)/arch/sparc64/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <object source="plainboot.c"/> - <external-object source="target/arch/sparc64/vectors.o"/> - <external-object source="target/arch/sparc64/entry.o"/> - <external-object source="target/arch/sparc64/call-client.o"/> <external-object source="libsparc64.a"/> <external-object source="libbootstrap.a"/> - <external-object source="libdrivers.a"/> - <!-- Needs to be after drivers to avoid missing symbols --> <external-object source="libmodules.a"/> + <external-object source="libdrivers.a"/> <external-object source="liblibc.a"/> <external-object source="libfs.a"/> <external-object source="libgcc.a"/> @@ -59,6 +44,7 @@
<executable name="target/include/static-dict.h" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ @@ -68,7 +54,7 @@
<executable name="target/arch/sparc64/builtin.o" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule><![CDATA[ $(SRCDIR)/arch/sparc64/builtin.c $(ODIR)/target/include/static-dict.h - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/sparc64/builtin.c]]></rule> + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/sparc64/builtin.c, " CC $(TARGET_DIR)$@")]]></rule> </executable>
<!-- END OF HACK ALERT --> @@ -76,19 +62,14 @@ <executable name="openbios-builtin.elf" target="target" condition="IMAGE_ELF_EMBEDDED"> <!-- We use -N to reduce the file size by 1M --> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/sparc64/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms - cp $@.nostrip $@ - $(STRIP) $@</rule> - <external-object source="target/arch/sparc64/vectors.o"/> - <external-object source="target/arch/sparc64/entry.o"/> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/sparc64/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <external-object source="target/arch/sparc64/builtin.o"/> - <external-object source="target/arch/sparc64/call-client.o"/> <external-object source="libsparc64.a"/> <external-object source="libbootstrap.a"/> - <external-object source="libdrivers.a"/> - <!-- Needs to be after drivers to avoid missing symbols --> <external-object source="libmodules.a"/> + <external-object source="libdrivers.a"/> <external-object source="liblibc.a"/> <external-object source="libfs.a"/> <external-object source="libgcc.a"/>
Modified: trunk/openbios-devel/arch/unix/build.xml =================================================================== --- trunk/openbios-devel/arch/unix/build.xml 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/arch/unix/build.xml 2009-08-17 16:58:42 UTC (rev 556) @@ -6,7 +6,7 @@
<executable name="openbios-unix" target="target"> <rule> - $(CC) $(CFLAGS) -rdynamic $(LIBDL_LDFLAGS) -o $@ $^ + $(call quiet-command,$(CC) $(CFLAGS) -rdynamic $(LIBDL_LDFLAGS) -o $@ $^," LINK $(TARGET_DIR)$@") </rule> <object source="unix.c" flags="-DBOOTSTRAP"/> <object source="boot.c" flags="-DBOOTSTRAP"/>
Modified: trunk/openbios-devel/arch/x86/build.xml =================================================================== --- trunk/openbios-devel/arch/x86/build.xml 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/arch/x86/build.xml 2009-08-17 16:58:42 UTC (rev 556) @@ -17,29 +17,21 @@ <object source="elfload.c"/> <object source="forthload.c"/> <object source="loadfs.c"/> + <object source="entry.S"/> <object source="xbox/console.c" condition="XBOX"/> <object source="xbox/methods.c" condition="XBOX"/> </library>
- <executable name="target/arch/x86/entry.o" target="target"> - <rule><![CDATA[ $(SRCDIR)/arch/x86/entry.S - $(CC) $$EXTRACFLAGS $(AS_FLAGS) $(CFLAGS) $(INCLUDES) -c -o $@ $^]]></rule> - </executable> - <executable name="openbios.multiboot" target="target" condition="IMAGE_ELF_MULTIBOOT"> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/x86/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-multiboot.syms - cp $@.nostrip $@ - $(STRIP) $@ - </rule> - <external-object source="target/arch/x86/entry.o"/> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/x86/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-multiboot.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <object source="multiboot.c"/> <external-object source="libx86.a"/> <external-object source="libbootstrap.a"/> - <external-object source="libdrivers.a"/> - <!-- Needs to be after drivers to avoid missing symbols --> <external-object source="libmodules.a"/> + <external-object source="libdrivers.a"/> <external-object source="liblibc.a"/> <external-object source="libfs.a"/> <external-object source="libgcc.a"/> @@ -47,60 +39,51 @@
<executable name="openbios-plain.elf" target="target" condition="IMAGE_ELF"> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/x86/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms - cp $@.nostrip $@ - $(STRIP) $@ - </rule> - <external-object source="target/arch/x86/entry.o"/> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/x86/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-plain.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <object source="plainboot.c"/> <external-object source="libx86.a"/> <external-object source="libbootstrap.a"/> - <external-object source="libdrivers.a"/> - <!-- Needs to be after drivers to avoid missing symbols --> <external-object source="libmodules.a"/> + <external-object source="libdrivers.a"/> <external-object source="liblibc.a"/> <external-object source="libfs.a"/> <external-object source="libgcc.a"/> </executable>
<!-- HACK ALERT --> - + <executable name="target/include/static-dict.h" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule><![CDATA[ + $(call quiet-command,true, " GEN $(TARGET_DIR)$@") @echo "static const char forth_dictionary[] = {" > $@ @cat $< | hexdump -ve '1/0 "\t" 8/1 "0x%02x, " 1/0 "\n"' \ | sed 's/0x ,//g' >> $@ - @echo "};" >> $@ - ]]></rule> + @echo "};" >> $@]]></rule> <external-object source="openbios-x86.dict"/> </executable> - + <executable name="target/arch/x86/builtin.o" target="target" condition="IMAGE_ELF_EMBEDDED"> - <rule><![CDATA[ - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/x86/builtin.c - ]]></rule> - <external-object source="target/include/static-dict.h"/> + <rule><![CDATA[ $(SRCDIR)/arch/x86/builtin.c $(ODIR)/target/include/static-dict.h + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/arch/x86/builtin.c, " CC $(TARGET_DIR)$@")]]></rule> </executable> - + <!-- END OF HACK ALERT -->
<executable name="openbios-builtin.elf" target="target" condition="IMAGE_ELF_EMBEDDED"> <rule> - $(LD) --warn-common -N -T $(SRCDIR)/arch/x86/ldscript -o $@.nostrip $^ - $(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms - cp $@.nostrip $@ - $(STRIP) $@</rule> - <external-object source="target/arch/x86/entry.o"/> + $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/x86/ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@") + $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)/openbios-builtin.syms," GEN $(TARGET_DIR)$@.syms") + $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")</rule> <external-object source="target/arch/x86/builtin.o"/> <external-object source="libx86.a"/> <external-object source="libbootstrap.a"/> - <external-object source="libdrivers.a"/> - <!-- Needs to be after drivers to avoid missing symbols --> <external-object source="libmodules.a"/> + <external-object source="libdrivers.a"/> <external-object source="liblibc.a"/> <external-object source="libfs.a"/> <external-object source="libgcc.a"/> </executable> - + </build>
Modified: trunk/openbios-devel/arch/x86/entry.S =================================================================== --- trunk/openbios-devel/arch/x86/entry.S 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/arch/x86/entry.S 2009-08-17 16:58:42 UTC (rev 556) @@ -302,3 +302,14 @@ _idt: .fill 20, 8, 0 # idt is unitiailzed _idt_end: + + .globl arch_nvram_size, arch_nvram_get, arch_nvram_put +arch_nvram_size: + xor %eax, %eax + ret + +arch_nvram_get: + ret + +arch_nvram_put: + ret
Modified: trunk/openbios-devel/config/xml/dictionary.xsl =================================================================== --- trunk/openbios-devel/config/xml/dictionary.xsl 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/config/xml/dictionary.xsl 2009-08-17 16:58:42 UTC (rev 556) @@ -95,7 +95,7 @@ </xsl:if> xsl:text </xsl:text> <!-- rule --> - xsl:text	$(ODIR)/forthstrap</xsl:text> + xsl:text	$(call quiet-command,$(ODIR)/forthstrap</xsl:text> <xsl:for-each select="//dictionary[@name = @name]">
<xsl:variable name="conditions"> @@ -131,7 +131,7 @@ </xsl:if> xsl:text $(</xsl:text> <xsl:value-of select="@name"/> - xsl:text-DICTIONARY) </xsl:text> + xsl:text-DICTIONARY)," GEN $(TARGET_DIR)$@") </xsl:text> </xsl:if> </xsl:if> </xsl:for-each>
Modified: trunk/openbios-devel/config/xml/object.xsl =================================================================== --- trunk/openbios-devel/config/xml/object.xsl 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/config/xml/object.xsl 2009-08-17 16:58:42 UTC (rev 556) @@ -63,13 +63,19 @@ xsl:text </xsl:text> </xsl:when> xsl:otherwise - <xsl:if test="@flags!=''"> - xsl:text 	EXTRACFLAGS="</xsl:text> - <xsl:value-of select="@flags"/> - xsl:text" ;</xsl:text> - </xsl:if> - <!-- FIXME this requires strict spaces in rules.xml --> - <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object']"/> + xsl:choose + <xsl:when test="@flags!=''"> + <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object'][@extracflags='1']"/> + xsl:text </xsl:text> + <xsl:value-of select="@flags"/> + xsl:text </xsl:text> + <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object'][@extracflags='2']"/> + </xsl:when> + xsl:otherwise + <!-- FIXME this requires strict spaces in rules.xml --> + <xsl:value-of select="document('rules.xml',.)//rule[@target=$target][@entity='object']"/> + </xsl:otherwise> + </xsl:choose> </xsl:otherwise> </xsl:choose>
Modified: trunk/openbios-devel/config/xml/rules.xml =================================================================== --- trunk/openbios-devel/config/xml/rules.xml 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/config/xml/rules.xml 2009-08-17 16:58:42 UTC (rev 556) @@ -1,23 +1,31 @@ <rules> <!-- host compiler build rules --> <rule target="host" entity="executable"> - $(HOSTCC) $(HOSTCFLAGS) -o $@ $^ + $(call quiet-command,$(HOSTCC) $(HOSTCFLAGS) -o $@ $^," HOSTCC $(TARGET_DIR)$@") </rule> <rule target="host" entity="object"> - $(HOSTCC) $(HOSTCFLAGS) $(HOSTINCLUDES) -c -o $@ $^ + $(call quiet-command,$(HOSTCC) $(HOSTCFLAGS) $(HOSTINCLUDES) -c -o $@ $^," HOSTCC $(TARGET_DIR)$@") </rule> +<rule target="host" entity="object" extracflags="1"> + $(call quiet-command,$(HOSTCC) $(HOSTCFLAGS) $(HOSTINCLUDES)</rule> +<rule target="host" entity="object" extracflags="2"> -c -o $@ $^," HOSTCC $(TARGET_DIR)$@") +</rule> <rule target="host" entity="library"> - $(AR) cru $@ $^; $(RANLIB) $@ + $(call quiet--command,$(AR) cru $@ $^; $(RANLIB) $@," HOSTAR $(TARGET_DIR)$@") </rule>
<!-- target/cross compiler build rules --> <rule target="target" entity="executable"> - $(CC) $(CFLAGS) -o $@ $^ + $(call quiet-command,$(CC) $(CFLAGS) -o $@ $^," CC $(TARGET_DIR)$@") </rule> <rule target="target" entity="object"> - $(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $^ + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES) -c -o $@ $^," CC $(TARGET_DIR)$@") </rule> +<rule target="target" entity="object" extracflags="1"> + $(call quiet-command,$(CC) $$EXTRACFLAGS $(CFLAGS) $(INCLUDES)</rule> +<rule target="target" entity="object" extracflags="2"> -c -o $@ $^," CC $(TARGET_DIR)$@") +</rule> <rule target="target" entity="library"> - $(AR) cru $@ $^; $(RANLIB) $@ + $(call quiet-command,$(AR) cru $@ $^; $(RANLIB) $@," AR $(TARGET_DIR)$@") </rule> </rules>
Modified: trunk/openbios-devel/kernel/bootstrap.c =================================================================== --- trunk/openbios-devel/kernel/bootstrap.c 2009-08-17 16:58:39 UTC (rev 555) +++ trunk/openbios-devel/kernel/bootstrap.c 2009-08-17 16:58:42 UTC (rev 556) @@ -220,7 +220,9 @@
header->checksum=target_long(checksum);
- dump_header(header); + if (verbose) { + dump_header(header); + }
f = fopen(filename, "w"); if (!f) { @@ -727,8 +729,9 @@ buildconstant("/x", sizeof(u64));
reveal(); - printk("Dictionary initialization finished.\n"); - + if (verbose) { + printk("Dictionary initialization finished.\n"); + } return 0; }
@@ -873,7 +876,9 @@ size = ftell( file ); fseek( file, 0, SEEK_SET );
- printk("\nEncoding %s [%d bytes]\n", name, size ); + if (verbose) { + printk("\nEncoding %s [%d bytes]\n", name, size ); + } fread( dict + dicthead, size, 1, file ); PUSH( pointer2cell(dict + dicthead) ); PUSH( size ); @@ -914,8 +919,10 @@
interpret_source((char *)source);
- printk("interpretion finished. %d errors occured.\n", - errors); + if (verbose || errors > 0) { + printk("interpretion finished. %d errors occured.\n", + errors); + } }
/* @@ -964,8 +971,6 @@
const char *optstring = "VvhsI:d:D:?";
- printk(BANNER); - while (1) { #ifdef __GLIBC__ int option_index = 0; @@ -1014,12 +1019,10 @@ break; case 'd': if (!basedict) { - printk("Using source dictionary '%s'\n", optarg); basedict = optarg; } case 'D': if(!dictname) { - printk("Dumping final dictionary to '%s'\n", optarg); dictname = optarg; } break; @@ -1028,6 +1031,12 @@ } }
+ if (verbose) { + printk(BANNER); + printk("Using source dictionary '%s'\n", basedict); + printk("Dumping final dictionary to '%s'\n", dictname); + } + if (argc < optind + 1) { printk(USAGE, argv[0]); return 1; @@ -1085,7 +1094,9 @@ */
for (cnt=0; cnt<2; cnt++) { - printk("Compiling dictionary %d/%d\n", cnt+1, 2); + if (verbose) { + printk("Compiling dictionary %d/%d\n", cnt+1, 2); + } dict=bootstrapdict[cnt]; if(!basedict) { new_dictionary(argv[optind]);