X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=Makefile;h=7f3032497c01a4f92fe676ceaa5aa4201a1eb343;hp=eef9f3c90ea7be54f54e82452c5750a51874dcb0;hb=ae52817e5cb153f781b76f5d525e127f217b5482;hpb=9a99c75eb445c584062e1c24c004c7f2c5aa67c3 diff --git a/Makefile b/Makefile index eef9f3c..7f30324 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,11 @@ +.SECONDARY: + # # What to build # -doc/nestedvm.ivme04.pdf: doc/nestedvm.ivme04.tex doc/acmconf.cls - cd doc; pdflatex nestedvm.ivme04.tex && ./pst2pdf && pdflatex nestedvm.ivme04.tex - -pdf: doc/nestedvm.ivme04.pdf - open doc/nestedvm.ivme04.pdf - # Java sources that are part of the compiler/interpreter -java_sources = $(wildcard src/org/xwt/mips/*.java) $(wildcard src/org/xwt/mips/util/*.java) - -# Java sources that are part of the compiler/interpreter that are -# generated from other sources -java_gen_sources = $(patsubst %,build/org/xwt/mips/%.java, UsermodeConstants) +java_sources = $(wildcard src/org/ibex/nestedvm/*.java) $(wildcard src/org/ibex/nestedvm/util/*.java) # C sources that are part of the compiler/interpreter mips_sources = crt0.c support_aux.c @@ -33,18 +25,19 @@ MIPS_CXX = mips-unknown-elf-g++ # Be VERY careful about changing any of these as they can break binary # compatibility and create hard to find bugs mips_optflags = -O3 -g \ - -fno-rename-registers -freduce-all-givs \ - -fno-peephole -fno-peephole2 -fmove-all-movables -fno-schedule-insns \ - -fno-delayed-branch \ -mmemcpy \ -ffunction-sections -fdata-sections \ - -falign-functions=512 + -falign-functions=512 \ + -fno-rename-registers \ + -fno-schedule-insns \ + -fno-delayed-branch \ + -freduce-all-givs MIPS_CFLAGS = $(mips_optflags) $(flags) -I. -Wall -Wno-unused -Werror MIPS_LD = mips-unknown-elf-gcc MIPS_LDFLAGS= \ - $(flags) -L$(build)/org/xwt/mips --static \ - -T $(mips2java_root)/src/org/xwt/mips/linker.ld -Wl,--gc-sections + $(flags) -L$(build)/org/ibex/nestedvm --static \ + -T $(mips2java_root)/src/org/ibex/nestedvm/linker.ld -Wl,--gc-sections MIPS_STRIP = mips-unknown-elf-strip # Java compiler/VM settings @@ -56,22 +49,19 @@ else JAVAC_NODEBUG_FLAGS = -g:none endif -CLASSPATH = build:upstream/build/bcel/bcel-5.1.jar +bcel_jar = upstream/build/bcel-5.1/bcel-5.1.jar +classpath = build:$(bcel_jar) GCJ = gcj EXE_EXT = ##### -java_classes = \ - $(java_sources:src/%.java=build/%.class) \ - $(java_gen_sources:%.java=%.class) - -mips_objects = $(mips_sources:%.c=build/org/xwt/mips/%.o) $(mips_asm_sources:%.s=build/org/xwt/mips/%.o) - -.SECONDARY: +java_classes = $(java_sources:src/%.java=build/%.class) +mips_objects = $(mips_sources:%.c=build/org/ibex/nestedvm/%.o) $(mips_asm_sources:%.s=build/org/ibex/nestedvm/%.o) -PATH := $(mips2java_root)/upstream/install/bin:$(PATH) +usr = $(mips2java_root)/upstream/install +PATH := $(usr)/bin:$(PATH) export PATH # @@ -83,15 +73,15 @@ all: build/mips2java$(EXE_EXT) $(mips_objects) endif $(tasks)/%: - $(MAKE) -C upstream tasks/$* MIPS_LDFLAGS="$(MIPS_LDFLAGS)" MIPS_CFLAGS="$(flags) $(mips_optflags)" + $(MAKE) -C upstream tasks/$* usr="$(usr)" MIPS_LDFLAGS="$(MIPS_LDFLAGS)" MIPS_CFLAGS="$(flags) $(mips_optflags)" upstream_clean_%: - $(MAKE) -C upstream clean_$* + $(MAKE) -C upstream clean_$* usr="$(usr)" -errno_h = upstream/install/mips-unknown-elf/include/sys/errno.h +errno_h = $(usr)/mips-unknown-elf/include/sys/errno.h $(errno_h): $(tasks)/build_newlib -unistd_h = upstream/install/mips-unknown-elf/include/sys/unistd.h +unistd_h = $(usr)/mips-unknown-elf/include/sys/unistd.h $(unistd_h): $(tasks)/build_newlib # @@ -100,33 +90,23 @@ $(unistd_h): $(tasks)/build_newlib # This works around a gcj -C bug ifeq ($(firstword $(JAVAC)),gcj) -build/org/xwt/mips/util/.Dummy.class: +build/org/ibex/nestedvm/util/.Dummy.class: mkdir -p `dirname $@` touch $@ -$(java_classes): build/org/xwt/mips/util/.Dummy.class +$(java_classes): build/org/ibex/nestedvm/util/.Dummy.class endif -$(java_classes): $(tasks)/unpack_bcel $(java_sources) $(java_gen_sources) - $(JAVAC) -classpath $(CLASSPATH) -d build $(java_sources) $(java_gen_sources) +$(java_classes): $(java_sources) $(bcel_jar) + $(JAVAC) -classpath $(classpath) -d build $(java_sources) -build/org/xwt/mips/UsermodeConstants.java: src/org/xwt/mips/syscalls.h $(errno_h) $(unistd_h) - @mkdir -p `dirname $@` - cat $^ |\ - (FILE=org.xwt.mips.UsermodeConstants;\ - C="`echo $$FILE | sed 's/.*\.\([^\.]*\)$$/\1/;'`";\ - P="`echo $$FILE | sed -n 's/\(.*\)\..*/\1/p;'`";\ - [ -n "$$P" ] && echo "package $$P;";\ - echo "public interface $$C {";\ - 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';\ - echo "}") > $@ - +$(bcel_jar): upstream/tasks/extract_bcel + @true +# GCJ Stuff # FIXME: We're cramming more than we need into the binary here build/mips2java$(EXE_EXT): $(java_sources) $(java_gen_sources) @mkdir -p `dirname $@` - $(GCJ) -s -o $@ --main=org.xwt.mips.Compiler $(java_sources) $(java_gen_sources) + $(GCJ) -s -o $@ --main=org.ibex.nestedvm.Compiler $(java_sources) $(java_gen_sources) # # MIPS Binary compilation @@ -156,15 +136,15 @@ build/%.mips.stripped: build/%.mips # MIPS Compiler generated class compilation ifdef DO_JAVASOURCE -build/%.java: build/%.mips build/org/xwt/mips/JavaSourceCompiler.class $(tasks)/unpack_bcel - $(JAVA) -cp $(CLASSPATH) org.xwt.mips.Compiler -outformat javasource $(compiler_flags) $($(notdir $*)_COMPILERFLAGS) $(subst /,.,$*) $< > build/$*.java +build/%.java: build/%.mips build/org/ibex/nestedvm/JavaSourceCompiler.class + $(JAVA) -cp $(classpath) org.ibex.nestedvm.Compiler -outformat javasource $(compiler_flags) $($(notdir $*)_COMPILERFLAGS) $(subst /,.,$*) $< > build/$*.java -build/%.class: build/%.java build/org/xwt/mips/Runtime.class +build/%.class: build/%.java build/org/ibex/nestedvm/Runtime.class $(JAVAC) $(JAVAC_NODEBUG_FLAGS) -classpath build -d build $< else -build/%.class: build/%.mips build/org/xwt/mips/ClassFileCompiler.class $(tasks)/unpack_bcel - $(JAVA) -cp $(CLASSPATH) org.xwt.mips.Compiler -outformat class -outfile $@ $(compiler_flags) $($(notdir $*)_COMPILERFLAGS) $(subst /,.,$*) $< +build/%.class: build/%.mips build/org/ibex/nestedvm/ClassFileCompiler.class + $(JAVA) -cp $(classpath) org.ibex.nestedvm.Compiler -outformat class -outfile $@ $(compiler_flags) $($(notdir $*)_COMPILERFLAGS) $(subst /,.,$*) $< endif @@ -174,23 +154,24 @@ build/%.class: src/%.java $(JAVAC) -classpath build -d build $< clean: - rm -rf build/tests build/org/xwt/mips *.jar build/mips2java$(EXE_EXT) + rm -rf build/tests build/org/ibex/nestedvm *.jar build/mips2java$(EXE_EXT) # # env.sh # -env.sh: Makefile $(tasks)/full_toolchain build/org/xwt/mips/Compiler.class $(tasks)/unpack_bcel +env.sh: Makefile $(tasks)/full_toolchain build/org/ibex/nestedvm/Compiler.class @rm -f "$@~" - @echo 'PATH="$(mips2java_root)/build:$(mips2java_root)/upstream/install/bin:$$PATH"; export PATH' >> $@~ + @echo 'PATH="$(mips2java_root)/build:$(usr)/bin:$$PATH"; export PATH' >> $@~ @echo 'CC=mips-unknown-elf-gcc; export CC' >> $@~ @echo 'CXX=mips-unknown-elf-g++; export CXX' >> $@~ @echo 'AS=mips-unknown-elf-as; export AS' >> $@~ - @echo 'LD=mips-unknown-elf-ar; export LD' >> $@~ + @echo 'AR=mips-unknown-elf-ar; export AR' >> $@~ + @echo 'LD=mips-unknown-elf-ld; export LD' >> $@~ @echo 'RANLIB=mips-unknown-elf-ranlib; export RANLIB' >> $@~ @echo 'CFLAGS="$(mips_optflags)"; export CFLAGS' >> $@~ @echo 'CXXFLAGS="$(mips_optflags)"; export CXXFLAGS' >> $@~ @echo 'LDFLAGS="$(MIPS_LDFLAGS)"; export LDFLAGS' >> $@~ - @echo 'CLASSPATH=$(mips2java_root)/build:$(mips2java_root)/upstream/build/bcel/bcel-5.1.jar:.; export CLASSPATH' >> $@~ + @echo 'CLASSPATH=$(mips2java_root)/build:$(mips2java_root)/$(bcel_jar):.; export CLASSPATH' >> $@~ @mv "$@~" "$@" @echo "$@ created successfully" @@ -202,27 +183,40 @@ runtime_util_classes = SeekableData SeekableByteArray SeekableFile SeekableInput runtime_classes = Runtime Registers UsermodeConstants $(runtime_util_classes:%=util/%) unixruntime_classes = $(runtime_classes) UnixRuntime -runtime.jar: $(runtime_classes:%=build/org/xwt/mips/%.class) - cd build && jar cf ../$@ $(runtime_classes:%=org/xwt/mips/%*.class) - -unixruntime.jar: $(unixruntime_classes:%=build/org/xwt/mips/%.class) - cd build && jar cf ../$@ $(unixruntime_classes:%=org/xwt/mips/%*.class) - +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) +# This is only for Brian to use... don't mess with it +rebuild-constants: src/org/ibex/nestedvm/syscalls.h $(errno_h) $(unistd_h) + @mkdir -p `dirname $@` + cat $^ | ( \ + echo "// THIS FILE IS AUTOGENERATED! DO NOT EDIT!"; \ + echo "// run \"make rebuild-constants\" if it needs to be updated"; \ + echo ""; \ + echo "package org.ibex.nestedvm;"; \ + 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'; \ + echo "}"; \ + ) > src/org/ibex/nestedvm/UsermodeConstants.java + # # Tests # These are simply here for convenience. They aren't required # to build or run mips2java # -build/tests/Env.class: build/org/xwt/mips/Runtime.class build/org/xwt/mips/Interpreter.class +build/tests/Env.class: build/org/ibex/nestedvm/Runtime.class build/org/ibex/nestedvm/Interpreter.class # Generic Hello Worldish test test: build/tests/Test.class $(JAVA) -cp build tests.Test "arg 1" "arg 2" "arg 3" -inttest: build/tests/Test.mips build/org/xwt/mips/Interpreter.class - $(JAVA) -cp build org.xwt.mips.Interpreter build/tests/Test.mips "arg 1" "arg 2" "arg 3" +inttest: build/tests/Test.mips build/org/ibex/nestedvm/Interpreter.class + $(JAVA) -cp build org.ibex.nestedvm.Interpreter build/tests/Test.mips "arg 1" "arg 2" "arg 3" cxxtest: build/tests/CXXTest.class $(JAVA) -cp build tests.CXXTest @@ -247,7 +241,7 @@ Paranoia_CFLAGS = "-Wno-error" Paranoia_LDFLAGS = -lm paranoiatest: build/tests/Paranoia.class $(JAVA) -cp build tests.Paranoia - + # # Freetype Stuff # @@ -296,7 +290,7 @@ BusyBox_COMPILERFLAGS = -o unixruntime build/tests/BusyBox.mips: $(mips_object) $(tasks)/build_busybox @mkdir -p `dirname $@` cp upstream/build/busybox/busybox $@ - + busyboxtest: build/tests/BusyBox.class $(JAVA) -cp build tests.BusyBox ash @@ -315,7 +309,7 @@ boehmgctest: build/tests/Env.class build/tests/GCTest.class # Speed tests # -build/tests/SpeedTest.class: build/org/xwt/mips/Runtime.class +build/tests/SpeedTest.class: build/org/ibex/nestedvm/Runtime.class tmp/thebride_1280.jpg: @mkdir -p tmp @@ -325,6 +319,18 @@ oldspeedtest: build/tests/DJpeg.class tmp/thebride_1280.jpg bash -c "time $(JAVA) -cp build tests.DJpeg -targa -outfile tmp/thebride_1280.tga tmp/thebride_1280.jpg" @echo "e90f6b915aee2fc0d2eb9fc60ace6203 tmp/thebride_1280.tga" | md5sum -c && echo "MD5 is OK" +djpegspeedtest: build/tests/SpeedTest.class build/tests/DJpeg.class tmp/thebride_1280.jpg + @echo "Running DJpeg test..." + @$(JAVA) -cp build tests.SpeedTest tests.DJpeg 8 -targa -outfile tmp/thebride_1280.tga tmp/thebride_1280.jpg + +mspackspeedtest: build/tests/SpeedTest.class build/tests/MSPackBench.class + @if [ -e tmp/mspack/comic32.exe ]; then \ + echo "Running MSPackBench test..."; \ + cd tmp/mspack && $(JAVA) -cp ../../build tests.SpeedTest tests.MSPackBench 20 *32.exe; \ + else \ + echo "Run \"make check\" to get the MS True Type fonts for the MSPackBench test"; \ + fi + speedtest: build/tests/SpeedTest.class build/tests/DJpeg.class build/tests/FTBench.class tmp/thebride_1280.jpg build/tests/MSPackBench.class @echo "Running DJpeg test..." @$(JAVA) -cp build tests.SpeedTest tests.DJpeg 10 -targa -outfile tmp/thebride_1280.tga tmp/thebride_1280.jpg @@ -334,15 +340,15 @@ speedtest: build/tests/SpeedTest.class build/tests/DJpeg.class build/tests/FTBen else \ echo "Run \"make check\" to get Arial.TTF for the FTBench test"; \ fi - @if [ -e tmp/mspack/comic32.exe ]; then \ + @if false && [ -e tmp/mspack/comic32.exe ]; then \ echo "Running MSPackBench test..."; \ cd tmp/mspack && $(JAVA) -cp ../../build tests.SpeedTest tests.MSPackBench 10 *32.exe; \ else \ echo "Run \"make check\" to get the MS True Type fonts for the MSPackBench test"; \ fi -intspeed: build/tests/DJpeg.mips build/org/xwt/mips/Interpreter.class tmp/thebride_1280.jpg - time $(JAVA) -cp build org.xwt.mips.Interpreter build/tests/DJpeg.mips -targa -outfile tmp/thebride_1280.tga tmp/thebride_1280.jpg +intspeed: build/tests/DJpeg.mips build/org/ibex/nestedvm/Interpreter.class tmp/thebride_1280.jpg + time $(JAVA) -cp build org.ibex.nestedvm.Interpreter build/tests/DJpeg.mips -targa -outfile tmp/thebride_1280.tga tmp/thebride_1280.jpg @echo "e90f6b915aee2fc0d2eb9fc60ace6203 tmp/thebride_1280.tga" | md5sum -c && echo "MD5 is OK" # @@ -355,3 +361,10 @@ check: $(patsubst %,build/tests/%.class, FTBench MSPackBench DJpeg GCTest) tmp/t compiletests: $(patsubst %,build/tests/%.class,FTBench MSPackBench DJpeg Test FreeTypeDemoHelper MSPackHelper EchoHelper BusyBox GCTest Fork) @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 + +pdf: doc/nestedvm.ivme04.pdf + open doc/nestedvm.ivme04.pdf