way better
[org.ibex.core.git] / Makefile
index f64d42f..b376eba 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -203,8 +203,13 @@ build/$(platform)/$(platform).ar: $(nonplat_java_sources:build/java/%.java=build
 upstream/jpeg-6b/build-$(target)/libjpeg.a: .install_jpeg-6b_$(target)
 
 # note: binaries appear in a different order in the dependency line vs the link line
-build/$(platform)/$(target_bin): .compile build/$(platform)/builtin.o build/$(platform)/org/ibex/plat/$(platform).cc.o upstream/jpeg-6b/build-$(target)/libjpeg.a 
+build/$(platform)/$(target_bin): upstream/jpeg-6b/build-$(target)/libjpeg.a 
        @echo -e "\n\033[1mlinking               .o -> $(target_bin)\033[0m"
+
+       rm -rf build/$(platform)/*
+       make build/$(platform)/org/ibex/plat/$(platform).cc.o
+       make build/$(platform)/builtin.o
+
        cd upstream/gcc-3.3/build-$(target)/$(target)/libjava;           \
                        (find . -name nat\*.o | grep -v JIS;              \
                        echo boehm.o;\
@@ -219,15 +224,14 @@ build/$(platform)/$(target_bin): .compile build/$(platform)/builtin.o build/$(pl
                        find java gnu -name \*.o -not -name '*[A-Z]*';         \
                        ) > $(shell pwd)/.natbins
 
-# drop gnu regexp library?
+
        cd upstream/gcc-3.3/build-$(target)/$(target)/libjava;\
-       cat $(shell pwd)/.natbins | grep -v shs | grep -v SHS |xargs nm |\
+       (cat $(shell pwd)/.natbins; echo $(shell pwd)/build/$(platform)/org/ibex/plat/$(platform).cc.o) |\
+               grep -v shs | grep -v SHS |xargs nm |\
                grep _ZN | c++filt --format java | grep " U " | sed 's_\.class\$$_.class_' | sed 's_ * U __' | sed 's_(.*__' \
                > $(shell pwd)/.natcalls
 
-#      make $(java_sources)
        rm -rf build/pruned; mkdir -p build/pruned
-#      rm -rf build/pruned; cd build; ln -s class pruned
        javac -classpath lib/bcel-5.1.jar:build/class -d build/class src/org/ibex/util/BytecodePruner.java
        rm -f build/$(platform)/ibex.jar
        cd build/class; \
@@ -240,87 +244,72 @@ build/$(platform)/$(target_bin): .compile build/$(platform)/builtin.o build/$(pl
        java -cp lib/bcel-5.1.jar:build/class org.ibex.util.BytecodePruner \
                build/$(platform)/ibex.jar:upstream/install/share/java/libgcj-3.3.jar \
                -o build/pruned \
-               `cat .natcalls | grep -v ^gcj` org.ibex.plat.Linux.main
-
-#      rm -rf build/pruned/org/ibex/js/*; cp build/java/org/ibex/js/* build/pruned/org/ibex/js/
-
-       rm -f build/pruned/java/lang/System.*
-       cp upstream/gcc-3.3/src/libjava/java/lang/System.java build/pruned/java/lang/
-
-#      rm build/pruned/gnu/gcj/runtime/FirstThread*.*
-#      cp upstream/gcc-3.3/src/libjava/gnu/gcj/runtime/FirstThread.java build/pruned/gnu/gcj/runtime/
+               `cat .natcalls`
 
        rm build/pruned/org/ibex/plat/GCJ*.class
        cp build/java/org/ibex/plat/GCJ.java build/pruned/org/ibex/plat/
-
-       rm -rf build/Linux/java
-       rm -rf build/Linux/gnu/gcj
-       rm -rf build/Linux/gnu/java
-       rm -rf build/Linux/gnu/classpath
-
-#      find build/pruned/gnu/java/locale/ -name 'LocaleInformation_*' -not -name 'LocaleInformation_en.class' -not -name 'LocaleInformation_en_US.class' -exec rm {} \;
-
-#      cd build/pruned; fastjar cvf ../../tmp.jar .
-#      java -jar lib/jarg.jar -verbose -verbosern -verboseufm -normlv -normsf -normsy -normin \
-#                              -nornc -nornf -nornm \
-#                              -normex -nobco tmp.jar
-#      cd build/pruned; rm -rf *; fastjar xvf ../../tmp_s.jar
-
        cp upstream/gcc-3.3/build-$(target)/$(target)/libjava/java/lang/Object.class build/pruned/java/lang/
 
-#                              -fnew-ra \
-#                              -ffunction-sections \
-#                              -fdata-sections \
-#                              -fomit-frame-pointer \
-#                              -fno-force-mem \
-#                              -fno-force-addr \
-#                              -fbranch-probabilities \
-#                              -fno-schedule-insns \
-#                              -fno-optimize-sibling-calls \
-#                              -fno-if-conversion \
-#                              -fno-thread-jumps \
-#                              -foptimize-static-class-initialization \
-#                              -fno-store-check \
-#                              -fno-bounds-check \
-#                              -fmerge-all-constants \
-#                              -fno-inline-functions \
-#                              -finline-limit=1 \
+       rm -f build/pruned/java/lang/System*.*
+       cp upstream/gcc-3.3/src/libjava/java/lang/System.java build/pruned/java/lang/
 
        cd build/pruned;                                                  \
-               for A in `find . -name \*.class -or -name \*.java`; do    \
+               for A in `find gnu/gcj java/lang java/net -name \*.class -or -name \*.java`; do    \
                        echo compiling $$A....;                           \
                        ../../upstream/install/bin/$(target)-gcj          \
                                -w -c -Os \
                                -fCLASSPATH=../../build/$(platform)/ibex.jar \
+                               -fassume-compiled          \
                                $$A &&                     \
                                (mkdir -p ../../build/$(platform)/`dirname $$A`; mv *.o ../../build/$(platform)/`dirname $$A`); \
                done
 
-#      rm -rf build/Linux/java/security build/Linux/gnu/java/security build/Linux/java/util/jar build/Linux/java/io/Object*
-#      rm -rf build/pruned/java/security build/pruned/gnu/java/security build/pruned/java/util/jar build/pruned/java/io/Object*
+       cd build/pruned; rm -rf gnu/gcj java/lang java/net
+       cd build/pruned;                                                  \
+               for A in `find . -name \*.class -or -name \*.java`; do    \
+                       echo compiling $$A....;                           \
+                       ../../upstream/install/bin/$(target)-gcj          \
+                               -w -c -Os \
+                               -fassume-compiled          \
+                               -ffunction-sections \
+                               -fdata-sections \
+                               -fomit-frame-pointer \
+                               -fno-force-mem \
+                               -fno-force-addr \
+                               -fmerge-all-constants \
+                               -fCLASSPATH=../../build/$(platform)/ibex.jar \
+                               $$A &&                     \
+                               (mkdir -p ../../build/$(platform)/`dirname $$A`; mv *.o ../../build/$(platform)/`dirname $$A`); \
+               done
+#                              -fnew-ra \
 
        rm -f build/$(platform)/ibex.a
 
        cd upstream/gcc-3.3/build-$(target)/$(target)/libjava;           \
                $(shell pwd)/upstream/install/$(target)/bin/ar cq        \
                        $(shell pwd)/build/$(platform)/ibex.a            \
-                       `find $(shell pwd)/build/$(platform) -name \*.o` \
+                       `find $(shell pwd)/build/$(platform) -name \*.o`
+
+       rm -f build/$(platform)/natibex.a
+       cd upstream/gcc-3.3/build-$(target)/$(target)/libjava;           \
+               $(shell pwd)/upstream/install/$(target)/bin/ar cq        \
+                       $(shell pwd)/build/$(platform)/natibex.a         \
                        `cat $(shell pwd)/.natbins`
-# --relax,-O2,--no-whole-archive,
        PATH=upstream/install/bin:$$PATH upstream/install/bin/$(target)-gcj          \
-               -Wl,--no-gc-sections,--noinhibit-exec,-rpath,upstream/install/$(target)/lib     \
-               -Wl,-nostdlib,--eh-frame-hdr,-m,elf_i386,-dynamic-linker,/lib/ld-linux.so.2 \
+               -Wl,-O2,--relax,--gc-sections,--noinhibit-exec                       \
                --main=org.ibex.plat.$(platform)                                     \
+               -Dfile.encoding=UTF8                                                 \
                -Lupstream/install/$(target)/lib                                     \
                -Lupstream/install/lib                                               \
                -Os -w                                                               \
+               -Wl,--whole-archive                                                  \
                build/$(platform)/ibex.a                                             \
+               -Wl,--no-whole-archive,--gc-sections                                 \
+               build/$(platform)/natibex.a                                          \
                upstream/jpeg-6b/build-$(target)/libjpeg.a                           \
                $(link_flags)                                                        \
                upstream/gcc-3.3/build-$(target)/$(target)/boehm-gc/.libs/libgcjgc.a \
-               -lz -ldl -lgcc -lm -lpthread -ldl -lgcc -lc -lgcc \
-               upstream/install/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.3/crtend.o \
-               upstream/install/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.3/../../../../i686-pc-linux-gnu/lib/crtn.o \
+               -lz -ldl                                                             \
                -o $@
 #      strip build/Linux/ibex.linux
 #      ls -l build/Linux/ibex.linux