Port: cleanup and portability fix to configure.ac
[lttng-tools.git] / m4 / ax_jni_include_dir.m4
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
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_ERROR([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*) _JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
70 _JINC="$_JTOPDIR/Headers";;
71 *) _JINC="$_JTOPDIR/include";;
72 esac
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 AC_CHECK_FILE([$_JINC/jni.h],
80 [JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JINC"],
81 [_JTOPDIR=`echo "$_JTOPDIR" | sed -e 's:/[[^/]]*$::'`
82 AC_CHECK_FILE([$_JTOPDIR/include/jni.h],
83 [JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include"],
84 AC_MSG_ERROR([cannot find JDK header files]))
85 ])
86
87 # get the likely subdirectories for system specific java includes
88 case "$host_os" in
89 bsdi*) _JNI_INC_SUBDIRS="bsdos";;
90 freebsd*) _JNI_INC_SUBDIRS="freebsd";;
91 linux*) _JNI_INC_SUBDIRS="linux genunix";;
92 osf*) _JNI_INC_SUBDIRS="alpha";;
93 solaris*) _JNI_INC_SUBDIRS="solaris";;
94 mingw*) _JNI_INC_SUBDIRS="win32";;
95 cygwin*) _JNI_INC_SUBDIRS="win32";;
96 *) _JNI_INC_SUBDIRS="genunix";;
97 esac
98
99 # add any subdirectories that are present
100 for JINCSUBDIR in $_JNI_INC_SUBDIRS
101 do
102 if test -d "$_JTOPDIR/include/$JINCSUBDIR"; then
103 JNI_INCLUDE_DIRS="$JNI_INCLUDE_DIRS $_JTOPDIR/include/$JINCSUBDIR"
104 fi
105 done
106 ])
107
108 # _ACJNI_FOLLOW_SYMLINKS <path>
109 # Follows symbolic links on <path>,
110 # finally setting variable _ACJNI_FOLLOWED
111 # ----------------------------------------
112 AC_DEFUN([_ACJNI_FOLLOW_SYMLINKS],[
113 # find the include directory relative to the javac executable
114 _cur="$1"
115 while ls -ld "$_cur" 2>/dev/null | grep " -> " >/dev/null; do
116 AC_MSG_CHECKING([symlink for $_cur])
117 _slink=`ls -ld "$_cur" | sed 's/.* -> //'`
118 case "$_slink" in
119 /*) _cur="$_slink";;
120 # 'X' avoids triggering unwanted echo options.
121 *) _cur=`echo "X$_cur" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$_slink";;
122 esac
123 AC_MSG_RESULT([$_cur])
124 done
125 _ACJNI_FOLLOWED="$_cur"
126 ])# _ACJNI
This page took 0.034094 seconds and 5 git commands to generate.