From: adam Date: Mon, 4 Sep 2006 01:06:51 +0000 (-0400) Subject: modularize the IntelMac hack, should now work on all Macs with ghc6.5 X-Git-Tag: tag_for_25-Mar~78 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=d2fc6f76cce121e8f6c35af5c733c4269829f82c modularize the IntelMac hack, should now work on all Macs with ghc6.5 darcs-hash:20060904010651-5007d-be984166d89cf7d8b8414dd43cc448083c3b0140.gz --- diff --git a/Makefile b/Makefile index 205b410..10b833b 100644 --- a/Makefile +++ b/Makefile @@ -139,23 +139,35 @@ upload: ## make runHaskellDemo JAVA_HOME= ## +ghc_version = $(shell ghc --version | sed 's_.*version \([0-9]*\.[0-9]*\).*_\1_') + +ifeq ($(ghc_version),6.5) +patchghc = patch -p0 < $(shell pwd)/misc/ghc-6.5-patch && +else +patchghc = +endif + ifeq ($(shell uname),Darwin) with_jvmdir = --with-jvmdir=/System/Library/Frameworks/JavaVM.framework/ jvmlink = -framework JavaVM -optl -fexceptions +patchmac = patch -p0 < $(shell pwd)/misc/intel-mac-patch && +linkopts = else with_jvmdir = --with-jvmdir=$(JAVA_HOME) jvmlink = -ljava -ljvm -lverify +patchmac = +linkopts = -optl "-Wl,-rpath,$(JAVA_HOME)/jre/lib/i386/" -optl "-Wl,-rpath,$(JAVA_HOME)/jre/lib/i386/client/" endif prefix = $(shell pwd)/prefix jvm-bridge-site = umn.dl.sourceforge.net jvm-bridge-url = http://$(jvm-bridge-site)/sourceforge/jvm-bridge/haskell-jvm-bridge-0.3.tar.gz link = -L$(prefix)/lib/ \ - -L$(JAVA_HOME)/jre/lib/i386/ \ - -L$(JAVA_HOME)/jre/lib/i386/client/ \ - -lstdc++ -lJVMBridge -lJVMInvocation -lHaskellJVMBridge $(jvmlink) -packages = -package haskell98 -package base -package rts -package rts -ghc = ghc -fglasgow-exts $(packages) $(link) -i$(prefix)/imports/ + -L$(JAVA_HOME)/jre/lib/i386/ \ + -L$(JAVA_HOME)/jre/lib/i386/client/ \ + -lstdc++ -lHaskellJVMBridge -lJVMBridge -lJVMInvocation $(jvmlink) +packages = -package haskell98 -package base -package rts +ghc = ghc -fglasgow-exts $(packages) -i$(prefix)/imports/ bin = $(prefix)/bin/ .jvm-bridge: @@ -165,8 +177,9 @@ bin = $(prefix)/bin/ curl $(jvm-bridge-url) | tar -xvzf - cd $(prefix)/src/haskell-jvm-bridge-*; \ - patch -p0 < $(shell pwd)/misc/jvm-bridge.patch && \ - patch -p0 < $(shell pwd)/misc/jvm-bridge.intelmac2.patch && \ + patch -p0 < $(shell pwd)/misc/broken-cygwin-detection-patch && \ + $(patchmac) \ + $(patchghc) \ (cd Native; autoreconf; true) && \ (cd Haskell; autoreconf; true) @@ -185,19 +198,19 @@ bin = $(prefix)/bin/ runHaskellDemo: .jvm-bridge mkdir -p bin make bin/HaskellDemo - LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/usr/lib/:$(JAVA_HOME)/jre/lib/i386/:$(JAVA_HOME)/jre/lib/i386/client bin/HaskellDemo + bin/HaskellDemo bin/Header_%.o: edu.berkeley.sbp.jar .jvm-bridge cd bin; $(bin)/MakeHeaderModule -module Header_$* -jar ../edu.berkeley.sbp.jar - cd bin; $(ghc) -c Header_$*.hs + cd bin; $(ghc) -c Header_$*.hs $(link) bin/Class_%.o: bin/Header_%.o cd bin; $(bin)/MakeClassModule -import Header_Java -import Header_$* -cp ../edu.berkeley.sbp.jar `echo $* | sed s/_/./g` - cd bin; $(ghc) -c Class_$*.hs + cd bin; $(ghc) -c Class_$*.hs $(link) bin/JVM_%.o: bin/Class_%.o cd bin; echo -e $($*_list) | $(bin)/MakeJVMModule JVM_$* - cd bin; $(ghc) -c JVM_$*.hs + cd bin; $(ghc) -c JVM_$*.hs $(link) edu_berkeley_sbp_misc_HaskellHelper_list = "edu.berkeley.sbp.misc.HaskellHelper\njava.lang.String\nedu.berkeley.sbp.Tree\njava.lang.Object" @@ -206,6 +219,6 @@ bin/HaskellDemo: src/HaskellDemo.hs \ bin/Class_java_lang_String.o \ bin/Class_edu_berkeley_sbp_Tree.o \ bin/JVM_edu_berkeley_sbp_misc_HaskellHelper.o - cd bin; $(ghc) -c ../src/HaskellDemo.hs -o HaskellDemo.o - cd bin; for A in *.hs; do $(ghc) -c $$A; done - cd bin; $(ghc) -o HaskellDemo *.o + cd bin; $(ghc) -c ../src/HaskellDemo.hs $(link) -o HaskellDemo.o + cd bin; for A in *.hs; do $(ghc) -c $$A $(link); done + cd bin; $(ghc) $(linkopts) $(link) -o HaskellDemo *.o diff --git a/misc/jvm-bridge.patch b/misc/broken-cygwin-detection-patch similarity index 100% rename from misc/jvm-bridge.patch rename to misc/broken-cygwin-detection-patch diff --git a/misc/jvm-bridge.intelmac2.patch b/misc/ghc-6.5-patch similarity index 79% rename from misc/jvm-bridge.intelmac2.patch rename to misc/ghc-6.5-patch index 86f5fa9..c1b7007 100644 --- a/misc/jvm-bridge.intelmac2.patch +++ b/misc/ghc-6.5-patch @@ -10,15 +10,6 @@ HCIMPORTDIRS = -i. HCCOPTS = -I$(includedir_FIX) $${JVM_INCLUDES} HCHOPTS = -fglasgow-exts -fallow-undecidable-instances -package-name $(GHCPACKAGENAME) -@@ -15,7 +14,7 @@ - - CFLAGS = -I$(includedir_FIX) -I$(HC_INCDIR) - -+BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation -framework JavaVM -optl -fexceptions -lstdc++ -optl '-fexceptions' --BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation `echo "$${JVM_LDFLAGS}" | sed -e 's/ */ -optl/g;s/^/-optl/'` -lstdc++ - BOOTLDFLAGS += `(test -f $(libdir_FIX)/libjvm_imp.a && echo " -L$(libdir_FIX) -ljvm_imp ") || echo ""` - - BOOT_SRCS = \ diff -u ./MonadException.hs ../../haskell-jvm-bridge-0.3.RC1/Haskell/MonadException.hs --- Haskell/MonadException.hs 2006-09-02 23:42:19.000000000 -0700 +++ Haskell/MonadException.hs 2002-01-28 18:21:35.000000000 -0800 @@ -57,3 +48,4 @@ diff -u ./TypedLayer.hs ../../haskell-jvm-bridge-0.3.RC1/Haskell/TypedLayer.hs runJavaClass :: (IsJVMMonad m) => ClassName -> [JString] -> m (); runJavaClass className args = do + diff --git a/misc/intel-mac-patch b/misc/intel-mac-patch new file mode 100644 index 0000000..8288588 --- /dev/null +++ b/misc/intel-mac-patch @@ -0,0 +1,11 @@ +--- Haskell/Makefile.am 2006-09-02 23:50:38.000000000 -0700 ++++ Haskell/Makefile.am 2003-11-03 12:49:54.000000000 -0800 +@@ -15,7 +14,7 @@ + + CFLAGS = -I$(includedir_FIX) -I$(HC_INCDIR) + ++BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation -framework JavaVM -optl -fexceptions -lstdc++ -optl '-fexceptions' +-BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation `echo "$${JVM_LDFLAGS}" | sed -e 's/ */ -optl/g;s/^/-optl/'` -lstdc++ + BOOTLDFLAGS += `(test -f $(libdir_FIX)/libjvm_imp.a && echo " -L$(libdir_FIX) -ljvm_imp ") || echo ""` + + BOOT_SRCS = \ diff --git a/misc/jvm-bridge.intelmac1.patch b/misc/jvm-bridge.intelmac1.patch deleted file mode 100644 index 43e29db..0000000 --- a/misc/jvm-bridge.intelmac1.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- Haskell/Makefile.am 2003-11-03 12:49:54.000000000 -0800 -+++ Haskell/Makefile.am 2006-09-02 23:50:38.000000000 -0700 -@@ -3,7 +3,8 @@ - - JVMFILE = $(datadir)/current.jvm - --HCPACKAGES = -package lang -package concurrent -+#HCPACKAGES = -package lang -package concurrent -+HCPACKAGES = -package rts - HCIMPORTDIRS = -i. - HCCOPTS = -I$(includedir_FIX) $${JVM_INCLUDES} - HCHOPTS = -fglasgow-exts -fallow-undecidable-instances -package-name $(GHCPACKAGENAME) -@@ -14,7 +15,7 @@ - - CFLAGS = -I$(includedir_FIX) -I$(HC_INCDIR) - --BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation `echo "$${JVM_LDFLAGS}" | sed -e 's/ */ -optl/g;s/^/-optl/'` -lstdc++ -+BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation `echo "$${JVM_LDFLAGS}" | sed -e 's/ */ -optl/g;s/^/-optl/'` -lstdc++ -optl '-fexceptions' - BOOTLDFLAGS += `(test -f $(libdir_FIX)/libjvm_imp.a && echo " -L$(libdir_FIX) -ljvm_imp ") || echo ""` - - BOOT_SRCS = \ diff --git a/misc/jvm-bridge.intelmac2.patch+ b/misc/jvm-bridge.intelmac2.patch+ deleted file mode 100644 index 86f5fa9..0000000 --- a/misc/jvm-bridge.intelmac2.patch+ +++ /dev/null @@ -1,59 +0,0 @@ ---- Haskell/Makefile.am 2006-09-02 23:50:38.000000000 -0700 -+++ Haskell/Makefile.am 2003-11-03 12:49:54.000000000 -0800 -@@ -3,7 +3,8 @@ - - JVMFILE = $(datadir)/current.jvm - -+#HCPACKAGES = -package lang -package concurrent -+HCPACKAGES = -package rts --HCPACKAGES = -package lang -package concurrent - HCIMPORTDIRS = -i. - HCCOPTS = -I$(includedir_FIX) $${JVM_INCLUDES} - HCHOPTS = -fglasgow-exts -fallow-undecidable-instances -package-name $(GHCPACKAGENAME) -@@ -15,7 +14,7 @@ - - CFLAGS = -I$(includedir_FIX) -I$(HC_INCDIR) - -+BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation -framework JavaVM -optl -fexceptions -lstdc++ -optl '-fexceptions' --BOOTLDFLAGS = -L$(libdir_FIX)/ -lJVMBridge -lJVMInvocation `echo "$${JVM_LDFLAGS}" | sed -e 's/ */ -optl/g;s/^/-optl/'` -lstdc++ - BOOTLDFLAGS += `(test -f $(libdir_FIX)/libjvm_imp.a && echo " -L$(libdir_FIX) -ljvm_imp ") || echo ""` - - BOOT_SRCS = \ -diff -u ./MonadException.hs ../../haskell-jvm-bridge-0.3.RC1/Haskell/MonadException.hs ---- Haskell/MonadException.hs 2006-09-02 23:42:19.000000000 -0700 -+++ Haskell/MonadException.hs 2002-01-28 18:21:35.000000000 -0800 -@@ -20,7 +20,7 @@ - - module MonadException where - { -+ import Control.Exception as Exception; -- import Exception; - - -- much like MonadError, but without the fundep - class (Monad m) => MonadException ex m where -diff -u ./TypedCallback.hs ../../haskell-jvm-bridge-0.3.RC1/Haskell/TypedCallback.hs ---- Haskell/TypedCallback.hs 2006-09-02 23:43:13.000000000 -0700 -+++ Haskell/TypedCallback.hs 2002-08-05 17:27:04.000000000 -0700 -@@ -33,8 +33,8 @@ - import VMLayer; - import JavaLayer; - import BasicLayer; -+ import Control.Concurrent as Concurrent; -+ import Control.Exception as Exception; -- import Concurrent; -- import Exception; - - {-- - data CallbackClass t = MkCallbackClass JClass; -diff -u ./TypedLayer.hs ../../haskell-jvm-bridge-0.3.RC1/Haskell/TypedLayer.hs ---- Haskell/TypedLayer.hs 2006-09-02 23:44:06.000000000 -0700 -+++ Haskell/TypedLayer.hs 2002-01-28 18:21:35.000000000 -0800 -@@ -60,7 +60,7 @@ - import VMLayer; - import JavaLayer; - import BasicLayer; -+ import Control.Monad.Error; -- import MonadError; - - runJavaClass :: (IsJVMMonad m) => ClassName -> [JString] -> m (); - runJavaClass className args = do diff --git a/misc/jvm-bridge.intelmac3 b/misc/jvm-bridge.intelmac3 deleted file mode 100644 index 52e04ba..0000000 --- a/misc/jvm-bridge.intelmac3 +++ /dev/null @@ -1,11 +0,0 @@ ---- Haskell/javavm.ghc-pkg.m4 2003-07-22 05:52:53.000000000 -0700 -+++ Haskell/javavm.ghc-pkg.m4 2006-09-03 00:40:39.000000000 -0700 -@@ -31,7 +31,7 @@ - extra_libraries = ["stdc++","JVMBridge","JVMInvocation","HaskellJVMBridge"`'patsubst(patsubst(patsubst(JVM_LDFLAGS,`-framework[ ]+[^ ]+',`'),`-L[^ ]+',`'),`[ ]*-l\([^ ]+\)[ ]*',`,"\1"')], - include_dirs = [], - c_includes = [], -- package_deps = ["lang","concurrent","haskell98"], -+ package_deps = ["rts","haskell98"], - extra_ghc_opts = ["-fglasgow-exts","-fallow-undecidable-instances"], - extra_cc_opts = [], - extra_frameworks = [patsubst(patsubst(patsubst(patsubst(JVM_LDFLAGS,`-L[^ ]+[ ]*',`'),`-l[^ ]+[ ]*',`'),`-framework[ ]+\([^ ]+\)',``,"\1"''),`^,',`')],