# The XWT Makefile
#
-all: JVM Linux Win32 Carbon Java2 #Solaris
+all: JVM Linux Win32 Darwin Java2 Solaris
JVM: build/JVM/xwt.jar
Linux: ; make gcj platform=Linux target=i686-pc-linux-gnu link_flags="-lX11 -lXext --static"
gcc_optimizations := -O2
#gcc_optimizations := -O9 -ffast-math -fomit-frame-pointer -foptimize-sibling-calls
#gcc_optimizations += -finline-functions -funroll-loops -ffunction-sections -fdata-sections
-gcc_flags := $(gcc_optimizations) -Ibuild/h -Iupstream/jpeg-6b/src/
+gcc_flags := -nostdinc $(gcc_optimizations) -Ibuild/h -Iupstream/jpeg-6b/src/
gcj_flags := -fCLASSPATH=build/java
gcj := upstream/install/bin/$(target)-gcj $(gcc_flags) $(gcj_flags)
g++ := upstream/install/bin/$(target)-g++ $(gcc_flags)
@./.jikes $<
compile: .compile
-.compile: $(java_sources)
+.compile: $(java_sources:build/java/%.c=build/class/%.class)
@echo -e "\n\033[1mcompiling .java -> .class: src/**/*.java\033[0m"
mkdir -p build/class
@./.jikes $(java_sources)
@echo -e "\n\033[1mextracting .class -> .h: $<\033[0m"
mkdir -p `dirname $@`
ls `echo $< | sed s/.class\$$//`*.class |\
- sed s_build/class/__ | sed s/.class\$$//g | sed s_/_._g | (cd build/class; xargs ../../upstream/install/bin/gcjh -d ../h --classpath .)
+ sed s_build/class/__ | sed s/.class\$$//g | sed s_/_._g | (cd build/class; xargs ../../upstream/install/bin/$(target)-gcjh -d ../h --classpath .)
+
+# a hack since we've disabled gcj's awt implementation
+build/$(platform)/org/xwt/plat/Java2.java.o: ; mkdir -p $(@D); touch $@
+build/$(platform)/org/xwt/plat/AWT.java.o: ; mkdir -p $(@D); touch $@
-# PHASE 4: object files
build/$(platform)/%.java.o: build/java/%.java
@echo -e "\n\033[1mcompiling .java -> .o: $<\033[0m"
mkdir -p `dirname $@`
$(gcj) -c $< -o $@
-build/$(platform)/org/xwt/plat/$(platform).cc.o: src/org/xwt/plat/*.cc $(java_headers)
+build/$(platform)/org/xwt/plat/$(platform).cc.o: src/org/xwt/plat/$(platform).cc src/org/xwt/plat/*.cc $(java_headers)
@echo -e "\n\033[1mcompiling .cc -> .o: $<\033[0m"
mkdir -p `dirname $@`
$(g++) -I/usr/X11R6/include/ -Iupstream/install/include -Ibuild/h -Iupstream/$(platform)/include -Wno-multichar -c $< -o $@
$(gcc) -Ibuild/h -c $< -o $@
# PHASE 5: linking
-$(target_bin).ar: $(java_object_files) build/$(platform)/org/xwt/plat/$(platform).cc.o $(jpeg_object_files)
+$(target_bin).ar: $(java_sources:build/java/%.java=build/$(platform)/%.java.o) build/$(platform)/org/xwt/plat/$(platform).cc.o $(jpeg_object_files)
@echo -e "\n\033[1marchiving .o -> $(target_bin).ar\033[0m"
rm -f $(target_bin).ar
- $(ar) -c $(target_bin).ar $^
+ upstream/install/$(target)/bin/ar -cq $(target_bin).ar $^
$(target_bin): $(target_bin).ar
@echo -e "\n\033[1mlinking .o -> $(target_bin)\033[0m"
mkdir -p build/$(platform)
- $(gcj) --main=org.xwt.Main -o build/$(platform)/$(target_bin) $(target_bin).ar -Lupstream/install/lib $(link_flags)
+ $(gcj) -nostdlib --main=org.xwt.Main -o build/$(platform)/$(target_bin) $(target_bin).ar -Lupstream/install/$(target)/lib $(link_flags)
##############################################################################
# compile is here to force compilation of the .class files (they get used via -Ibuild) without
# having the individual .o's depend on the .java's (otherwise every .o gets recompiled when one .java changes)
-gcj: install_gcc-3.3 compile $(target_bin)
+gcj: .vendor .install_gcc-3.3_$(target) .compile $(target_bin)
build/JVM/xwt.jar: .compile
@echo -e "\n\033[1marchiving .class -> .jar: build/JVM/xwt.jar\033[0m"
mkdir -p build/JVM