inputoutputstream fd fix
[nestedvm.git] / Makefile
index 5956163..7e28241 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -103,11 +103,11 @@ build/mips2java$(EXE_EXT): $(java_sources) $(java_gen_sources)
 #
 # MIPS Binary compilation
 #
-build/%.o: src/%.c $(tasks)/full_toolchain
+build/%.o: src/%.c $(tasks)/build_gcc
        @mkdir -p `dirname $@`
        $(MIPS_CC) $(MIPS_CFLAGS) $($(notdir $*)_CFLAGS) -c -o $@ $<
 
-build/%.o: src/%.s $(tasks)/full_toolchain
+build/%.o: src/%.s $(tasks)/build_gcc
        @mkdir -p `dirname $@`
        $(MIPS_CC) -x assembler-with-cpp -c -o $@ $<
 
@@ -173,8 +173,19 @@ env.sh: Makefile $(tasks)/full_toolchain build/org/ibex/nestedvm/Compiler.class
 
 runtime_classes = Runtime Registers UsermodeConstants util/Seekable
 
+tex.jar: $(runtime_classes:%=build/org/ibex/nestedvm/%.class) upstream/build/build_tex
+       echo -e "Manifest-Version: 1.0\nMain-Class: org.ibex.core.Main\n" > .manifest
+       cp upstream/build/tex/TeX.class build
+       cd build && jar cfm ../$@ ../.manifest \
+               $(runtime_classes:%=org/ibex/nestedvm/%.class) \
+               org/ibex/nestedvm/Runtime\$$*.class \
+               org/ibex/nestedvm/util/Seekable\$$*.class
+
 runtime.jar: $(runtime_classes:%=build/org/ibex/nestedvm/%.class)
-       cd build && jar cf ../$@ $(runtime_classes:%=org/ibex/nestedvm/%*.class)
+       cd build && jar cf ../$@ \
+               $(runtime_classes:%=org/ibex/nestedvm/%.class) \
+               org/ibex/nestedvm/Runtime\$$*.class \
+               org/ibex/nestedvm/util/Seekable\$$*.class
 
 .manifest:
        echo -ne "Manifest-Version: 1.0\nMain-Class: org.ibex.nestedvm.RuntimeCompiler\n" > $@
@@ -182,6 +193,16 @@ runtime.jar: $(runtime_classes:%=build/org/ibex/nestedvm/%.class)
 nestedvm.jar: $(java_classes) .manifest
        cd build && jar cfm ../$@ ../.manifest $(java_classes:build/%.class=%*.class)
 
+compact_runtime_compiler.jar: $(java_classes) .manifest $(tasks)/build_gcclass
+       mkdir -p tmp/pruned
+       java -cp upstream/build/gcclass/build:$(bcel_jar) com.brian_web.gcclass.GCClass \
+               build tmp/pruned \
+               org.ibex.nestedvm.RuntimeCompiler.main 'org.ibex.nestedvm.Runtime.decodeData' \
+               'org.ibex.nestedvm.UnixRuntime.<init>' 'org.ibex.nestedvm.Runtime.initPages' \
+               'org.ibex.nestedvm.Runtime.clearPages' 'org.ibex.nestedvm.Runtime.syscall' \
+               'org.ibex.nestedvm.Runtime$$CPUState.dup'
+       cd tmp/pruned && jar cfm ../../$@ ../../.manifest .
+
 # This is only for Brian to use... don't mess with it
 rebuild-constants: $(tasks)/build_newlib
        @mkdir -p `dirname $@`
@@ -201,7 +222,7 @@ rebuild-constants: $(tasks)/build_newlib
                        s/ *# *define \([A-Z_][A-Za-z0-9_]*\) \([0-9][0-9x]*\)/    public static final int \1 = \2;/p'; \
                echo "}"; \
        ) > src/org/ibex/nestedvm/UsermodeConstants.java
-       
+
 #
 # Tests
 # These are simply here for convenience. They aren't required 
@@ -239,7 +260,7 @@ Paranoia_CFLAGS = "-Wno-error"
 Paranoia_LDFLAGS = -lm
 paranoiatest: build/tests/Paranoia.class
        $(JAVA) -cp build tests.Paranoia
-       
+
 #
 # Freetype Stuff
 #
@@ -288,7 +309,7 @@ BusyBox_COMPILERFLAGS = -o unixruntime
 build/tests/BusyBox.mips: $(mips_objects) $(tasks)/build_busybox
        @mkdir -p `dirname $@`
        cp upstream/build/busybox/busybox $@
-       
+
 busyboxtest: build/tests/BusyBox.class
        $(JAVA) -cp $(classpath) tests.BusyBox ash
 
@@ -360,9 +381,16 @@ compiletests: $(patsubst %,build/tests/%.class,FTBench MSPackBench DJpeg Test Fr
        @true
 
 
+charts := $(shell find doc/charts -name \*.dat)
+
 # IVME Paper
-doc/nestedvm.ivme04.pdf: doc/nestedvm.ivme04.tex doc/acmconf.cls
-       cd doc; pdflatex nestedvm.ivme04.tex && ./pst2pdf && pdflatex nestedvm.ivme04.tex
+doc/charts/%.pdf: doc/charts/%.dat doc/charts/%.gnuplot
+       cd doc/charts; gnuplot $*.gnuplot
+       cd doc/charts; chmod +x boxfill.pl; ./boxfill.pl -g -o unfilled.eps $*.eps
+       cd doc/charts; ps2pdf $*.eps
+
+doc/ivme04.pdf: doc/ivme04.tex doc/acmconf.cls $(charts:%.dat=%.pdf)
+       cd doc; pdflatex ivme04.tex && ./pst2pdf && pdflatex ivme04.tex
 
-pdf: doc/nestedvm.ivme04.pdf
-       open doc/nestedvm.ivme04.pdf
+pdf: doc/ivme04.pdf
+       open doc/ivme04.pdf