dnl @synopsis AC_JNI_INCLUDE_DIR dnl dnl AC_JNI_INCLUDE_DIR finds include directories needed for compiling dnl programs using the JNI interface. dnl dnl JNI include directories are usually in the java distribution This dnl is deduced from the value of JAVAC. When this macro completes, a dnl list of directories is left in the variable JNI_INCLUDE_DIRS. dnl dnl Example usage follows: dnl dnl AC_JNI_INCLUDE_DIR dnl dnl for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS dnl do dnl CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR" dnl done dnl dnl If you want to force a specific compiler: dnl dnl - at the configure.in level, set JAVAC=yourcompiler before calling dnl AC_JNI_INCLUDE_DIR dnl dnl - at the configure level, setenv JAVAC dnl dnl Note: This macro can work with the autoconf M4 macros for Java dnl programs. This particular macro is not part of the original set of dnl macros. dnl dnl @category InstalledPackages dnl @author Don Anderson dnl @version 2006-05-27 dnl @license AllPermissive AC_DEFUN([AC_JNI_INCLUDE_DIR],[ JNI_INCLUDE_DIRS="" test "x$JAVAC" = x && AC_MSG_ERROR(['\$JAVAC' undefined]) AC_PATH_PROG(_ACJNI_JAVAC, $JAVAC, no) test "x$_ACJNI_JAVAC" = xno && AC_MSG_ERROR([$JAVAC could not be found in path]) _ACJNI_FOLLOW_SYMLINKS("$_ACJNI_JAVAC") _JTOPDIR=`echo "$_ACJNI_FOLLOWED" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'` case "$host_os" in darwin*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` _JINC="$_JTOPDIR/Headers";; *) _JINC="$_JTOPDIR/include";; esac if test -f "$_JINC/jni.h"; then JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC" else _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'` if test -f "$_JTOPDIR/include/jni.h"; then JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include" else AC_MSG_ERROR([cannot find java include files]) fi fi # get the likely subdirectories for system specific java includes case "$host_os" in bsdi*) _JNI_INC_SUBDIRS="bsdos";; linux*) _JNI_INC_SUBDIRS="linux genunix";; osf*) _JNI_INC_SUBDIRS="alpha";; solaris*) _JNI_INC_SUBDIRS="solaris";; mingw*) _JNI_INC_SUBDIRS="win32";; cygwin*) _JNI_INC_SUBDIRS="win32";; *) _JNI_INC_SUBDIRS="genunix";; esac # add any subdirectories that are present for JINCSUBDIR in $_JNI_INC_SUBDIRS do if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR" fi done ]) # _ACJNI_FOLLOW_SYMLINKS # Follows symbolic links on , # finally setting variable _ACJNI_FOLLOWED # -------------------- AC_DEFUN([_ACJNI_FOLLOW_SYMLINKS],[ # find the include directory relative to the javac executable _cur="$1" while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do AC_MSG_CHECKING(symlink for $_cur) _slink=`ls -ld "$_cur" | sed 's/.* -> //'` case "$_slink" in /*) _cur="$_slink";; # 'X' avoids triggering unwanted echo options. *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";; esac AC_MSG_RESULT($_cur) done _ACJNI_FOLLOWED="$_cur" ])# _ACJNI