MIPS_CFLAGS = $(mips_optflags) $(flags) -I. -Wall -Wno-unused -Werror
MIPS_LD = mips-unknown-elf-gcc
-MIPS_LDFLAGS= \
- $(flags) -L$(build)/org/ibex/nestedvm --static \
- -T $(mips2java_root)/src/org/ibex/nestedvm/linker.ld -Wl,--gc-sections
+MIPS_LDFLAGS= $(flags) --static -Wl,--gc-sections
MIPS_STRIP = mips-unknown-elf-strip
# Java compiler/VM settings
#
# 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)
+tex.jar: $(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
-unixruntime.jar: $(unixruntime_classes:%=build/org/ibex/nestedvm/%.class)
- cd build && jar cf ../$@ $(unixruntime_classes:%=org/ibex/nestedvm/%*.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" > $@
+
+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 $@`
- cat \
- src/org/ibex/nestedvm/syscalls.h \
- $(usr)/mips-unknown-elf/include/sys/{errno.h,unistd.h,syslimits.h} \
- | ( \
+ ( \
+ cat \
+ src/org/ibex/nestedvm/syscalls.h \
+ $(usr)/mips-unknown-elf/include/sys/{errno.h,unistd.h,syslimits.h}; \
+ $(MIPS_CC) -E -dM $(usr)/mips-unknown-elf/include/sys/fcntl.h | awk '$$2 ~ /^[OF]_/ { print; }'; \
+ ) | ( \
echo "// THIS FILE IS AUTOGENERATED! DO NOT EDIT!"; \
echo "// run \"make rebuild-constants\" if it needs to be updated"; \
echo ""; \
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
#
# Busybox
#
BusyBox_COMPILERFLAGS = -o unixruntime
-build/tests/BusyBox.mips: $(mips_object) $(tasks)/build_busybox
+build/tests/BusyBox.mips: $(mips_objects) $(tasks)/build_busybox
@mkdir -p `dirname $@`
cp upstream/build/busybox/busybox $@
-
+
busyboxtest: build/tests/BusyBox.class
- $(JAVA) -cp build tests.BusyBox ash
+ $(JAVA) -cp $(classpath) tests.BusyBox ash
#
# Boehm GC
@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