b29b852281
config/ directory. We split them apart a while ago in the hopes that it would simplify things, but it didn't really (e.g., because there were still some ompi/opal .m4 files in the top-level config/ directory, resulting in developer confusion where any given m4 macro was defined). So this commit consolidates them back into the top-level directory for simplicity. There's still (at least) two changes that would be nice to make: 1. Split any generated .m4 file (e.g., autogen-generated .m4 files) into a separate directory somewhere so that a top-level -Iconfig/ will only get our explicitly defined macros, not the autogen stuff (e.g., with libevent2019 needing to get the visibility macro, but NOT all the autogen-generated inclusion of component configure.m4 files). 1. Change configure to be of the form: {{{ # ...a small amount of preamble/setup... OPAL_SETUP m4_ifdef([project_orte], [ORTE_SETUP]) m4_ifdef([project_ompi], [OMPI_SETUP]) # ...a small amount of finishing stuff... }}} I doubt we'll ever get anything as clean as that, but that would be the goal to shoot for. This commit was SVN r27704.
206 строки
9.6 KiB
Bash
206 строки
9.6 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-2012 Cisco Systems, Inc. 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([ORTE_SETUP_JAVA_BANNER],[
|
|
ompi_show_subtitle "Java compiler"
|
|
])
|
|
|
|
# ORTE_SETUP_JAVA()
|
|
# ----------------
|
|
# Do everything required to setup the Java compiler. Safe to AC_REQUIRE
|
|
# this macro.
|
|
AC_DEFUN([ORTE_SETUP_JAVA],[
|
|
AC_REQUIRE([ORTE_SETUP_JAVA_BANNER])
|
|
|
|
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
|
|
orte_java_happy=no
|
|
else
|
|
# Check for bozo case: ensure a directory was specified
|
|
AS_IF([test "$with_jdk_dir" = "yes" -o "$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" -o "$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" -o "$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.
|
|
bad=0
|
|
AS_IF([test -n "$with_jdk_dir" -a -n "$with_jdk_bindir" -o \
|
|
-n "$with_jdk_dir" -a -n "$with_jdk_headers"],[bad=1])
|
|
AS_IF([test -z "$with_jdk_bindir" -a -n "$with_jdk_headers" -o \
|
|
-n "$with_jdk_bindir" -a -z "$with_jdk_headers"],[bad=1])
|
|
AS_IF([test "$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)
|
|
found=0
|
|
dir=/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers
|
|
AC_MSG_CHECKING([OSX locations])
|
|
AS_IF([test -d $dir],
|
|
[AC_MSG_RESULT([found])
|
|
found=1
|
|
with_jdk_headers=$dir
|
|
with_jdk_bindir=/usr/bin],
|
|
[AC_MSG_RESULT([not found])])
|
|
|
|
if test "$found" = "0"; then
|
|
# Various Linux
|
|
if test -z "$JAVA_HOME"; then
|
|
dir='/usr/lib/jvm/java-*-openjdk-*/include/'
|
|
else
|
|
dir=$JAVA_HOME/include
|
|
fi
|
|
jnih=`ls $dir/jni.h 2>/dev/null | head -n 1`
|
|
AC_MSG_CHECKING([Linux locations])
|
|
AS_IF([test -r "$jnih"],
|
|
[with_jdk_headers=`dirname $jnih`
|
|
OPAL_WHICH([javac], [with_jdk_bindir])
|
|
AS_IF([test -n "$with_jdk_bindir"],
|
|
[AC_MSG_RESULT([found])
|
|
found=1
|
|
with_jdk_bindir=`dirname $with_jdk_bindir`],
|
|
[with_jdk_headers=])],
|
|
[dir='/usr/lib/jvm/default-java/include/'
|
|
jnih=`ls $dir/jni.h 2>/dev/null | head -n 1`
|
|
AS_IF([test -r "$jnih"],
|
|
[with_jdk_headers=`dirname $jnih`
|
|
OPAL_WHICH([javac], [with_jdk_bindir])
|
|
AS_IF([test -n "$with_jdk_bindir"],
|
|
[AC_MSG_RESULT([found])
|
|
found=1
|
|
with_jdk_bindir=`dirname $with_jdk_bindir`],
|
|
[with_jdk_headers=])],
|
|
[AC_MSG_RESULT([not found])])])
|
|
fi
|
|
|
|
if test "$found" = "0"; then
|
|
# Solaris
|
|
dir=/usr/java
|
|
AC_MSG_CHECKING([Solaris locations])
|
|
AS_IF([test -d $dir -a -r "$dir/include/jni.h"],
|
|
[AC_MSG_RESULT([found])
|
|
with_jdk_headers=$dir/include
|
|
with_jdk_bindir=$dir/bin
|
|
found=1],
|
|
[AC_MSG_RESULT([not found])])
|
|
fi
|
|
],
|
|
[found=1])
|
|
|
|
if test "$found" = "1"; then
|
|
OMPI_CHECK_WITHDIR([jdk-bindir], [$with_jdk_bindir], [javac])
|
|
OMPI_CHECK_WITHDIR([jdk-headers], [$with_jdk_headers], [jni.h])
|
|
|
|
# Look for various Java-related programs
|
|
orte_java_happy=no
|
|
PATH_save=$PATH
|
|
AS_IF([test -n "$with_jdk_bindir" -a "$with_jdk_bindir" != "yes" -a "$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=$PATH_save
|
|
|
|
# Check to see if we have all 3 programs.
|
|
AS_IF([test -z "$JAVAC" -o -z "$JAVAH" -o -z "$JAR"],
|
|
[orte_java_happy=no
|
|
HAVE_JAVA_SUPPORT=0],
|
|
[orte_java_happy=yes
|
|
HAVE_JAVA_SUPPORT=1])
|
|
|
|
# Look for jni.h
|
|
AS_IF([test "$orte_java_happy" = "yes"],
|
|
[CPPFLAGS_save=$CPPFLAGS
|
|
# silence a stupid Mac warning
|
|
CPPFLAGS="$CPPFLAGS -DTARGET_RT_MAC_CFM=0"
|
|
AS_IF([test -n "$with_jdk_headers" -a "$with_jdk_headers" != "yes" -a "$with_jdk_headers" != "no"],
|
|
[ORTE_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"],
|
|
[ORTE_JDK_CPPFLAGS="$ORTE_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"],
|
|
[ORTE_JDK_CPPFLAGS="$ORTE_JDK_CPPFLAGS -I$with_jdk_headers/solaris"])
|
|
|
|
CPPFLAGS="$CPPFLAGS $ORTE_JDK_CPPFLAGS"])
|
|
AC_CHECK_HEADER([jni.h], [],
|
|
[orte_java_happy=no])
|
|
CPPFLAGS=$CPPFLAGS_save
|
|
])
|
|
else
|
|
orte_java_happy=no;
|
|
HAVE_JAVA_SUPPORT=no;
|
|
fi
|
|
AC_SUBST(ORTE_JDK_CPPFLAGS)
|
|
fi
|
|
|
|
# Are we happy?
|
|
AC_MSG_CHECKING([Java support available])
|
|
AS_IF([test "$orte_java_happy" = "no"],
|
|
[AC_MSG_RESULT([no])],
|
|
[AC_MSG_RESULT([yes])])
|
|
|
|
AC_DEFINE_UNQUOTED([ORTE_HAVE_JAVA_SUPPOR]T, [$HAVE_JAVA_SUPPORT], [do we have Java support])
|
|
AM_CONDITIONAL(ORTE_HAVE_JAVA_SUPPORT, test "$orte_java_happy" = "yes")
|
|
|
|
])
|