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