#
# 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 $@ $<
# Runtime.jar
#
-runtime_util_classes = SeekableData SeekableByteArray SeekableFile SeekableInputStream
-runtime_classes = Runtime Registers UsermodeConstants $(runtime_util_classes:%=util/%)
-unixruntime_classes = $(runtime_classes) UnixRuntime
+runtime_classes = Runtime Registers UsermodeConstants util/Seekable
runtime.jar: $(runtime_classes:%=build/org/ibex/nestedvm/%.class)
- cd build && jar cf ../$@ $(runtime_classes:%=org/ibex/nestedvm/%*.class)
-
-unixruntime.jar: $(unixruntime_classes:%=build/org/ibex/nestedvm/%.class)
- cd build && jar cf ../$@ $(unixruntime_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" > $@
+
+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
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
Paranoia_LDFLAGS = -lm
paranoiatest: build/tests/Paranoia.class
$(JAVA) -cp build tests.Paranoia
-
+
#
# Freetype Stuff
#
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
@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