219 строки
11 KiB
Bash
219 строки
11 KiB
Bash
dnl -*- shell-script -*-
|
|
dnl
|
|
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
dnl University Research and Technology
|
|
dnl Corporation. All rights reserved.
|
|
dnl Copyright (c) 2004-2006 The University of Tennessee and The University
|
|
dnl of Tennessee Research Foundation. All rights
|
|
dnl reserved.
|
|
dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart,
|
|
dnl University of Stuttgart. All rights reserved.
|
|
dnl Copyright (c) 2004-2006 The Regents of the University of California.
|
|
dnl All rights reserved.
|
|
dnl Copyright (c) 2006-2012 Los Alamos National Security, LLC. All rights
|
|
dnl reserved.
|
|
dnl Copyright (c) 2007-2012 Oracle and/or its affiliates. All rights reserved.
|
|
dnl Copyright (c) 2008-2013 Cisco Systems, Inc. All rights reserved.
|
|
dnl Copyright (c) 2013 Intel, Inc. All rights reserved.
|
|
dnl Copyright (c) 2015 Research Organization for Information Science
|
|
dnl and Technology (RIST). All rights reserved.
|
|
dnl $COPYRIGHT$
|
|
dnl
|
|
dnl Additional copyrights may follow
|
|
dnl
|
|
dnl $HEADER$
|
|
dnl
|
|
|
|
# This macro is necessary to get the title to be displayed first. :-)
|
|
AC_DEFUN([OPAL_SETUP_JAVA_BANNER],[
|
|
opal_show_subtitle "Java compiler"
|
|
])
|
|
|
|
# OPAL_SETUP_JAVA()
|
|
# ----------------
|
|
# Do everything required to setup the Java compiler. Safe to AC_REQUIRE
|
|
# this macro.
|
|
AC_DEFUN([OPAL_SETUP_JAVA],[
|
|
AC_REQUIRE([OPAL_SETUP_JAVA_BANNER])
|
|
|
|
OPAL_VAR_SCOPE_PUSH([opal_java_bad opal_java_found opal_java_dir opal_java_jnih opal_java_PATH_save opal_java_CPPFLAGS_save])
|
|
AC_ARG_ENABLE(java,
|
|
AC_HELP_STRING([--enable-java],
|
|
[Enable Java-based support in the system - use this option to disable all Java-based compiler tests (default: enabled)]))
|
|
|
|
AC_ARG_WITH(jdk-dir,
|
|
AC_HELP_STRING([--with-jdk-dir(=DIR)],
|
|
[Location of the JDK header directory. If you use this option, do not specify --with-jdk-bindir or --with-jdk-headers.]))
|
|
AC_ARG_WITH(jdk-bindir,
|
|
AC_HELP_STRING([--with-jdk-bindir(=DIR)],
|
|
[Location of the JDK bin directory. If you use this option, you must also use --with-jdk-headers (and you must NOT use --with-jdk-dir)]))
|
|
AC_ARG_WITH(jdk-headers,
|
|
AC_HELP_STRING([--with-jdk-headers(=DIR)],
|
|
[Location of the JDK header directory. If you use this option, you must also use --with-jdk-bindir (and you must NOT use --with-jdk-dir)]))
|
|
|
|
if test "$enable_java" = "no"; then
|
|
HAVE_JAVA_SUPPORT=0
|
|
opal_java_happy=no
|
|
else
|
|
# Check for bozo case: ensure a directory was specified
|
|
AS_IF([test "$with_jdk_dir" = "yes" || test "$with_jdk_dir" = "no"],
|
|
[AC_MSG_WARN([Must specify a directory name for --with-jdk-dir])
|
|
AC_MSG_ERROR([Cannot continue])])
|
|
AS_IF([test "$with_jdk_bindir" = "yes" || test "$with_jdk_bindir" = "no"],
|
|
[AC_MSG_WARN([Must specify a directory name for --with-jdk-bindir])
|
|
AC_MSG_ERROR([Cannot continue])])
|
|
AS_IF([test "$with_jdk_headers" = "yes" || test "$with_jdk_headers" = "no"],
|
|
[AC_MSG_WARN([Must specify a directory name for --with-jdk-headers])
|
|
AC_MSG_ERROR([Cannot continue])])
|
|
|
|
# Check for bozo case: either specify --with-jdk-dir or
|
|
# (--with-jdk-bindir, --with-jdk-headers) -- not both.
|
|
opal_java_bad=0
|
|
AS_IF([test -n "$with_jdk_dir" && \
|
|
(test -n "$with_jdk_bindir" || test -n "$with_jdk_headers")],
|
|
[opal_java_bad=1])
|
|
AS_IF([(test -z "$with_jdk_bindir" && test -n "$with_jdk_headers") || \
|
|
(test -n "$with_jdk_bindir" && test -z "$with_jdk_headers")],
|
|
[opal_java_bad=1])
|
|
AS_IF([test "$opal_java_bad" = "1"],
|
|
[AC_MSG_WARN([Either specify --with-jdk-dir or both of (--with-jdk_bindir, --with-jdk-headers) -- not both.])
|
|
AC_MSG_ERROR([Cannot continue])])
|
|
|
|
AS_IF([test -n "$with_jdk_dir"],
|
|
[with_jdk_bindir=$with_jdk_dir/bin
|
|
with_jdk_headers=$with_jdk_dir/include])
|
|
|
|
##################################################################
|
|
# with_jdk_dir can now be ignored; with_jdk_bindir and
|
|
# with_jdk_headers will be either empty or have valid values.
|
|
##################################################################
|
|
|
|
# Some java installations are in obscure places. So let's
|
|
# hard-code a few of the common ones so that users don't have to
|
|
# specify --with-java-<foo>=LONG_ANNOYING_DIRECTORY.
|
|
AS_IF([test -z "$with_jdk_bindir"],
|
|
[ # OS X Snow Leopard and Lion (10.6 and 10.7 -- did not
|
|
# check prior versions)
|
|
opal_java_found=0
|
|
AS_IF([test -x /usr/libexec/java_home],
|
|
[opal_java_dir=`/usr/libexec/java_home`/include],
|
|
[opal_java_dir=/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers])
|
|
AC_MSG_CHECKING([OSX locations])
|
|
AS_IF([test -d $opal_java_dir],
|
|
[AC_MSG_RESULT([found ($opal_java_dir)])
|
|
opal_java_found=1
|
|
with_jdk_headers=$opal_java_dir
|
|
with_jdk_bindir=/usr/bin],
|
|
[AC_MSG_RESULT([not found])])
|
|
|
|
if test "$opal_java_found" = "0"; then
|
|
# Various Linux
|
|
if test -z "$JAVA_HOME"; then
|
|
opal_java_dir='/usr/lib/jvm/java-*-openjdk-*/include/'
|
|
else
|
|
opal_java_dir=$JAVA_HOME/include
|
|
fi
|
|
opal_java_jnih=`ls $opal_java_dir/jni.h 2>/dev/null | head -n 1`
|
|
AC_MSG_CHECKING([Linux locations])
|
|
AS_IF([test -r "$opal_java_jnih"],
|
|
[with_jdk_headers=`dirname $opal_java_jnih`
|
|
OPAL_WHICH([javac], [with_jdk_bindir])
|
|
AS_IF([test -n "$with_jdk_bindir"],
|
|
[AC_MSG_RESULT([found ($with_jdk_headers)])
|
|
opal_java_found=1
|
|
with_jdk_bindir=`dirname $with_jdk_bindir`],
|
|
[with_jdk_headers=])],
|
|
[opal_java_dir='/usr/lib/jvm/default-java/include/'
|
|
opal_java_jnih=`ls $opal_java_dir/jni.h 2>/dev/null | head -n 1`
|
|
AS_IF([test -r "$opal_java_jnih"],
|
|
[with_jdk_headers=`dirname $opal_java_jnih`
|
|
OPAL_WHICH([javac], [with_jdk_bindir])
|
|
AS_IF([test -n "$with_jdk_bindir"],
|
|
[AC_MSG_RESULT([found ($with_jdk_headers)])
|
|
opal_java_found=1
|
|
with_jdk_bindir=`dirname $with_jdk_bindir`],
|
|
[with_jdk_headers=])],
|
|
[AC_MSG_RESULT([not found])])])
|
|
fi
|
|
|
|
if test "$opal_java_found" = "0"; then
|
|
# Solaris
|
|
opal_java_dir=/usr/java
|
|
AC_MSG_CHECKING([Solaris locations])
|
|
AS_IF([test -d $opal_java_dir && test -r "$opal_java_dir/include/jni.h"],
|
|
[AC_MSG_RESULT([found ($opal_java_dir)])
|
|
with_jdk_headers=$opal_java_dir/include
|
|
with_jdk_bindir=$opal_java_dir/bin
|
|
opal_java_found=1],
|
|
[AC_MSG_RESULT([not found])])
|
|
fi
|
|
],
|
|
[opal_java_found=1])
|
|
|
|
if test "$opal_java_found" = "1"; then
|
|
OPAL_CHECK_WITHDIR([jdk-bindir], [$with_jdk_bindir], [javac])
|
|
OPAL_CHECK_WITHDIR([jdk-headers], [$with_jdk_headers], [jni.h])
|
|
|
|
# Look for various Java-related programs
|
|
opal_java_happy=no
|
|
opal_java_PATH_save=$PATH
|
|
AS_IF([test -n "$with_jdk_bindir" && test "$with_jdk_bindir" != "yes" && test "$with_jdk_bindir" != "no"],
|
|
[PATH="$with_jdk_bindir:$PATH"])
|
|
AC_PATH_PROG(JAVAC, javac)
|
|
AC_PATH_PROG(JAVAH, javah)
|
|
AC_PATH_PROG(JAR, jar)
|
|
PATH=$opal_java_PATH_save
|
|
|
|
# Check to see if we have all 3 programs.
|
|
AS_IF([test -z "$JAVAC" || test -z "$JAVAH" || test -z "$JAR"],
|
|
[opal_java_happy=no
|
|
HAVE_JAVA_SUPPORT=0],
|
|
[opal_java_happy=yes
|
|
HAVE_JAVA_SUPPORT=1])
|
|
|
|
# Look for jni.h
|
|
AS_IF([test "$opal_java_happy" = "yes"],
|
|
[opal_java_CPPFLAGS_save=$CPPFLAGS
|
|
# silence a stupid Mac warning
|
|
CPPFLAGS="$CPPFLAGS -DTARGET_RT_MAC_CFM=0"
|
|
AS_IF([test -n "$with_jdk_headers" && test "$with_jdk_headers" != "yes" && test "$with_jdk_headers" != "no"],
|
|
[OPAL_JDK_CPPFLAGS="-I$with_jdk_headers"
|
|
# Some flavors of JDK also require -I<blah>/linux.
|
|
# See if that's there, and if so, add a -I for that,
|
|
# too. Ugh.
|
|
AS_IF([test -d "$with_jdk_headers/linux"],
|
|
[OPAL_JDK_CPPFLAGS="$OPAL_JDK_CPPFLAGS -I$with_jdk_headers/linux"])
|
|
# Solaris JDK also require -I<blah>/solaris.
|
|
# See if that's there, and if so, add a -I for that,
|
|
# too. Ugh.
|
|
AS_IF([test -d "$with_jdk_headers/solaris"],
|
|
[OPAL_JDK_CPPFLAGS="$OPAL_JDK_CPPFLAGS -I$with_jdk_headers/solaris"])
|
|
# Darwin JDK also require -I<blah>/darwin.
|
|
# See if that's there, and if so, add a -I for that,
|
|
# too. Ugh.
|
|
AS_IF([test -d "$with_jdk_headers/darwin"],
|
|
[OPAL_JDK_CPPFLAGS="$OPAL_JDK_CPPFLAGS -I$with_jdk_headers/darwin"])
|
|
|
|
CPPFLAGS="$CPPFLAGS $OPAL_JDK_CPPFLAGS"])
|
|
AC_CHECK_HEADER([jni.h], [],
|
|
[opal_java_happy=no])
|
|
CPPFLAGS=$opal_java_CPPFLAGS_save
|
|
])
|
|
else
|
|
opal_java_happy=no;
|
|
HAVE_JAVA_SUPPORT=no;
|
|
fi
|
|
AC_SUBST(OPAL_JDK_CPPFLAGS)
|
|
fi
|
|
|
|
# Are we happy?
|
|
AC_MSG_CHECKING([Java support available])
|
|
AS_IF([test "$opal_java_happy" = "no"],
|
|
[AC_MSG_RESULT([no])],
|
|
[AC_MSG_RESULT([yes])])
|
|
|
|
AC_DEFINE_UNQUOTED([OPAL_HAVE_JAVA_SUPPORT], [$HAVE_JAVA_SUPPORT], [do we have Java support])
|
|
AM_CONDITIONAL(OPAL_HAVE_JAVA_SUPPORT, test "$opal_java_happy" = "yes")
|
|
OPAL_VAR_SCOPE_POP
|
|
])
|