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
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) \
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" > $@
echo "public interface UsermodeConstants {"; \
tr '\t' ' ' | sed -n ' \
s/ */ /g; \
- s/ *# *define \([A-Z_][A-Za-z0-9_]*\) \([0-9][0-9x]*\)/ public static final int \1 = \2;/p'; \
+ s/ *# *define \([A-Z_][A-Za-z0-9_]*\) \([0-9][0-9a-fA-Fx]*\)/ 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
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
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
+ $(JAVA) -Dnestedvm.busyboxhack=true -cp $(classpath) tests.BusyBox ash
#
# Boehm GC
@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