1dnl @synopsis AX_JAVAC_AND_JAVA
2dnl @synopsis AX_CHECK_JAVA_CLASS(CLASSNAME)
3dnl
4dnl Test for the presence of a JDK, and (optionally) specific classes.
5dnl
6dnl If "JAVA" is defined in the environment, that will be the only
7dnl java command tested.  Otherwise, a hard-coded list will be used.
8dnl Similarly for "JAVAC".
9dnl
10dnl AX_JAVAC_AND_JAVA does not currently support testing for a particular
11dnl Java version, testing for only one of "java" and "javac", or
12dnl compiling or running user-provided Java code.
13dnl
14dnl After AX_JAVAC_AND_JAVA runs, the shell variables "success" and
15dnl "ax_javac_and_java" are set to "yes" or "no", and "JAVAC" and
16dnl "JAVA" are set to the appropriate commands.
17dnl
18dnl AX_CHECK_JAVA_CLASS must be run after AX_JAVAC_AND_JAVA.
19dnl It tests for the presence of a class based on a fully-qualified name.
20dnl It sets the shell variable "success" to "yes" or "no".
21dnl
22dnl @category Java
23dnl @version 2009-02-09
24dnl @license AllPermissive
25dnl
26dnl Copyright (C) 2009 David Reiss
27dnl Copying and distribution of this file, with or without modification,
28dnl are permitted in any medium without royalty provided the copyright
29dnl notice and this notice are preserved.
30
31
32AC_DEFUN([AX_JAVAC_AND_JAVA],
33         [
34
35          dnl Hard-coded default commands to test.
36          JAVAC_PROGS="javac,jikes,gcj -C"
37          JAVA_PROGS="java,kaffe"
38
39          dnl Allow the user to specify an alternative.
40          if test -n "$JAVAC" ; then
41            JAVAC_PROGS="$JAVAC"
42          fi
43          if test -n "$JAVA" ; then
44            JAVA_PROGS="$JAVA"
45          fi
46
47          AC_MSG_CHECKING(for javac and java)
48
49          echo "public class configtest_ax_javac_and_java { public static void main(String args@<:@@:>@) { } }" > configtest_ax_javac_and_java.java
50          success=no
51          oIFS="$IFS"
52
53          IFS=","
54          for JAVAC in $JAVAC_PROGS ; do
55            IFS="$oIFS"
56
57            echo "Running \"$JAVAC configtest_ax_javac_and_java.java\"" >&AS_MESSAGE_LOG_FD
58            if $JAVAC configtest_ax_javac_and_java.java >&AS_MESSAGE_LOG_FD 2>&1 ; then
59
60              # prevent $JAVA VM issues with UTF-8 path names (THRIFT-3271)
61              oLC_ALL="$LC_ALL"
62              LC_ALL=""
63
64              IFS=","
65              for JAVA in $JAVA_PROGS ; do
66                IFS="$oIFS"
67
68                echo "Running \"$JAVA configtest_ax_javac_and_java\"" >&AS_MESSAGE_LOG_FD
69                if $JAVA configtest_ax_javac_and_java >&AS_MESSAGE_LOG_FD 2>&1 ; then
70                  success=yes
71                  break 2
72                fi
73
74              done
75
76              # restore LC_ALL
77              LC_ALL="$oLC_ALL"
78              oLC_ALL=""
79
80            fi
81
82          done
83
84          rm -f configtest_ax_javac_and_java.java configtest_ax_javac_and_java.class
85
86          if test "$success" != "yes" ; then
87            AC_MSG_RESULT(no)
88            JAVAC=""
89            JAVA=""
90          else
91            AC_MSG_RESULT(yes)
92          fi
93
94          ax_javac_and_java="$success"
95
96          ])
97
98
99AC_DEFUN([AX_CHECK_JAVA_CLASS],
100         [
101          AC_MSG_CHECKING(for Java class [$1])
102
103          echo "import $1; public class configtest_ax_javac_and_java { public static void main(String args@<:@@:>@) { } }" > configtest_ax_javac_and_java.java
104
105          echo "Running \"$JAVAC configtest_ax_javac_and_java.java\"" >&AS_MESSAGE_LOG_FD
106          if $JAVAC configtest_ax_javac_and_java.java >&AS_MESSAGE_LOG_FD 2>&1 ; then
107            AC_MSG_RESULT(yes)
108            success=yes
109          else
110            AC_MSG_RESULT(no)
111            success=no
112          fi
113
114          rm -f configtest_ax_javac_and_java.java configtest_ax_javac_and_java.class
115          ])
116
117
118AC_DEFUN([AX_CHECK_ANT_VERSION],
119         [
120          AC_MSG_CHECKING(for ant version > $2)
121          ANT_VALID=`expr "x$(printf "$2\n$($1 -version 2>/dev/null | sed -n 's/.*version \(@<:@0-9\.@:>@*\).*/\1/p')" | sort -t '.' -k 1,1 -k 2,2 -k 3,3 -g | sed -n 1p)" = "x$2"`
122          if test "x$ANT_VALID" = "x1" ; then
123            AC_MSG_RESULT(yes)
124          else
125            AC_MSG_RESULT(no)
126            ANT=""
127          fi
128          ])
129
130