|  | 
|  | 1 | +# =========================================================================== | 
|  | 2 | +#    https://www.gnu.org/software/autoconf-archive/ax_jni_include_dir.html | 
|  | 3 | +# =========================================================================== | 
|  | 4 | +# | 
|  | 5 | +# SYNOPSIS | 
|  | 6 | +# | 
|  | 7 | +#   AX_JNI_INCLUDE_DIR | 
|  | 8 | +# | 
|  | 9 | +# DESCRIPTION | 
|  | 10 | +# | 
|  | 11 | +#   AX_JNI_INCLUDE_DIR finds include directories needed for compiling | 
|  | 12 | +#   programs using the JNI interface. | 
|  | 13 | +# | 
|  | 14 | +#   JNI include directories are usually in the Java distribution. This is | 
|  | 15 | +#   deduced from the value of $JAVA_HOME, $JAVAC, or the path to "javac", in | 
|  | 16 | +#   that order. When this macro completes, a list of directories is left in | 
|  | 17 | +#   the variable JNI_INCLUDE_DIRS. | 
|  | 18 | +# | 
|  | 19 | +#   Example usage follows: | 
|  | 20 | +# | 
|  | 21 | +#     AX_JNI_INCLUDE_DIR | 
|  | 22 | +# | 
|  | 23 | +#     for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS | 
|  | 24 | +#     do | 
|  | 25 | +#             CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR" | 
|  | 26 | +#     done | 
|  | 27 | +# | 
|  | 28 | +#   If you want to force a specific compiler: | 
|  | 29 | +# | 
|  | 30 | +#   - at the configure.in level, set JAVAC=yourcompiler before calling | 
|  | 31 | +#   AX_JNI_INCLUDE_DIR | 
|  | 32 | +# | 
|  | 33 | +#   - at the configure level, setenv JAVAC | 
|  | 34 | +# | 
|  | 35 | +#   Note: This macro can work with the autoconf M4 macros for Java programs. | 
|  | 36 | +#   This particular macro is not part of the original set of macros. | 
|  | 37 | +# | 
|  | 38 | +# LICENSE | 
|  | 39 | +# | 
|  | 40 | +#   Copyright (c) 2008 Don Anderson <[email protected]> | 
|  | 41 | +# | 
|  | 42 | +#   Copying and distribution of this file, with or without modification, are | 
|  | 43 | +#   permitted in any medium without royalty provided the copyright notice | 
|  | 44 | +#   and this notice are preserved. This file is offered as-is, without any | 
|  | 45 | +#   warranty. | 
|  | 46 | + | 
|  | 47 | +#serial 14 | 
|  | 48 | + | 
|  | 49 | +AU_ALIAS([AC_JNI_INCLUDE_DIR], [AX_JNI_INCLUDE_DIR]) | 
|  | 50 | +AC_DEFUN([AX_JNI_INCLUDE_DIR],[ | 
|  | 51 | +
 | 
|  | 52 | +JNI_INCLUDE_DIRS="" | 
|  | 53 | +
 | 
|  | 54 | +if test "x$JAVA_HOME" != x; then | 
|  | 55 | +	_JTOPDIR="$JAVA_HOME" | 
|  | 56 | +else | 
|  | 57 | +	if test "x$JAVAC" = x; then | 
|  | 58 | +		JAVAC=javac | 
|  | 59 | +	fi | 
|  | 60 | +	AC_PATH_PROG([_ACJNI_JAVAC], [$JAVAC], [no]) | 
|  | 61 | +	if test "x$_ACJNI_JAVAC" = xno; then | 
|  | 62 | +		AC_MSG_WARN([cannot find JDK; try setting \$JAVAC or \$JAVA_HOME]) | 
|  | 63 | +	fi | 
|  | 64 | +	_ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC") | 
|  | 65 | +	_JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'` | 
|  | 66 | +fi | 
|  | 67 | +
 | 
|  | 68 | +case "$host_os" in | 
|  | 69 | +        darwin*)        # Apple Java headers are inside the Xcode bundle. | 
|  | 70 | +            macos_version=$(sw_vers -productVersion | sed -n -e 's/^@<:@0-9@:>@*.\(@<:@0-9@:>@*\).@<:@0-9@:>@*/\1/p') | 
|  | 71 | +            if @<:@ "$macos_version" -gt "7" @:>@; then | 
|  | 72 | +                _JTOPDIR="$(xcrun --show-sdk-path)/System/Library/Frameworks/JavaVM.framework" | 
|  | 73 | +                _JINC="$_JTOPDIR/Headers" | 
|  | 74 | +            else | 
|  | 75 | +                _JTOPDIR="/System/Library/Frameworks/JavaVM.framework" | 
|  | 76 | +                _JINC="$_JTOPDIR/Headers" | 
|  | 77 | +            fi | 
|  | 78 | +            ;; | 
|  | 79 | +        *) _JINC="$_JTOPDIR/include";; | 
|  | 80 | +esac | 
|  | 81 | +_AS_ECHO_LOG([_JTOPDIR=$_JTOPDIR]) | 
|  | 82 | +_AS_ECHO_LOG([_JINC=$_JINC]) | 
|  | 83 | +
 | 
|  | 84 | +# On Mac OS X 10.6.4, jni.h is a symlink: | 
|  | 85 | +# /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/jni.h | 
|  | 86 | +# -> ../../CurrentJDK/Headers/jni.h. | 
|  | 87 | +AC_CACHE_CHECK(jni headers, ac_cv_jni_header_path, | 
|  | 88 | +[ | 
|  | 89 | +  if test -f "$_JINC/jni.h"; then | 
|  | 90 | +    ac_cv_jni_header_path="$_JINC" | 
|  | 91 | +    JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $ac_cv_jni_header_path" | 
|  | 92 | +  else | 
|  | 93 | +    _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` | 
|  | 94 | +    if test -f "$_JTOPDIR/include/jni.h"; then | 
|  | 95 | +      ac_cv_jni_header_path="$_JTOPDIR/include" | 
|  | 96 | +      JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $ac_cv_jni_header_path" | 
|  | 97 | +    else | 
|  | 98 | +      ac_cv_jni_header_path=none | 
|  | 99 | +    fi | 
|  | 100 | +  fi | 
|  | 101 | +]) | 
|  | 102 | +
 | 
|  | 103 | +# get the likely subdirectories for system specific java includes | 
|  | 104 | +case "$host_os" in | 
|  | 105 | +bsdi*)          _JNI_INC_SUBDIRS="bsdos";; | 
|  | 106 | +freebsd*)       _JNI_INC_SUBDIRS="freebsd";; | 
|  | 107 | +darwin*)        _JNI_INC_SUBDIRS="darwin";; | 
|  | 108 | +linux*)         _JNI_INC_SUBDIRS="linux genunix";; | 
|  | 109 | +osf*)           _JNI_INC_SUBDIRS="alpha";; | 
|  | 110 | +solaris*)       _JNI_INC_SUBDIRS="solaris";; | 
|  | 111 | +mingw*)		_JNI_INC_SUBDIRS="win32";; | 
|  | 112 | +cygwin*)	_JNI_INC_SUBDIRS="win32";; | 
|  | 113 | +*)              _JNI_INC_SUBDIRS="genunix";; | 
|  | 114 | +esac | 
|  | 115 | +
 | 
|  | 116 | +if test "x$ac_cv_jni_header_path" != "xnone"; then | 
|  | 117 | +  # add any subdirectories that are present | 
|  | 118 | +  for JINCSUBDIR in $_JNI_INC_SUBDIRS | 
|  | 119 | +  do | 
|  | 120 | +    if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then | 
|  | 121 | +         JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR" | 
|  | 122 | +    fi | 
|  | 123 | +  done | 
|  | 124 | +fi | 
|  | 125 | +]) | 
|  | 126 | + | 
|  | 127 | +# _ACJNI_FOLLOW_SYMLINKS <path> | 
|  | 128 | +# Follows symbolic links on <path>, | 
|  | 129 | +# finally setting variable _ACJNI_FOLLOWED | 
|  | 130 | +# ---------------------------------------- | 
|  | 131 | +AC_DEFUN([_ACJNI_FOLLOW_SYMLINKS],[ | 
|  | 132 | +# find the include directory relative to the javac executable | 
|  | 133 | +_cur="$1" | 
|  | 134 | +while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do | 
|  | 135 | +        AC_MSG_CHECKING([symlink for $_cur]) | 
|  | 136 | +        _slink=`ls -ld "$_cur" | sed 's/.* -> //'` | 
|  | 137 | +        case "$_slink" in | 
|  | 138 | +        /*) _cur="$_slink";; | 
|  | 139 | +        # 'X' avoids triggering unwanted echo options. | 
|  | 140 | +        *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";; | 
|  | 141 | +        esac | 
|  | 142 | +        AC_MSG_RESULT([$_cur]) | 
|  | 143 | +done | 
|  | 144 | +_ACJNI_FOLLOWED="$_cur" | 
|  | 145 | +])# _ACJNI | 
0 commit comments