1# =========================================================================== 2# http://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 <dda@sleepycat.com> 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 10 48 49AU_ALIAS([AC_JNI_INCLUDE_DIR], [AX_JNI_INCLUDE_DIR]) 50AC_DEFUN([AX_JNI_INCLUDE_DIR],[ 51 52JNI_INCLUDE_DIRS="" 53 54if test "x$JAVA_HOME" != x; then 55 _JTOPDIR="$JAVA_HOME" 56else 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:/[[^/]]*$::'` 66fi 67 68case "$host_os" in 69 darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` 70 _JINC="$_JTOPDIR/Headers";; 71 *) _JINC="$_JTOPDIR/include";; 72esac 73_AS_ECHO_LOG([_JTOPDIR=$_JTOPDIR]) 74_AS_ECHO_LOG([_JINC=$_JINC]) 75 76# On Mac OS X 10.6.4, jni.h is a symlink: 77# /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/jni.h 78# -> ../../CurrentJDK/Headers/jni.h. 79 80AC_CACHE_CHECK(jni headers, ac_cv_jni_header_path, 81[ 82if test -f "$_JINC/jni.h"; then 83 ac_cv_jni_header_path="$_JINC" 84 JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $ac_cv_jni_header_path" 85else 86 _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` 87 if test -f "$_JTOPDIR/include/jni.h"; then 88 ac_cv_jni_header_path="$_JTOPDIR/include" 89 JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $ac_cv_jni_header_path" 90 else 91 ac_cv_jni_header_path=none 92 fi 93fi 94]) 95 96 97 98# get the likely subdirectories for system specific java includes 99case "$host_os" in 100bsdi*) _JNI_INC_SUBDIRS="bsdos";; 101darwin*) _JNI_INC_SUBDIRS="darwin";; 102freebsd*) _JNI_INC_SUBDIRS="freebsd";; 103linux*) _JNI_INC_SUBDIRS="linux genunix";; 104osf*) _JNI_INC_SUBDIRS="alpha";; 105solaris*) _JNI_INC_SUBDIRS="solaris";; 106mingw*) _JNI_INC_SUBDIRS="win32";; 107cygwin*) _JNI_INC_SUBDIRS="win32";; 108*) _JNI_INC_SUBDIRS="genunix";; 109esac 110 111if test "x$ac_cv_jni_header_path" != "xnone"; then 112 # add any subdirectories that are present 113 for JINCSUBDIR in $_JNI_INC_SUBDIRS 114 do 115 if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then 116 JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR" 117 fi 118 done 119fi 120]) 121 122# _ACJNI_FOLLOW_SYMLINKS <path> 123# Follows symbolic links on <path>, 124# finally setting variable _ACJNI_FOLLOWED 125# ---------------------------------------- 126AC_DEFUN([_ACJNI_FOLLOW_SYMLINKS],[ 127# find the include directory relative to the javac executable 128_cur="$1" 129while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do 130 AC_MSG_CHECKING([symlink for $_cur]) 131 _slink=`ls -ld "$_cur" | sed 's/.* -> //'` 132 case "$_slink" in 133 /*) _cur="$_slink";; 134 # 'X' avoids triggering unwanted echo options. 135 *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";; 136 esac 137 AC_MSG_RESULT([$_cur]) 138done 139_ACJNI_FOLLOWED="$_cur" 140])# _ACJNI 141