diff configure.ac @ 15625:acf0addfc610

include Octave Forge java package in core Octave * scripts/java: New directory tree. * scripts/Makefile.am: Include java/module.mk. (JAR_FILES): New variable. (nobase_fcnfile_DATA): Include $(JAR_FILES) in the list. (all-local): Depend on $(JAR_FILES). (java/PKG_ADD, java_GEN_FCN_FILES, java/$(octave_dirstamp)): New rules. * libinterp/link-deps (LIBOCTINTERP_LINK_DEP): Include $(JAVA_LIBS) in the list. * dldfcn/__java__.h, dldfcn/__java__.cc: New files. * dldfcn/module-files (__java__.cc): New file description. * doc/interpreter/java.txi: New file. * doc/interpreter/octave.texi: Include java.texi. * doc/interpreter/java-images: New directory. * doc/interpreter/Makefile.am (JAVA_IMAGES): New variable. (IMAGES): Include $(JAVA_IMAGSES) in the list. (MUNGED_TEXI_SRC): Include java.texi in the list. * configure.ac: Check for Java libraries and tools. Include Java info in the summary message. * build-aux/common.mk (JAVA_CPPFLAGS, JAVA_LIBS): New variables. * NEWS: Update. * contributors.in: Include Martin Hepperle in the list.
author John W. Eaton <jwe@octave.org>
date Fri, 23 Nov 2012 15:29:13 -0500
parents fcdc284f96ef
children e88b31c485c0
line wrap: on
line diff
--- a/configure.ac	Fri Nov 23 11:43:49 2012 -0500
+++ b/configure.ac	Fri Nov 23 15:29:13 2012 -0500
@@ -738,6 +738,105 @@
 AC_SUBST(LLVM_LDFLAGS)
 AC_SUBST(LLVM_LIBS)
 
+### Check for Java.
+
+warn_java=
+
+if test -z "$JAVA_HOME"; then
+  AC_CHECK_PROG(JAVA, java, java)
+  AC_CHECK_PROG(JAVAC, javac, javac)
+  AC_CHECK_PROG(JAR, jar, jar)
+else
+  AC_PATH_PROG(JAVA, java, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH])
+  AC_PATH_PROG(JAVAC, javac, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH])
+  AC_PATH_PROG(JAR, jar, [], [$JAVA_HOME/bin$PATH_SEPARATOR$PATH])
+fi
+HAVE_JAVA=no
+if test -n "$JAVAC" -a -n "$JAR"; then
+  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
+      *-msdosmsvc*)
+        HAVE_JAVA=yes
+        JAVA_LIBS=-ladvapi32
+      ;;
+      *)
+        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_CPPFLAGS="-I${JAVA_HOME}/include"
+            HAVE_JAVA=yes
+          # This is the Debian default path
+          elif test -d "/usr/lib/jvm/default-java"; then
+            JAVA_HOME=/usr/lib/jvm/default-java
+          # This is the path of java 6 on debian
+          elif test -d "/usr/lib/jvm/java-6-sun"; then
+            JAVA_HOME=//usr/lib/jvm/java-6-sun
+          else
+            JAVA_HOME=/usr/lib/jvm
+          fi
+        fi
+        JAVA_HOME=[`echo -n $JAVA_HOME | sed -e 's|/$||'`]
+        if test -z "$JAVA_ARCH"; then
+          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
+        fi
+        if test -n "$JAVA_ARCH"; then
+          HAVE_JAVA=yes
+          case "$canonical_host_type" in
+            *-mingw* | *-cygwin*)
+              JAVA_LIBS=-ladvapi32
+              JAVA_CPPFLAGS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32"
+            ;;
+            *)
+              JAVA_CPPFLAGS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux"
+            ;;
+          esac
+        fi
+      ;;
+    esac
+    if test "$HAVE_JAVA" = "yes"; then
+      AC_DEFINE(HAVE_JAVA, 1,
+        [Define to 1 if Java is available and is at least version 1.5])
+    fi
+  else
+    warn_java="Java 1.5 or later not found.  Octave will not be able to call Java methods."
+  fi
+fi
+
+AC_SUBST(JAVAC)
+AC_SUBST(JAR)
+AC_SUBST(JAVA_CPPFLAGS)
+AC_SUBST(JAVA_LIBS)
+AC_DEFINE_UNQUOTED([JAVA_HOME], ["$JAVA_HOME"], [Java home.])
+AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"], [Java arch.])
+
 ### Check for HDF5 library.
 
 save_CPPFLAGS="$CPPFLAGS"
@@ -2535,6 +2634,10 @@
   HDF5 CPPFLAGS:               $HDF5_CPPFLAGS
   HDF5 LDFLAGS:                $HDF5_LDFLAGS
   HDF5 libraries:              $HDF5_LIBS
+  Java arch:                   $JAVA_ARCH
+  Java home:                   $JAVA_HOME
+  Java CPPFLAGS:               $JAVA_CPPFLAGS
+  Java libraries:              $JAVA_LIBS
   LAPACK libraries:            $LAPACK_LIBS
   LLVM CPPFLAGS:               $LLVM_CPPFLAGS
   LLVM LDFLAGS:                $LLVM_LDFLAGS