X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Makefile;h=2a125e4aa8a4f80c1479de7840dd6f052cbb43ca;hb=bf6d60120ff5ee057ab1fd60d786cbc83f43ee1f;hp=8a9f8f7018c74c6e55ce683cd0706aeb50396e4b;hpb=1d7de542b2adfd312fad0bdfa26e3f852491a8d9;p=org.ibex.core.git diff --git a/Makefile b/Makefile index 8a9f8f7..2a125e4 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,17 @@ JVM: build/JVM/xwt.jar Linux: ; make gcj platform=Linux target=i686-pc-linux-gnu link_flags="-lX11 -lXext --static" Solaris: ; make gcj platform=Solaris target=sparc-sun-solaris2.7 link_flags="-lX11 -lXext" Win32: ; make gcj platform=Win32 target=i686-pc-mingw32 link_flags="-Wl,--subsystem,windows -lcomdlg32" target_bin=xwt.exe -Darwin: ; make gcj platform=Darwin target=powerpc-apple-darwin link_flags="-lSystem -lmathCommon.A" +Darwin: ; make gcj platform=Darwin target=powerpc-apple-darwin link_flags="$(darwin_linker_flags)" + +# default +platform := JVM + +darwin_libdir := upstream/install/powerpc-apple-darwin/lib +darwin_linker_flags := -Wl,-dylib_file,/usr/lib/libSystem.B.dylib:$(darwin_libdir)/libSystem.B.dylib +darwin_linker_flags += -Wl,-dylib_file,/usr/lib/system/libmathCommon.A.dylib:$(darwin_libdir)/libmathCommon.A.dylib +darwin_linker_flags += -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:$(darwin_libdir)/libGL.dylib +darwin_linker_flags += -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib:$(darwin_libdir)/libGLU.dylib +darwin_linker_flags += -lSystem.B -lmathCommon.A -lGL -lGLU ############################################################################# @@ -29,15 +39,17 @@ jar := $(shell ((type fastjar &>/dev/null) && echo fastjar) | include Makefile.upstream -# FIXME this should be done with -ljpeg -jpeg_c_sources := jdapimin.c jdapistd.c jcomapi.c jcparam.c jdmaster.c jdinput.c jdmainct.c jdcoefct.c jdpostct.c jdmarker.c -jpeg_c_sources += jdhuff.c jdphuff.c jddctmgr.c jidctint.c jidctfst.c jidctflt.c jidctred.c jdsample.c jdcolor.c jdmerge.c -jpeg_c_sources += jquant1.c jquant2.c jerror.c jutils.c jmemnobs.c jmemmgr.c -upstream/jpeg-6b/src/%.c: .download_jpeg-6b +# figure out what stuff in org.xwt.plat.* this platform requires (its superclasses) +superclass_org.xwt.plat.Platform:; echo org.xwt.plat.OpenGL +superclass_%: + @echo $* + @make -s superclass_org.xwt.plat.$(shell grep extends src/`echo $* | sed s_\\\\._/_g`.java | head -n 1 | sed s_.\*extends\ __ | sed s_\ .\*__) -java_sources := $(patsubst src/%.java, build/java/%.java, $(shell find src -name \*.java)) -java_sources += $(patsubst src/%.java.pp, build/java/%.java, $(shell find src -name \*.java.pp)) -java_sources += build/java/org/xwt/Builtin.java +all_java_sources := $(patsubst src/%.java, build/java/%.java, $(shell find src -name '*.java')) +java_sources := $(filter-out build/java/org/xwt/plat/%, $(all_java_sources)) +java_sources += $(patsubst src/%.java.pp, build/java/%.java, $(shell find src -name \*.java.pp)) +plat_deps := $(shell test x$(platform) == x"" || make -s superclass_org.xwt.plat.$(platform) platform= ) +java_sources += $(patsubst org.xwt.plat.%, build/java/org/xwt/plat/%.java, $(plat_deps)) build/java/%.java: src/%.java ; @echo linking $@; mkdir -p $(@D); ln -s `echo $(@D) | sed 's_[^/]*\(/\|$$\)_../_g'`/$< $@ build/cc/%.cc: src/%.c ; @echo linking $@; mkdir -p $(@D); ln -s `echo $(@D) | sed 's_[^/]*\(/\|$$\)_../_g'`/$< $@ @@ -57,14 +69,14 @@ build/class/%.class: build/java/%.java .jikes @./.jikes $< compile: .compile -.compile: $(java_sources:build/java/%.c=build/class/%.class) +.compile: $(java_sources) $(patsubst src/%, build/java/%, $(shell ls src/org/xwt/plat/*.java)) @echo -e "\n\033[1mcompiling .java -> .class: src/**/*.java\033[0m" mkdir -p build/class - @./.jikes $(java_sources) + @./.jikes $^ touch .compile # PHASE 4: gcj-generated headers -java_headers := $(java_sources:build/java/%.java=build/h/%.h) +java_headers := $(all_java_sources:build/java/%.java=build/h/%.h) build/h/%.h: build/class/%.class .compile @echo -e "\n\033[1mextracting .class -> .h: $<\033[0m" mkdir -p `dirname $@` @@ -93,37 +105,35 @@ build/$(platform)/jpeg-6b/%.c.o: upstream/jpeg-6b/src/%.c $(gcc) -Ibuild/h -c $< -o $@ # PHASE 5: linking -build/$(target)/$(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 build/$(target)/$(target_bin).ar - upstream/install/$(target)/bin/ar -cq build/$(target)/$(target_bin).ar $^ - upstream/install/$(target)/bin/ranlib build/$(target)/$(target_bin).ar +jpeg_sources := jdapimin.c jdapistd.c jcomapi.c jcparam.c jdmaster.c jdinput.c jdmainct.c jdcoefct.c jdpostct.c jdmarker.c +jpeg_sources += jdhuff.c jdphuff.c jddctmgr.c jidctint.c jidctfst.c jidctflt.c jidctred.c jdsample.c jdcolor.c jdmerge.c +jpeg_sources += jquant1.c jquant2.c jerror.c jutils.c jmemnobs.c jmemmgr.c -$(target_bin): build/$(target)/$(target_bin).ar +upstream/jpeg-6b/build-$(target)/libjpeg.a: .install_jpeg-6b_$(target) +$(target_bin): upstream/jpeg-6b/build-$(target)/libjpeg.a $(java_sources:build/java/%.java=build/$(platform)/%.java.o) build/$(platform)/org/xwt/plat/$(platform).cc.o @echo -e "\n\033[1mlinking .o -> $(target_bin)\033[0m" mkdir -p build/$(platform) - PATH=upstream/install/bin:$$PATH $(gcj) --main=org.xwt.Main -o build/$(platform)/$(target_bin) build/$(target)/$(target_bin).ar -Lupstream/install/$(target)/lib $(link_flags) + PATH=upstream/install/bin:$$PATH $(gcj) -v --main=org.xwt.Main -o build/$(platform)/$(target_bin) $^ $(jpeg_sources:%.c=upstream/jpeg-6b/build-$(target)/%.o) -Lupstream/install/$(target)/lib $(link_flags) ############################################################################## # Special treatment: # -build/java/org/xwt/Builtin.java: $(shell ls src/org/xwt/builtin/*.png src/org/xwt/builtin/*.xwt src/org/xwt/builtin/*.xwf) - @mkdir -p `dirname $@` build build/java build/class build/h build - echo -e "\n\033[1mzipping/uuencoding .xwt -> .java: build/java/org/xwt/Builtin.java\033[0m" - echo "package org.xwt;" > build/java/org/xwt/Builtin.java - echo "class Builtin {" >> build/java/org/xwt/Builtin.java - echo "public static String encoded = " >> build/java/org/xwt/Builtin.java - cd src; $(jar) cf - $(<:src/%=%) | \ - uuencode foo | tail -n +2 | grep -v '^end$$' | grep -v '^`$$' | \ - sed 's_\(.+\)_"\1" +_' >> ../build/java/org/xwt/Builtin.java - echo "\"\"; }" >> build/java/org/xwt/Builtin.java +#build/java/org/xwt/Builtin.java: $(shell ls src/org/xwt/builtin/*.png src/org/xwt/builtin/*.xwt src/org/xwt/builtin/*.xwf) +# @mkdir -p `dirname $@` build build/java build/class build/h build +# echo -e "\n\033[1mzipping/uuencoding .xwt -> .java: build/java/org/xwt/Builtin.java\033[0m" +# echo "package org.xwt;" > build/java/org/xwt/Builtin.java +# echo "class Builtin {" >> build/java/org/xwt/Builtin.java +# echo "public static String encoded = " >> build/java/org/xwt/Builtin.java +# cd src; $(jar) cf ../.builtin.xwar $(^:src/%=%) +# mimencode .builtin.xwar | sed s_.\*_\"\\0\"\ +_ >> build/java/org/xwt/Builtin.java +# echo "\"\"; }" >> build/java/org/xwt/Builtin.java # 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: .vendor .install_gcc-3.3_$(target) .compile $(target_bin) +gcj: .compile .vendor .install_gcc-3.3_$(target) $(target_bin) build/JVM/xwt.jar: .compile @echo -e "\n\033[1marchiving .class -> .jar: build/JVM/xwt.jar\033[0m" mkdir -p build/JVM @@ -158,11 +168,11 @@ build/mips/freetype.mips: build/mips/org/xwt/imp/Freetype.c.o build/mips/org/xwt --strip \ -lfreetype -build/java/org/xwt/imp/Freetype.java: build/mips/freetype.mips build/class/org/xwt/imp/MIPS.class - @echo -e "\n\033[1mtranslating .mips -> .java: $@\033[0m" - mkdir -p build/java/org/xwt/imp/ - rm -f $@ - java -cp build/class org.xwt.imp.MIPS org.xwt.imp.Freetype build/mips/freetype.mips > build/java/org/xwt/imp/Freetype.java +#build/java/org/xwt/imp/Freetype.java: build/mips/freetype.mips build/class/org/xwt/imp/MIPS.class +# @echo -e "\n\033[1mtranslating .mips -> .java: $@\033[0m" +# mkdir -p build/java/org/xwt/imp/ +# rm -f $@ +# java -cp build/class org.xwt.imp.MIPS org.xwt.imp.Freetype build/mips/freetype.mips > build/java/org/xwt/imp/Freetype.java