summaryrefslogtreecommitdiff
path: root/build/ac-macros/java.m4
diff options
context:
space:
mode:
authorJames McCoy <jamessan@debian.org>2018-07-31 22:26:52 -0400
committerJames McCoy <jamessan@debian.org>2018-07-31 22:26:52 -0400
commite20a507113ff1126aeb4a97b806390ea377fe292 (patch)
tree0260b3a40387d7f994fbadaf22f1e9d3c080b09f /build/ac-macros/java.m4
parentc64debffb81d2fa17e9a72af7199ccf88b3cc556 (diff)
New upstream version 1.10.2
Diffstat (limited to 'build/ac-macros/java.m4')
-rw-r--r--build/ac-macros/java.m4195
1 files changed, 195 insertions, 0 deletions
diff --git a/build/ac-macros/java.m4 b/build/ac-macros/java.m4
new file mode 100644
index 0000000..d8a7a36
--- /dev/null
+++ b/build/ac-macros/java.m4
@@ -0,0 +1,195 @@
+dnl ===================================================================
+dnl Licensed to the Apache Software Foundation (ASF) under one
+dnl or more contributor license agreements. See the NOTICE file
+dnl distributed with this work for additional information
+dnl regarding copyright ownership. The ASF licenses this file
+dnl to you under the Apache License, Version 2.0 (the
+dnl "License"); you may not use this file except in compliance
+dnl with the License. You may obtain a copy of the License at
+dnl
+dnl http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing,
+dnl software distributed under the License is distributed on an
+dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+dnl KIND, either express or implied. See the License for the
+dnl specific language governing permissions and limitations
+dnl under the License.
+dnl ===================================================================
+dnl
+dnl java.m4: Locates the JDK and its include files and libraries.
+dnl
+
+AC_DEFUN(SVN_CHECK_JDK,
+[
+ JAVA_OLDEST_WORKING_VER="$1"
+ AC_ARG_WITH(jdk,
+ AS_HELP_STRING([--with-jdk=PATH],
+ [Try to use 'PATH/include' to find the JNI
+ headers. If PATH is not specified, look
+ for a Java Development Kit at JAVA_HOME.]),
+ [
+ case "$withval" in
+ "no")
+ JDK_SUITABLE=no
+ ;;
+ "yes")
+ SVN_FIND_JDK(check, $JAVA_OLDEST_WORKING_VER)
+ ;;
+ *)
+ SVN_FIND_JDK($withval, $JAVA_OLDEST_WORKING_VER)
+ ;;
+ esac
+ ],
+ [
+ SVN_FIND_JDK(check, $JAVA_OLDEST_WORKING_VER)
+ ])
+])
+
+AC_DEFUN(SVN_FIND_JDK,
+[
+ where=$1
+ JAVA_OLDEST_WORKING_VER="$2"
+
+ JDK=none
+ JAVA_BIN=none
+ JAVADOC=none
+ JAVAC=none
+ JAVAH=none
+ JAR=none
+ JNI_INCLUDES=none
+
+ JDK_SUITABLE=no
+ AC_MSG_CHECKING([for JDK])
+ if test $where = check; then
+ dnl Prefer /usr/libexec/java_home, then /Library/Java/Home first
+ dnl to try to be nice on Darwin. We'll correct later if we get
+ dnl caught in the tangled web of JAVA_HOME.
+ if test -x "$JAVA_HOME/bin/java"; then
+ JDK="$JAVA_HOME"
+ elif test -x "/usr/libexec/java_home"; then
+ JDK=`/usr/libexec/java_home`
+ elif test -x "/Library/Java/Home/bin/java"; then
+ JDK="/Library/Java/Home"
+ elif test -x "/usr/bin/java"; then
+ JDK="/usr"
+ elif test -x "/usr/local/bin/java"; then
+ JDK="/usr/local"
+ fi
+ else
+ JDK=$where
+ fi
+
+ dnl Correct for Darwin's odd JVM layout. Ideally, we should use realpath,
+ dnl but Darwin doesn't have that utility. /usr/bin/java is a symlink into
+ dnl /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Commands
+ dnl See http://developer.apple.com/qa/qa2001/qa1170.html
+ os_arch="`uname`"
+ if test "$os_arch" = "Darwin"; then
+ OSX_VER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2`
+
+ if test "$OSX_VER" = "10.4"; then
+ dnl For OS X 10.4, the SDK version is 10.4u instead of 10.4.
+ OSX_VER="10.4u"
+ fi
+
+ OSX_SYS_JAVA_FRAMEWORK="/System/Library/Frameworks/JavaVM.framework"
+ OSX_SDK_JAVA_FRAMEWORK="/Developer/SDKs/MacOSX$OSX_VER.sdk/System/Library"
+ OSX_SDK_JAVA_FRAMEWORK="$OSX_SDK_JAVA_FRAMEWORK/Frameworks/JavaVM.framework"
+ fi
+
+ if test "$os_arch" = "Darwin" && test "$JDK" = "/usr" &&
+ test -d "/Library/Java/Home"; then
+ JDK="/Library/Java/Home"
+ fi
+
+ if test "$os_arch" = "Darwin" && test "$JDK" = "/Library/Java/Home"; then
+ JRE_LIB_DIR="$OSX_SYS_JAVA_FRAMEWORK/Classes"
+ else
+ JRE_LIB_DIR="$JDK/jre/lib"
+ fi
+
+ if test -f "$JDK/include/jni.h"; then
+ dnl This *must* be fully expanded, or we'll have problems later in find.
+ JNI_INCLUDEDIR="$JDK/include"
+ JDK_SUITABLE=yes
+ elif test "$os_arch" = "Darwin" && test -e "$JDK/Headers/jni.h"; then
+ dnl Search the Headers directory in the JDK
+ JNI_INCLUDEDIR="$JDK/Headers"
+ JDK_SUITABLE=yes
+ elif test "$os_arch" = "Darwin" &&
+ test -e "$OSX_SYS_JAVA_FRAMEWORK/Headers/jni.h"; then
+ dnl Search the System framework's Headers directory
+ JNI_INCLUDEDIR="$OSX_SYS_JAVA_FRAMEWORK/Headers"
+ JDK_SUITABLE=yes
+ elif test "$os_arch" = "Darwin" &&
+ test -e "$OSX_SDK_JAVA_FRAMEWORK/Headers/jni.h"; then
+ dnl Search the SDK's System framework's Headers directory
+ JNI_INCLUDEDIR="$OSX_SDK_JAVA_FRAMEWORK/Headers"
+ JDK_SUITABLE=yes
+ else
+ JDK_SUITABLE=no
+ fi
+ if test "$JDK_SUITABLE" = "yes"; then
+ AC_MSG_RESULT([$JNI_INCLUDEDIR/jni.h])
+ else
+ AC_MSG_RESULT([no])
+ if test "$where" != "check"; then
+ AC_MSG_WARN([no JNI header files found.])
+ if test "$os_arch" = "Darwin"; then
+ AC_MSG_WARN([You may need to install the latest Java Development package from http://connect.apple.com/. Apple no longer includes the JNI header files by default on Java updates.])
+ fi
+ fi
+ fi
+
+ if test "$JDK_SUITABLE" = "yes"; then
+ JAVA_BIN='$(JDK)/bin'
+
+ JAVA="$JAVA_BIN/java"
+ JAVAC="$JAVA_BIN/javac"
+ JAVAH="$JAVA_BIN/javah"
+ JAVADOC="$JAVA_BIN/javadoc"
+ JAR="$JAVA_BIN/jar"
+
+ dnl Once upon a time we preferred Jikes for speed.
+ dnl Jikes is dead, long live Jikes!
+ AC_ARG_WITH(jikes,
+ AS_HELP_STRING([--with-jikes=PATH],
+ [Deprecated. Provided for backward compatibility.]),
+ [
+ if test "$withval" != "no"; then
+ AC_MSG_WARN([The --with-jikes option was ignored])
+ fi
+ ])
+
+ dnl Add javac flags.
+ # The release for "-source" could actually be greater than that
+ # of "-target", if we want to cross-compile for lesser JVMs.
+ if test -z "$JAVAC_FLAGS"; then
+ JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.6"
+ if test "$enable_debugging" = "yes"; then
+ JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS"
+ if test -z "$JAVAC_COMPAT_FLAGS"; then
+ JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann -Xlint:-rawtypes"
+ fi
+ fi
+ fi
+
+ JNI_INCLUDES="-I$JNI_INCLUDEDIR"
+ list="`find "$JNI_INCLUDEDIR" -type d -print`"
+ for dir in $list; do
+ JNI_INCLUDES="$JNI_INCLUDES -I$dir"
+ done
+ fi
+
+ dnl We use JDK in the Makefile
+ AC_SUBST(JDK)
+ AC_SUBST(JAVA)
+ AC_SUBST(JAVAC)
+ AC_SUBST(JAVAC_FLAGS)
+ AC_SUBST(JAVAC_COMPAT_FLAGS)
+ AC_SUBST(JAVADOC)
+ AC_SUBST(JAVAH)
+ AC_SUBST(JAR)
+ AC_SUBST(JNI_INCLUDES)
+])