Files
libguestfs/m4/guestfs-java.m4
2020-03-06 19:32:32 +00:00

169 lines
5.7 KiB
Plaintext

# libguestfs
# Copyright (C) 2009-2020 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
dnl Check for Java.
AC_ARG_WITH(java,
[AS_HELP_STRING([--with-java],
[specify path to JDK directory (for the Java language bindings) @<:@default=check@:>@])],
[],
[with_java=check])
if test "x$with_java" != "xno"; then
if test "x$with_java" != "xyes" && test "x$with_java" != "xcheck"
then
# Reject unsafe characters in $JAVA
jh_lf='
'
case $JAVA in
*[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
AC_MSG_FAILURE([unsafe \$JAVA directory (use --without-java to disable Java support)]);;
esac
if test -d "$with_java"; then
JAVA="$with_java"
else
AC_MSG_FAILURE([$with_java is not a directory (use --without-java to disable Java support)])
fi
fi
if test "x$JAVA" = "x"; then
# Look for Java in some likely locations.
for d in \
/usr/lib/jvm/java \
/usr/lib64/jvm/java \
/usr/lib/jvm/default-java \
/usr/lib/jvm/default \
/etc/java-config-2/current-system-vm \
/usr/lib/jvm/java-8-openjdk \
/usr/lib/jvm/java-7-openjdk \
/usr/lib/jvm/java-6-openjdk
do
AC_MSG_CHECKING([for 'java' in $d])
if test -d $d && test -f $d/bin/java; then
AC_MSG_RESULT([found])
JAVA=$d
break
else
AC_MSG_RESULT([not found])
fi
done
fi
if test "x$JAVA" != "x"; then
AC_MSG_CHECKING(for JDK in $JAVA)
if test ! -x "$JAVA/bin/java"; then
AC_MSG_ERROR([missing $JAVA/bin/java binary (use --without-java to disable Java support)])
else
JAVA_EXE="$JAVA/bin/java"
fi
if test ! -x "$JAVA/bin/javac"; then
AC_MSG_ERROR([missing $JAVA/bin/javac binary])
else
JAVAC="$JAVA/bin/javac"
fi
if test -x "$JAVA/bin/javah"; then
JAVAH="$JAVA/bin/javah"
fi
if test ! -x "$JAVA/bin/javadoc"; then
AC_MSG_ERROR([missing $JAVA/bin/javadoc binary])
else
JAVADOC="$JAVA/bin/javadoc"
fi
if test ! -x "$JAVA/bin/jar"; then
AC_MSG_ERROR([missing $JAVA/bin/jar binary])
else
JAR="$JAVA/bin/jar"
fi
java_version=`$JAVA_EXE -version 2>&1 | $AWK -F '"' '/^(java|openjdk) version/ {print $2;}'`
AC_MSG_RESULT(found $java_version)
dnl Find jni.h.
AC_MSG_CHECKING([for jni.h])
if test -f "$JAVA/include/jni.h"; then
JNI_CFLAGS="-I$JAVA/include"
else
if test "`find $JAVA -name jni.h`" != ""; then
head=`find $JAVA -name jni.h | tail -1`
dir=`dirname "$head"`
JNI_CFLAGS="-I$dir"
else
AC_MSG_FAILURE([missing jni.h header file])
fi
fi
AC_MSG_RESULT([$JNI_CFLAGS])
dnl Find jni_md.h.
AC_MSG_CHECKING([for jni_md.h])
case "$build_os" in
*linux*) system="linux" ;;
*SunOS*) system="solaris" ;;
*cygwin*) system="win32" ;;
*) system="$build_os" ;;
esac
if test -f "$JAVA/include/$system/jni_md.h"; then
JNI_CFLAGS="$JNI_CFLAGS -I$JAVA/include/$system"
else
if test "`find $JAVA -name jni_md.h`" != ""; then
head=`find $JAVA -name jni_md.h | tail -1`
dir=`dirname "$head"`
JNI_CFLAGS="$JNI_CFLAGS -I$dir"
else
AC_MSG_FAILURE([missing jni_md.h header file])
fi
fi
AC_MSG_RESULT([$JNI_CFLAGS])
dnl Extra lint flags?
AC_MSG_CHECKING([extra javac lint flags])
if $JAVAC -X >/dev/null 2>&1 && \
$JAVAC -X 2>&1 | grep -q -- '-Xlint:.*all'; then
AC_MSG_RESULT([-Xlint:all])
EXTRA_JAVAC_FLAGS="$EXTRA_JAVAC_FLAGS -Xlint:all"
else
AC_MSG_RESULT([no])
fi
dnl Where to install jarfiles, jnifiles
if test -z $JAR_INSTALL_DIR; then
JAR_INSTALL_DIR=\${prefix}/share/java
fi
if test -z $JNI_INSTALL_DIR; then
JNI_INSTALL_DIR=\${libdir}
fi
dnl JNI version.
jni_major_version=`echo "$VERSION" | $AWK -F. '{print $1}'`
jni_minor_version=`echo "$VERSION" | $AWK -F. '{print $2}'`
jni_micro_version=`echo "$VERSION" | $AWK -F. '{print $3}'`
JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
fi
AC_SUBST(JAVA)
AC_SUBST(JAVA_EXE)
AC_SUBST(JAVAC)
AC_SUBST(JAVAH)
AC_SUBST(JAVADOC)
AC_SUBST(JAR)
AC_SUBST(JNI_CFLAGS)
AC_SUBST(EXTRA_JAVAC_FLAGS)
AC_SUBST(JAR_INSTALL_DIR)
AC_SUBST(JNI_INSTALL_DIR)
AC_SUBST(JNI_VERSION_INFO)
fi
AM_CONDITIONAL([HAVE_JAVAH],[test -n "$JAVAH"])
AM_CONDITIONAL([HAVE_JAVA],[test "x$with_java" != "xno" && test -n "$JAVAC"])