From: thhal at mailblocks.com (Thomas Hallgren) Date: Mon, 17 May 2004 09:52:39 +0200 Subject: [Pljava-dev] Problems compiling under Mac OS X References: <06f301c439a2$74ee5c80$eb4917ac@cor> <000d01c43be3$ee755b60$fa4817ac@ad.eoncompany.com> Message-ID: Just an additional question before I add your makefile changes. I'm not well acquainted with Mac OS X so perhaps this is a bad idea. You use the absolute path "/System/Library/Frameworks" to find the JavaVM framework. Is it mandatory that this framework is installed at this path? The Apple version of GCC will also search "/Library/Frameworks" and "/Local/Library/Frameworks" per default. Perhaps it would be a good idea to introduce an overridable variable and use the your suggested path as the default? Something like this: ifeq ($(PORTNAME), darwin) JAVAVM_FWX_ROOT := /System/Library/Frameworks override CPPFLAGS := -I$(JAVAVM_FWX_ROOT)/JavaVM.framework/Headers $(CPPFLAGS) else Anyone that has JavaVM installed in some root other than /System/Library/Frameworx can now write: make JAVAVM_FWX_ROOT=/Local/Library/Frameworx Kind regards, Thomas Hallgren ----- Original Message ----- From: "p3consulting" To: Cc: "Thomas Hallgren" Sent: Friday, May 14, 2004 17:02 Subject: Re: [Pljava-dev] Problems compiling under Mac OS X Le mai 14, 2004, ? 12:58, Thomas Hallgren a ?crit : > Hi Pascal, > The makefile is easy enough to change. I don't have access to a Mac OS > X > based machine though, so it's hard for me to test that the change is > correct. I'd very much like your help. Some suggestions and answers to > your > questions: > > Instead of adding #ifdef DARWIN to the source code in order to find the > jni.h, I'd suggest that you instead add a -I flag to the CPPFLAGS. I'm > a big > fan of controlling the environment through the makefile instead of > using > #ifdef whenever possible. > whenever possible... I agree I do have given a try to -I/System/Library/Frameworks/JavaVM.framework/Headers/ and it works... a the condtion to change the linking instructions (see below). > Regarding 'ant'. There are two possibilities. Either the 'depend' task > is > defined in the optional.jar (included in the ant distrib) and you > don't have > that in your classpath, or you ant version is too old. In any case, I'd > recommend that you uppgrade ant. 1.5.1 whas a while ago... > Bingo ! the optional.jar was missing ! Now using the ant shipping with JBuilderX (1.5.4) so the C/pljava/Makefile is now #----------------------------------------------------------------------- -- # # Makefile-- # Makefile for pljava # #----------------------------------------------------------------------- -- NAME := pljava include $(MODULEROOT)/Makefile.global ifeq ($(PORTNAME), win32) DLL_BUILD := 1 else ifeq ($(PORTNAME), cygwin) DLL_BUILD := 1 override CPPFLAGS := -DCYGWIN $(CPPFLAGS) else ifeq ($(PORTNAME), darwin) override CPPFLAGS := -I/System/Library/Frameworks/JavaVM.framework/Headers/ $(CPPFLAGS) else JRE_INCL := $(PORTNAME) ifeq ($(host_cpu), i686) JRE_LIB := lib/i386/client else JRE_LIB := lib/$(host_cpu)/client endif endif endif endif ifdef DLL_BUILD JRE_INCL := win32 JRE_LIB := bin/client # This works but is not very nice since it affects all # DLLTOOL invocations in Makefile.shlib. A custom flag # is requested from postgres. # override DLLTOOL := $(DLLTOOL) --add-stdcall-alias endif ifdef USE_GCJ override CPPFLAGS := -DGCJ $(CPPFLAGS) SHLIB_LINK = $(BE_DLLLIBS) -lgcj -lwsock32 else ifeq ($(PORTNAME), darwin) SHLIB_LINK = $(BE_DLLLIBS) -L. -framework JavaVM else override CPPFLAGS := -I$(JDK_HOME)/include -I$(JDK_HOME)/include/$(JRE_INCL) $(CPPFLAGS) SHLIB_LINK = $(BE_DLLLIBS) -L. -L$(JDK_HOME)/jre/$(JRE_LIB) -ljvm endif endif ... no changes after that The change #ifdef DARWIN #include #else #include #endif shoudl not be necessary anymore. Now everything compiles, regarding the tests : do you have any more precise instructions to follow than what is in the README ? Pascal Pochet p3consulting at mac.com ---------------------------------- PGP KeyID: 0x208C5DBF Fingerprint: 9BFB 245C 5BFE 7F1D 64B7 C473 ABB3 4E83 208C 5DBF