]> Git Repo - secp256k1.git/blob - build-aux/m4/ax_jni_include_dir.m4
cdc78d87d48b09d45830e47a70f59219c3fee2ce
[secp256k1.git] / build-aux / m4 / ax_jni_include_dir.m4
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
This page took 0.022643 seconds and 2 git commands to generate.