c_objects := $(c_sources:src/%.c=bin-$(platform)/%.c.o)
# tools
-gcc_path := $(shell pwd)/gcc
+gcc_path := $(shell pwd)/gcc/install
#gcc_optimizations := -O9 -ffast-math -fomit-frame-pointer -foptimize-sibling-calls -finline-functions
#gcc_optimzations += -funroll-loops -ffunction-sections -fdata-sections
gcc_optimizations := -O0
compile: $(java_classes) bin/org/xwt/builtin.xwar
# platforms
-all: Win32 Linux Java2 Darwin
+all: Win32 Linux Java2 Darwin Carbon
.javac:
if \
## GCJ-Derived Platforms #######################################################################
# if the user doesn't change gcc_path, and it's not built, then we'll try to build it
-$(shell pwd)/gcc/bin/$(target)-gcj:
+$(shell pwd)/gcc/install/bin/$(target)-gcj:
make -C gcc
# java_classes is here to force compilation of the .class files (they get used via -Ibin/) without
bin-$(platform)/org/xwt/builtin.o: bin/org/xwt/builtin.xwar
@echo "wrapping .xwar -> .o: bin/org/xwt/builtin.o"
@(echo "unsigned int builtin_xwar_length = ";\
- (du -b bin/org/xwt/builtin.xwar | sed "s_bin.*__");\
+ (wc -c bin/org/xwt/builtin.xwar | sed "s_bin.*__");\
echo \;;\
echo "unsigned char builtin_xwar[] = {";\
hexdump -ve '"0x" 1/1 "%x,\n"' bin/org/xwt/builtin.xwar;\
cd src/org/ijg; patch -p0 < jmorecfg.h.patch
rm -rf src/org/ijg/jpeg-6b
-$(cc_objects): bin-$(platform)/%.cc.o: src/%.cc $(java_headers)
+$(cc_objects): bin-$(platform)/%.cc.o: src/%.cc $(java_headers) src/org/ijg/jmorecfg.h
@echo "compiling .cc -> .o: $<"
@mkdir -p `dirname $@`
- $(g++) -I/usr/X11R6/include/ -I$(gcc_path)/include -Ibin -c $< -o $@
+ $(g++) -I/usr/X11R6/include/ -I$(gcc_path)/include -Ibin -Iupstream/$(platform)/include -Wno-multichar -c $< -o $@
$(c_objects): bin-$(platform)/%.c.o: src/%.c src/org/ijg/jmorecfg.h
@echo "compiling .c -> .o: $<"
$(gcc) -Ibin -c $< -o $@
upstream:
- cvs -d :pserver:cvs@cvs.xwt.org:/cvs co upstream
+ cvs -d :pserver:cvs@cvs.xwt.org:/ export -r HEAD upstream
+
+upstream/Carbon/include/Carbon:
+ # A disgusting hack to create symlinks to the OS X Framework headers, since the
+ # standard GCC doesn't know how to search Frameworks for header files.
+ outdir="upstream/Carbon/include"; \
+ librarydir="/System/Library"; \
+ frameworksubdir="Frameworks"; \
+ cd $$outdir; \
+ function CreateHeaderDirectories() \
+ { \
+ for framework in `ls -d $$1/*.framework`; do \
+ name=`echo $$framework | sed 's/.*\/\([^/]*\)\.framework/\1/'`; \
+ if [[ $$name != "" && ! -e $$name && -e $$framework/Headers ]]; then \
+ ln -s $$framework/Headers $$name; \
+ if [[ -e $$framework/$$frameworksubdir ]]; then \
+ CreateHeaderDirectories $$framework/$$frameworksubdir; \
+ fi; \
+ fi; \
+ done; \
+ }; \
+ CreateHeaderDirectories $$librarydir/$$frameworksubdir;
## Platforms ##############################################################################
Darwin: upstream
echo -e "\\n=== Darwin ========================================="
- ranlib upstream/darwin/*.a
- ar x /usr/lib/libcc_dynamic.a upstream/darwin/darwin-fpsave.o
+ ranlib upstream/Darwin/lib/*.a
+ ar x /usr/lib/libcc_dynamic.a upstream/Darwin/lib/darwin-fpsave.o
make gcj \
platform=Darwin \
target=powerpc-apple-darwin \
target_bin=xwt.darwin \
- platform_link="upstream/darwin/*.[oa] $(gcc_path)/lib/libgcj.a" \
+ platform_link="upstream/Darwin/lib/*.[oa] $(gcc_path)/lib/libgcj.a" \
platform_java_sources="POSIX X11"
+Carbon: upstream/Carbon/include/Carbon upstream
+ echo -e "\\n=== Carbon ========================================="
+ make gcj \
+ platform=Carbon \
+ target=powerpc-apple-darwin \
+ target_bin=xwt.carbon \
+ platform_link="$(gcc_path)/lib/libgcj.a -Xlinker -framework -Xlinker Carbon" \
+ platform_java_sources="POSIX Carbon"
+
Java2: $(java_classes) bin/org/xwt/builtin.xwar
echo -e "\\n=== Java2 ========================================="
echo "archiving .class -> .jar"