g77/linpack
[nestedvm.git] / Makefile
index 5956163..8a6af84 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,7 @@ tasks = upstream/tasks
 flags = -march=mips1
 MIPS_CC = mips-unknown-elf-gcc
 MIPS_CXX = mips-unknown-elf-g++
+MIPS_G77 = mips-unknown-elf-g77
 
 # Be VERY careful about changing any of these as they can break binary 
 # compatibility and create hard to find bugs
@@ -103,11 +104,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 +174,20 @@ env.sh: Makefile $(tasks)/full_toolchain build/org/ibex/nestedvm/Compiler.class
 
 runtime_classes = Runtime Registers UsermodeConstants util/Seekable
 
+tex.jar: $(mips_objects) $(runtime_classes:%=build/org/ibex/nestedvm/%.class) upstream/tasks/build_tex
+       echo -e "Manifest-Version: 1.0\nMain-Class: TeX\n" > .manifest
+       cp upstream/build/tex/TeX.class build
+       cd build && jar cfm ../$@ ../.manifest \
+               TeX.class \
+               $(runtime_classes:%=org/ibex/nestedvm/%.class) \
+               org/ibex/nestedvm/*.class \
+               org/ibex/nestedvm/util/*.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 +195,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 +224,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 
@@ -211,6 +234,7 @@ rebuild-constants: $(tasks)/build_newlib
 build/tests/Env.class: build/org/ibex/nestedvm/Runtime.class build/org/ibex/nestedvm/Interpreter.class
 
 # Generic Hello Worldish test
+test_COMPILERFLAGS = -o unixruntime
 test: build/tests/Test.class
        $(JAVA) -cp build tests.Test "arg 1" "arg 2" "arg 3"
 inttest: build/tests/Test.mips build/org/ibex/nestedvm/Interpreter.class
@@ -288,7 +312,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 +384,23 @@ compiletests: $(patsubst %,build/tests/%.class,FTBench MSPackBench DJpeg Test Fr
        @true
 
 
-# IVME Paper
-doc/nestedvm.ivme04.pdf: doc/nestedvm.ivme04.tex doc/acmconf.cls
-       cd doc; pdflatex nestedvm.ivme04.tex && ./pst2pdf && pdflatex nestedvm.ivme04.tex
+charts := $(shell find doc/charts -name \*.dat)
 
-pdf: doc/nestedvm.ivme04.pdf
-       open doc/nestedvm.ivme04.pdf
+# IVME Paper
+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
+
+tex := java -cp $(usr)/../../build:.. TeX
+
+#tex := java -cp $(usr)/../../build:.. org.ibex.nestedvm.Interpreter ../tex.mips
+doc/ivme04.pdf: doc/ivme04.tex doc/acmconf.cls $(charts:%.dat=%.pdf) tex.jar upstream/tasks/extract_texinputs
+       cp upstream/build/tex/tex.pool upstream/build/tex/texinputs/tex.pool
+       cd upstream/build/tex/texinputs; echo '\latex.ltx' | $(tex)
+       cd upstream/build/tex/texinputs; ln -fs ../../../../doc/* .; rm -f ivme04.aux; touch ivme04.aux; touch ivme04.bbl
+       cd upstream/build/tex/texinputs; echo '\&latex \input ivme04.tex' | $(tex)
+       cd upstream/build/tex/texinputs; dvipdf ivme04.dvi
+
+pdf: doc/ivme04.pdf
+       open doc/ivme04.pdf