# HG changeset patch # User Rik # Date 1354819074 28800 # Node ID 6faa01ff29678f8a231d50f4a2ac17c3ddd4107f # Parent 487ecfde7feb4015465105bb61319eae432593ce build: Add --disable-java option to configure (bug #37838). * configure.ac: Use AC_ARG_ENABLE macro to add --disable-java option. Use AC_ARG_VAR to grab JAVA_HOME value from environment if it exists. Set Automake Conditional AMCOND_HAVE_JAVA if Java Interface is being built. * libinterp/dldfcn/__java__.cc: Include and wrap file in #ifdef HAVE_JAVA. * scripts/Makefile.am: Use AMCOND_HAVE_JAVA to control building of Java interface. diff -r 487ecfde7feb -r 6faa01ff2967 configure.ac --- a/configure.ac Thu Dec 06 10:33:36 2012 -0800 +++ b/configure.ac Thu Dec 06 10:37:54 2012 -0800 @@ -738,106 +738,6 @@ 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 $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\1/'`] - java_minor=[`echo $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" - JAVA_LIBS="-framework JavaVM" - # 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 $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" @@ -2285,6 +2185,131 @@ AC_SUBST(WARN_CFLAGS) AC_SUBST(WARN_CXXFLAGS) +### Check for Java. + +build_java=true +AC_ARG_ENABLE([java], + [AS_HELP_STRING([--disable-java], + [disable Java interface])], + [if test "$enableval" = no; then + build_java=false + fi], + []) + +HAVE_JAVA=no +## Grab JAVA_HOME from environment variable if it exists +AC_ARG_VAR([JAVA_HOME], [path to Java installation]) +JAVA_ARCH= +JAVAC= +JAR= +JAVA_CPPFLAGS= +JAVA_LIBS= + +if test $build_java = true; then + + 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 + 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 $java_version | sed -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*$/\1/'`] + java_minor=[`echo $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" + JAVA_LIBS="-framework JavaVM" + # According to: + # http://developer.apple.com/unix/crossplatform.html + # you need to explicitly 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 $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 +fi + +## For later reporting in configure summary +if test $HAVE_JAVA = no; then + build_java=false +fi +AM_CONDITIONAL([AMCOND_HAVE_JAVA], [test $HAVE_JAVA = yes]) +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.]) + ### GUI/Qt related tests. HAVE_QT=false @@ -2644,8 +2669,8 @@ HDF5 CPPFLAGS: $HDF5_CPPFLAGS HDF5 LDFLAGS: $HDF5_LDFLAGS HDF5 libraries: $HDF5_LIBS + Java home: $JAVA_HOME Java arch: $JAVA_ARCH - Java home: $JAVA_HOME Java CPPFLAGS: $JAVA_CPPFLAGS Java libraries: $JAVA_LIBS LAPACK libraries: $LAPACK_LIBS @@ -2684,6 +2709,7 @@ Build Octave GUI: $build_gui JIT compiler for loops: $build_jit + Build Java interface: $build_java Do internal array bounds checking: $BOUNDS_CHECKING Use octave_allocator: $USE_OCTAVE_ALLOCATOR Build static libraries: $STATIC_LIBS diff -r 487ecfde7feb -r 6faa01ff2967 libinterp/dldfcn/__java__.cc --- a/libinterp/dldfcn/__java__.cc Thu Dec 06 10:33:36 2012 -0800 +++ b/libinterp/dldfcn/__java__.cc Thu Dec 06 10:37:54 2012 -0800 @@ -14,6 +14,11 @@ ** along with this program; If not, see . */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef HAVE_JAVA #include "__java__.h" #include "parse.h" @@ -2037,3 +2042,6 @@ } return retval; } + +#endif + diff -r 487ecfde7feb -r 6faa01ff2967 scripts/Makefile.am --- a/scripts/Makefile.am Thu Dec 06 10:33:36 2012 -0800 +++ b/scripts/Makefile.am Thu Dec 06 10:37:54 2012 -0800 @@ -48,7 +48,9 @@ include help/module.mk include image/module.mk include io/module.mk +if AMCOND_HAVE_JAVA include java/module.mk +endif include linear-algebra/module.mk include miscellaneous/module.mk include optimization/module.mk @@ -121,9 +123,11 @@ $(srcdir)/mk-pkg-add $(srcdir) $(io_FCN_FILES) -- $(io_GEN_FCN_FILES) > $@-t mv $@-t $@ +if AMCOND_HAVE_JAVA java/PKG_ADD: $(java_FCN_FILES) $(java_GEN_FCN_FILES) java/$(octave_dirstamp) mk-pkg-add $(srcdir)/mk-pkg-add $(srcdir) $(java_FCN_FILES) -- $(java_GEN_FCN_FILES) > $@-t mv $@-t $@ +endif linear-algebra/PKG_ADD: $(linear_algebra_FCN_FILES) $(linear_algebra_GEN_FCN_FILES) linear-algebra/$(octave_dirstamp) mk-pkg-add $(srcdir)/mk-pkg-add $(srcdir) $(linear_algebra_FCN_FILES) -- $(linear_algebra_GEN_FCN_FILES) > $@-t @@ -218,7 +222,9 @@ $(help_GEN_FCN_FILES): help/$(octave_dirstamp) $(image_GEN_FCN_FILES): image/$(octave_dirstamp) $(io_GEN_FCN_FILES): io/$(octave_dirstamp) +if AMCOND_HAVE_JAVA $(java_GEN_FCN_FILES): java/$(octave_dirstamp) +endif $(linear_algebra_GEN_FCN_FILES): linear-algebra/$(octave_dirstamp) $(miscellaneous_GEN_FCN_FILES): miscellaneous/$(octave_dirstamp) $(optimization_GEN_FCN_FILES): optimization/$(octave_dirstamp) @@ -268,9 +274,11 @@ io/$(octave_dirstamp): $(MKDIR_P) io : > io/$(octave_dirstamp) +if AMCOND_HAVE_JAVA java/$(octave_dirstamp): $(MKDIR_P) java : > java/$(octave_dirstamp) +endif linear-algebra/$(octave_dirstamp): $(MKDIR_P) linear-algebra : > linear-algebra/$(octave_dirstamp)