compact runtime jar
[nestedvm.git] / Makefile
index f5c2a53..d87a72c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -35,9 +35,7 @@ mips_optflags = -O3 -g \
 
 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
@@ -173,15 +171,26 @@ env.sh: Makefile $(tasks)/full_toolchain build/org/ibex/nestedvm/Compiler.class
 # 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)
+.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