From: <gof...@us...> - 2007-11-14 08:55:14
|
Revision: 4215 http://octave.svn.sourceforge.net/octave/?rev=4215&view=rev Author: goffioul Date: 2007-11-14 00:55:18 -0800 (Wed, 14 Nov 2007) Log Message: ----------- re-enable compilation under Mac OSX (without dynamic loading at run-time, this does not seem to work) Modified Paths: -------------- trunk/octave-forge/extra/java/src/Makefile trunk/octave-forge/extra/java/src/__java__.cc trunk/octave-forge/extra/java/src/configure.base Modified: trunk/octave-forge/extra/java/src/Makefile =================================================================== --- trunk/octave-forge/extra/java/src/Makefile 2007-11-14 08:30:38 UTC (rev 4214) +++ trunk/octave-forge/extra/java/src/Makefile 2007-11-14 08:55:18 UTC (rev 4215) @@ -40,3 +40,6 @@ clean: -rm *.o core octave-core *.oct *~ -rm octave.jar $(JAVA_CLASSES) FILES + +distclean realclean : clean + -rm -r configure config.status config.log autom4te.cache Makeconf Modified: trunk/octave-forge/extra/java/src/__java__.cc =================================================================== --- trunk/octave-forge/extra/java/src/__java__.cc 2007-11-14 08:30:38 UTC (rev 4214) +++ trunk/octave-forge/extra/java/src/__java__.cc 2007-11-14 08:55:18 UTC (rev 4215) @@ -352,14 +352,17 @@ if (jvm_lib_path.empty()) throw std::string ("unable to find Java Runtime Environment"); } - + #else std::string jvm_lib_path = JAVA_HOME+std::string("/jre/lib/")+JAVA_ARCH+"/client/libjvm.so"; #endif - + jsize nVMs = 0; + +# if !defined (__APPLE__) && !defined (__MACH__) + octave_shlib lib (jvm_lib_path); if (!lib) throw std::string("unable to load Java Runtime Environment from ")+jvm_lib_path; @@ -372,6 +375,17 @@ throw std::string("unable to find JNI_GetCreatedJavaVMs in ")+jvm_lib_path; if (get_vm(&jvm, 1, &nVMs) == 0 && nVMs > 0) + +#else + + // FIXME: There exists a problem on the Mac platform that + // octave_shlib lib (jvm_lib_path) + // doesn't work with 'not-bundled' *.oct files. + + if (JNI_GetCreatedJavaVMs(&jvm, 1, &nVMs) == 0 && nVMs > 0) + +#endif + { // At least one JVM exists, try to attach to it @@ -409,12 +423,24 @@ vm_args.add ("-Djava.system.class.loader=org.octave.OctClassLoader"); vm_args.read_java_opts (initial_java_dir (false) + file_ops::dir_sep_str + "java.opts"); +# if !defined (__APPLE__) && !defined (__MACH__) + if (create_vm (&jvm, ¤t_env, vm_args.to_args ()) != JNI_OK) throw std::string("unable to start Java VM in ")+jvm_lib_path; //printf("JVM created\n"); } jvm_lib = lib; + +#else + + if (JNI_CreateJavaVM (&jvm, reinterpret_cast<void **>(¤t_env), + vm_args.to_args ()) != JNI_OK) + throw std::string("unable to start Java VM in ")+jvm_lib_path; + + } + +#endif } static void terminate_jvm(void) Modified: trunk/octave-forge/extra/java/src/configure.base =================================================================== --- trunk/octave-forge/extra/java/src/configure.base 2007-11-14 08:30:38 UTC (rev 4214) +++ trunk/octave-forge/extra/java/src/configure.base 2007-11-14 08:55:18 UTC (rev 4215) @@ -315,57 +315,61 @@ AC_CHECK_PROG(JAR, jar, jar) HAVE_JAVA="Java Development Kit not found" if test -n "$JAVAC" -a -n "$JAR"; then - if test -d "/Library/Java/Home"; then - # This is the location of Java on an OS X box. Assume - # the Java version is new enough. - HAVE_JAVA=yes - # According to: - # http://developer.apple.com/unix/crossplatform.html - # you need the following to get the latest java on OS X - JAVA_INCS="-I/Library/Java/Home/include" - # Sneak the -framework flag into mkoctfile via LFLAGS - #JAVA_LIBS="-framework JavaVM" - LFLAGS="$LFLAGS -framework JavaVM" - else - AC_MSG_CHECKING([for Java version]) - java_version=[`$JAVA -version 2>&1 | sed -n -e 's/^java version[^0-9"]*"\([^"]*\)"/\1/p'`] - AC_MSG_RESULT($java_version) - java_major=[`echo -n $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\1/'`] - java_minor=[`echo -n $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\2/'`] - if test $java_major -ge 1 -a $java_minor -ge 5; then - case "$canonical_host_type" in - *-cygwin* | *-mingw* | *-msdosmsvc*) - HAVE_JAVA=yes - JAVA_LIBS=-ladvapi32 + AC_MSG_CHECKING([for Java version]) + java_version=[`$JAVA -version 2>&1 | sed -n -e 's/^java version[^0-9"]*"\([^"]*\)"/\1/p'`] + AC_MSG_RESULT($java_version) + java_major=[`echo -n $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\1/'`] + java_minor=[`echo -n $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\2/'`] + if test $java_major -ge 1 -a $java_minor -ge 5; then + case "$canonical_host_type" in + *-cygwin* | *-mingw* | *-msdosmsvc*) + HAVE_JAVA=yes + JAVA_LIBS=-ladvapi32 ;; - *) - if test -z "$JAVA_HOME"; then - JAVA_HOME=/usr/lib/jvm - fi - JAVA_HOME=[`echo -n $JAVA_HOME | sed -e 's|/$||'`] - if test -d "${JAVA_HOME}/jre/lib/i386"; then - JAVA_ARCH="i386"; - elif test -d "${JAVA_HOME}/jre/lib/amd64"; then - JAVA_ARCH="amd64" - elif test -d "${JAVA_HOME}/jre/lib/mac"; then - JAVA_ARCH="mac" - elif test -d "${JAVA_HOME}/jre/lib/maci"; then - JAVA_ARCH="maci" - elif test -d "${JAVA_HOME}/jre/lib/solaris"; then - JAVA_ARCH="solaris" - elif test -d "${JAVA_HOME}/jre/lib/solarisv9"; then - JAVA_ARCH="solarisv9" - fi - if test -n "$JAVA_ARCH"; then - HAVE_JAVA=yes - JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" - fi - ;; - esac - else - AC_MSG_WARN([this package requires at least Java-1.5]) - fi - fi + *) + if test -z "$JAVA_HOME"; then + # This is the location of Java on an OS X box. In this + # directory we can find the various versions of a + # JavaVMs. Check for the newest version set the JAVA_HOME + # variable. + if test -d "/System/Library/Frameworks/JavaVM.framework"; then + # Sneak the -framework flag into mkoctfile via LFLAGS + LFLAGS="$LFLAGS -framework JavaVM" + JAVA_TEMP="/System/Library/Frameworks/JavaVM.framework" + JAVA_HOME="${JAVA_TEMP}/Home" + JAVA_ARCH="${JAVA_TEMP}/Libraries/libjvm_compat.dylib" + # According to: + # http://developer.apple.com/unix/crossplatform.html + # you need to explicitely set the include path + JAVA_INCS="-I${JAVA_HOME}/include" + HAVE_JAVA=yes + fi + else + JAVA_HOME=/usr/lib/jvm + fi + JAVA_HOME=[`echo -n $JAVA_HOME | sed -e 's|/$||'`] + if test -d "${JAVA_HOME}/jre/lib/i386"; then + JAVA_ARCH="i386"; + elif test -d "${JAVA_HOME}/jre/lib/amd64"; then + JAVA_ARCH="amd64" + elif test -d "${JAVA_HOME}/jre/lib/mac"; then + JAVA_ARCH="mac" + elif test -d "${JAVA_HOME}/jre/lib/maci"; then + JAVA_ARCH="maci" + elif test -d "${JAVA_HOME}/jre/lib/solaris"; then + JAVA_ARCH="solaris" + elif test -d "${JAVA_HOME}/jre/lib/solarisv9"; then + JAVA_ARCH="solarisv9" + fi + if test -n "$JAVA_ARCH"; then + HAVE_JAVA=yes + JAVA_INCS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux" + fi + ;; + esac + else + AC_MSG_WARN([this package requires at least Java-1.5]) + fi fi CONFIGURE_OUTPUTS="Makeconf" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |