1
1
openmpi/config/opal_setup_java.m4

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
])