nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | # javacomp.m4 serial 12 |
2 | dnl Copyright (C) 2001-2003, 2006-2007, 2009-2016 Free Software Foundation, |
||
3 | dnl Inc. |
||
4 | dnl This file is free software; the Free Software Foundation |
||
5 | dnl gives unlimited permission to copy and/or distribute it, |
||
6 | dnl with or without modifications, as long as this notice is preserved. |
||
7 | |||
8 | # Prerequisites of javacomp.sh. |
||
9 | # gt_JAVACOMP([source-version], [target-version]) |
||
10 | # Sets HAVE_JAVACOMP to nonempty if javacomp.sh will allow Java source code |
||
11 | # according to source-version to be compiled to Java bytecode classes in the |
||
12 | # target-version format. |
||
13 | # |
||
14 | # source-version can be: support for |
||
15 | # 1.3 inner classes |
||
16 | # 1.4 assert keyword |
||
17 | # 1.5 generic classes and methods |
||
18 | # 1.6 (not yet supported) |
||
19 | # |
||
20 | # target-version can be: classfile version: |
||
21 | # 1.1 45.3 |
||
22 | # 1.2 46.0 |
||
23 | # 1.3 47.0 |
||
24 | # 1.4 48.0 |
||
25 | # 1.5 49.0 |
||
26 | # 1.6 50.0 |
||
27 | # The classfile version of a .class file can be determined through the "file" |
||
28 | # command. More portably, the classfile major version can be determined through |
||
29 | # "od -A n -t d1 -j 7 -N 1 classfile". |
||
30 | # target-version can also be omitted. In this case, the required target-version |
||
31 | # is determined from the found JVM (see macro gt_JAVAEXEC): |
||
32 | # target-version for JVM |
||
33 | # 1.1 JDK 1.1, jview |
||
34 | # 1.2 JDK/JRE 1.2 |
||
35 | # 1.3 JDK/JRE 1.3, gij 3.3, 3.4 |
||
36 | # 1.4 JDK/JRE 1.4, gij 4.0, 4.1 |
||
37 | # 1.5 JDK/JRE 1.5 |
||
38 | # 1.6 JDK/JRE 1.6 |
||
39 | # Note: gij >= 3.3 can in some cases handle classes compiled with -target 1.4, |
||
40 | # and gij >= 4.1 can in some cases partially handle classes compiled with |
||
41 | # -target 1.5, but I have no idea how complete this support is. |
||
42 | # |
||
43 | # Specifying target-version is useful when building a library (.jar) that is |
||
44 | # useful outside the given package. Omitting target-version is useful when |
||
45 | # building an application. |
||
46 | # |
||
47 | # It is unreasonable to ask for: |
||
48 | # - target-version < 1.4 with source-version >= 1.4, or |
||
49 | # - target-version < 1.5 with source-version >= 1.5, or |
||
50 | # - target-version < 1.6 with source-version >= 1.6, |
||
51 | # because even Sun's javac doesn't support these combinations. |
||
52 | # |
||
53 | # It is redundant to ask for a target-version > source-version, since the |
||
54 | # smaller target-version = source-version will also always work and newer JVMs |
||
55 | # support the older target-versions too. Except for the case |
||
56 | # target-version = 1.4, source-version = 1.3, which allows gcj versions 3.0 |
||
57 | # to 3.2 to be used. |
||
58 | |||
59 | AC_DEFUN([gt_JAVACOMP], |
||
60 | [ |
||
61 | ifelse([$2], [], [AC_REQUIRE([gt_JAVAEXEC])], []) |
||
62 | AC_EGREP_CPP([yes], [ |
||
63 | #if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ |
||
64 | yes |
||
65 | #endif |
||
66 | ], CLASSPATH_SEPARATOR=';', CLASSPATH_SEPARATOR=':') |
||
67 | source_version=$1 |
||
68 | test -n "$source_version" || { |
||
69 | AC_MSG_ERROR([missing source-version argument to gt_@&t@JAVACOMP]) |
||
70 | } |
||
71 | ifelse([$2], [], |
||
72 | [if test -n "$HAVE_JAVAEXEC"; then |
||
73 | dnl Use $CONF_JAVA to determine the JVM's version. |
||
74 | changequote(,)dnl |
||
75 | cat > conftestver.java <<EOF |
||
76 | public class conftestver { |
||
77 | public static void main (String[] args) { |
||
78 | System.out.println(System.getProperty("java.specification.version")); |
||
79 | } |
||
80 | } |
||
81 | EOF |
||
82 | changequote([,])dnl |
||
83 | dnl A precompiled version of conftestver.java, compiled with |
||
84 | dnl "javac -target 1.1". This avoids having to compile conftestver.java |
||
85 | dnl during each test for a suitable Java compiler. |
||
86 | dnl For the conversion from binary to this ASCII encapsulation, avoiding |
||
87 | dnl to assume the presence of uudecode, use the command |
||
88 | dnl $ od -A n -t o1 < conftestver.class | tr ' ' '\012'| sort | uniq | sed -e '/^$/d' -e 's,^,\\,' | tr -d '\012' |
||
89 | dnl and the long tr command in opposite direction. |
||
90 | dnl Finally move the position corresponding to \055 to the last position, |
||
91 | dnl to work around a coreutils-5.x bug. |
||
92 | echo 'yzwx!$!I!D,!)!3+!4!5*!6,!4!7,!8!9)!:)!;"!(MeienN"!$FGW"!%Ojab"!2QeibRohZblVYZgb"!%hYei"!9FXQfYpYKgYidKUnleidLGW"!,Ujol_bPegb"!3_jicnbmnpblJfYpY/!*!+)!</!=!>"!=fYpYJmkb_ece_YnejiJpblmeji/!?!@)!A/!B!C"!._jicnbmnpbl"!3fYpYKgYidKSZfb_n"!3fYpYKgYidKUqmnbh"!$jon"!8QfYpYKejKTleinUnlbYhL"!.dbnTljkblnq"!EFQfYpYKgYidKUnleidLGQfYpYKgYidKUnleidL"!6fYpYKejKTleinUnlbYh"!)kleingi"!8FQfYpYKgYidKUnleidLGW!D!(!)!!!!!#!"!*!+!"!,!!!@!"!"!!!&Hu!"r!!!"!.!!!(!"!!!"!+!/!0!"!,!!!F!#!"!!!/s!#5$v!%t!&r!!!"!.!!!,!#!!!$!.!%!"!1!!!#!2' \ |
||
93 | | tr -d '\012\015' \ |
||
94 | | tr '!"#$%&()*+,./0123456789:;<=>?@ABCDEFGHJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzI' '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\046\050\051\052\056\057\073\074\076\103\106\114\116\117\120\123\124\126\133\141\142\143\144\145\146\147\151\152\154\155\156\157\160\162\163\164\165\166\171\261\262\266\267\270\272\276\312\376\055' \ |
||
95 | > conftestver.class |
||
96 | target_version=`{ |
||
97 | unset JAVA_HOME |
||
98 | echo "$as_me:__oline__: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&AS_MESSAGE_LOG_FD |
||
99 | CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver 2>&AS_MESSAGE_LOG_FD |
||
100 | }` |
||
101 | case "$target_version" in |
||
102 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6) ;; |
||
103 | null) |
||
104 | dnl JDK 1.1.X returns null. |
||
105 | target_version=1.1 ;; |
||
106 | *) AC_MSG_WARN([unknown target-version $target_version, please update gt_@&t@JAVACOMP macro]) |
||
107 | target_version=1.1 ;; |
||
108 | esac |
||
109 | else |
||
110 | target_version="1.1" |
||
111 | fi |
||
112 | ], |
||
113 | [target_version=$2]) |
||
114 | case "$source_version" in |
||
115 | 1.3) goodcode='class conftest {}' |
||
116 | failcode='class conftestfail { static { assert(true); } }' ;; |
||
117 | 1.4) goodcode='class conftest { static { assert(true); } }' |
||
118 | failcode='class conftestfail<T> { T foo() { return null; } }' ;; |
||
119 | 1.5) goodcode='class conftest<T> { T foo() { return null; } }' |
||
120 | failcode='class conftestfail syntax error' ;; |
||
121 | *) AC_MSG_ERROR([invalid source-version argument to gt_@&t@JAVACOMP: $source_version]) ;; |
||
122 | esac |
||
123 | case "$target_version" in |
||
124 | 1.1) cfversion=45 ;; |
||
125 | 1.2) cfversion=46 ;; |
||
126 | 1.3) cfversion=47 ;; |
||
127 | 1.4) cfversion=48 ;; |
||
128 | 1.5) cfversion=49 ;; |
||
129 | 1.6) cfversion=50 ;; |
||
130 | *) AC_MSG_ERROR([invalid target-version argument to gt_@&t@JAVACOMP: $target_version]) ;; |
||
131 | esac |
||
132 | # Function to output the classfile version of a file (8th byte) in decimal. |
||
133 | if od -A x < /dev/null >/dev/null 2>/dev/null; then |
||
134 | # Use POSIX od. |
||
135 | func_classfile_version () |
||
136 | { |
||
137 | od -A n -t d1 -j 7 -N 1 "[$]1" |
||
138 | } |
||
139 | else |
||
140 | # Use BSD hexdump. |
||
141 | func_classfile_version () |
||
142 | { |
||
143 | dd if="[$]1" bs=1 count=1 skip=7 2>/dev/null | hexdump -e '1/1 "%3d "' |
||
144 | echo |
||
145 | } |
||
146 | fi |
||
147 | AC_MSG_CHECKING([for Java compiler]) |
||
148 | dnl |
||
149 | dnl The support of GNU gcj for target-version and source-version: |
||
150 | dnl |
||
151 | dnl gcj 3.0.4 to 4.2 does not have a way to specify the target-version. |
||
152 | dnl It always assumes target-version=1.4 but labels the class files as 1.1. |
||
153 | dnl One consequence of this is that gcj compiles GetURL.java to invalid |
||
154 | dnl bytecode, which crashes with a VerifyError when executed by Sun Java |
||
155 | dnl 1.3.1. The bug is registered as java/7066, see |
||
156 | dnl http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7066 |
||
157 | dnl gcj 4.3 and newer has an option -ftarget=1.X. |
||
158 | dnl |
||
159 | dnl For gcj < 3.3, the source-version always is 1.3. |
||
160 | dnl For 3.3 <= gcj < 4.3, the source-version defaults to 1.4; option |
||
161 | dnl "-fno-assert" switches to source-version 1.3. |
||
162 | dnl gcj >= 4.3 has an option -fsource=1.X. |
||
163 | dnl |
||
164 | dnl The support of Sun javac for target-version and source-version: |
||
165 | dnl |
||
166 | dnl javac 1.3: -target 1.1 1.2 1.3 default: 1.1 |
||
167 | dnl source always: 1.3 |
||
168 | dnl |
||
169 | dnl javac 1.4: -target 1.1 1.2 1.3 1.4 default: 1.2 |
||
170 | dnl -source 1.3 1.4 default: 1.3 |
||
171 | dnl -target 1.1/1.2/1.3 only possible with -source 1.3 or no -source |
||
172 | dnl |
||
173 | dnl javac 1.5: -target 1.1 1.2 1.3 1.4 1.5 default: 1.5 |
||
174 | dnl -source 1.3 1.4 1.5 default: 1.5 |
||
175 | dnl -target 1.1/1.2/1.3 only possible with -source 1.3 |
||
176 | dnl -target 1.4 only possible with -source 1.3/1.4 |
||
177 | dnl |
||
178 | dnl javac 1.6: -target 1.1 1.2 1.3 1.4 1.5 1.6 default: 1.6 |
||
179 | dnl -source 1.3 1.4 1.5 1.6 default: 1.5 |
||
180 | dnl -target 1.1/1.2/1.3 only possible with -source 1.3 |
||
181 | dnl -target 1.4 only possible with -source 1.3/1.4 |
||
182 | dnl -target 1.5 only possible with -source 1.3/1.4/1.5 or no -source |
||
183 | dnl |
||
184 | dnl The support of jikes for target-version and source-version: |
||
185 | dnl |
||
186 | dnl jikes 1.14 does not have a way to specify the target-version. It |
||
187 | dnl always assumes target-version=1.1. |
||
188 | dnl |
||
189 | dnl For jikes 1.14, the source-version always is 1.3. |
||
190 | dnl |
||
191 | CONF_JAVAC= |
||
192 | HAVE_JAVAC_ENVVAR= |
||
193 | HAVE_GCJ_C= |
||
194 | HAVE_JAVAC= |
||
195 | HAVE_JIKES= |
||
196 | HAVE_JAVACOMP= |
||
197 | changequote(,)dnl |
||
198 | cat > conftestlib.java <<EOF |
||
199 | public class conftestlib { |
||
200 | public static void main (String[] args) { |
||
201 | } |
||
202 | } |
||
203 | EOF |
||
204 | changequote([,])dnl |
||
205 | echo "$goodcode" > conftest.java |
||
206 | echo "$failcode" > conftestfail.java |
||
207 | dnl If the user has set the JAVAC environment variable, use that, if it |
||
208 | dnl satisfies the constraints (possibly after adding -target and -source |
||
209 | dnl options). |
||
210 | if test -n "$JAVAC"; then |
||
211 | dnl Try the original $JAVAC. |
||
212 | if $JAVAC --version 2>/dev/null | sed -e 1q | grep gcj > /dev/null; then |
||
213 | dnl It's a version of gcj. |
||
214 | changequote(,)dnl |
||
215 | if $JAVAC --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then |
||
216 | changequote([,])dnl |
||
217 | dnl It's a version of gcj >= 4.3. Assume the classfile versions are correct. |
||
218 | dnl Try $JAVAC. |
||
219 | rm -f conftest.class |
||
220 | if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
221 | $JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
222 | } \ |
||
223 | && test -f conftest.class \ |
||
224 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
225 | dnl Try adding -fsource option if it is useful. |
||
226 | rm -f conftest.class |
||
227 | rm -f conftestfail.class |
||
228 | if { echo "$as_me:__oline__: $JAVAC -fsource=$source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
229 | $JAVAC -fsource="$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
230 | } \ |
||
231 | && test -f conftest.class \ |
||
232 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \ |
||
233 | && { echo "$as_me:__oline__: $JAVAC -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
234 | $JAVAC -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
235 | } \ |
||
236 | && test -f conftestfail.class \ |
||
237 | && ! { echo "$as_me:__oline__: $JAVAC -fsource=$source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
238 | $JAVAC -fsource="$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
239 | }; then |
||
240 | CONF_JAVAC="$JAVAC -fsource=$source_version" |
||
241 | HAVE_JAVAC_ENVVAR=1 |
||
242 | HAVE_JAVACOMP=1 |
||
243 | else |
||
244 | CONF_JAVAC="$JAVAC" |
||
245 | HAVE_JAVAC_ENVVAR=1 |
||
246 | HAVE_JAVACOMP=1 |
||
247 | fi |
||
248 | else |
||
249 | dnl Try with -fsource and -ftarget options. |
||
250 | rm -f conftest.class |
||
251 | rm -f conftestfail.class |
||
252 | if { echo "$as_me:__oline__: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
253 | $JAVAC -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
254 | } \ |
||
255 | && test -f conftest.class \ |
||
256 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
257 | CONF_JAVAC="$JAVAC -fsource=$source_version -ftarget=$target_version" |
||
258 | HAVE_JAVAC_ENVVAR=1 |
||
259 | HAVE_JAVACOMP=1 |
||
260 | fi |
||
261 | fi |
||
262 | else |
||
263 | dnl It's a version of gcj < 4.3. Ignore the version of conftest.class. |
||
264 | if test "$target_version" = 1.4 && test "$source_version" = 1.4; then |
||
265 | dnl Try $JAVAC. |
||
266 | rm -f conftest.class |
||
267 | if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
268 | $JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
269 | } \ |
||
270 | && test -f conftest.class; then |
||
271 | CONF_JAVAC="$JAVAC" |
||
272 | HAVE_JAVAC_ENVVAR=1 |
||
273 | HAVE_JAVACOMP=1 |
||
274 | fi |
||
275 | else |
||
276 | if test "$target_version" = 1.4 && test "$source_version" = 1.3; then |
||
277 | dnl Try $JAVAC and "$JAVAC -fno-assert". But add -fno-assert only if |
||
278 | dnl it makes a difference. (It could already be part of $JAVAC.) |
||
279 | javac_works= |
||
280 | rm -f conftest.class |
||
281 | if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
282 | $JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
283 | } \ |
||
284 | && test -f conftest.class; then |
||
285 | javac_works=1 |
||
286 | fi |
||
287 | javac_noassert_works= |
||
288 | rm -f conftest.class |
||
289 | if { echo "$as_me:__oline__: $JAVAC -fno-assert -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
290 | $JAVAC -fno-assert -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
291 | } \ |
||
292 | && test -f conftest.class; then |
||
293 | javac_noassert_works=1 |
||
294 | fi |
||
295 | if test -n "$javac_works" && test -n "$javac_noassert_works"; then |
||
296 | rm -f conftestfail.class |
||
297 | if { echo "$as_me:__oline__: $JAVAC -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
298 | $JAVAC -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
299 | } \ |
||
300 | && test -f conftestfail.class \ |
||
301 | && ! { echo "$as_me:__oline__: $JAVAC -fno-assert -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
302 | $JAVAC -fno-assert -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
303 | }; then |
||
304 | dnl "$JAVAC -fno-assert" works better than $JAVAC. |
||
305 | javac_works= |
||
306 | fi |
||
307 | fi |
||
308 | if test -n "$javac_works"; then |
||
309 | CONF_JAVAC="$JAVAC" |
||
310 | HAVE_JAVAC_ENVVAR=1 |
||
311 | HAVE_JAVACOMP=1 |
||
312 | else |
||
313 | if test -n "$javac_noassert_works"; then |
||
314 | CONF_JAVAC="$JAVAC -fno-assert" |
||
315 | HAVE_JAVAC_ENVVAR=1 |
||
316 | HAVE_JAVACOMP=1 |
||
317 | fi |
||
318 | fi |
||
319 | fi |
||
320 | fi |
||
321 | fi |
||
322 | else |
||
323 | dnl It's not gcj. Assume the classfile versions are correct. |
||
324 | dnl Try $JAVAC. |
||
325 | rm -f conftest.class |
||
326 | if { echo "$as_me:__oline__: $JAVAC -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
327 | $JAVAC -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
328 | } \ |
||
329 | && test -f conftest.class \ |
||
330 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
331 | dnl Try adding -source option if it is useful. |
||
332 | rm -f conftest.class |
||
333 | rm -f conftestfail.class |
||
334 | if { echo "$as_me:__oline__: $JAVAC -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
335 | $JAVAC -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
336 | } \ |
||
337 | && test -f conftest.class \ |
||
338 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \ |
||
339 | && { echo "$as_me:__oline__: $JAVAC -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
340 | $JAVAC -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
341 | } \ |
||
342 | && test -f conftestfail.class \ |
||
343 | && ! { echo "$as_me:__oline__: $JAVAC -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
344 | $JAVAC -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
345 | }; then |
||
346 | CONF_JAVAC="$JAVAC -source $source_version" |
||
347 | HAVE_JAVAC_ENVVAR=1 |
||
348 | HAVE_JAVACOMP=1 |
||
349 | else |
||
350 | CONF_JAVAC="$JAVAC" |
||
351 | HAVE_JAVAC_ENVVAR=1 |
||
352 | HAVE_JAVACOMP=1 |
||
353 | fi |
||
354 | else |
||
355 | dnl Try with -target option alone. (Sun javac 1.3.1 has the -target |
||
356 | dnl option but no -source option.) |
||
357 | rm -f conftest.class |
||
358 | if { echo "$as_me:__oline__: $JAVAC -target $target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
359 | $JAVAC -target "$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
360 | } \ |
||
361 | && test -f conftest.class \ |
||
362 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
363 | dnl Try adding -source option if it is useful. |
||
364 | rm -f conftest.class |
||
365 | rm -f conftestfail.class |
||
366 | if { echo "$as_me:__oline__: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
367 | $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
368 | } \ |
||
369 | && test -f conftest.class \ |
||
370 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \ |
||
371 | && { echo "$as_me:__oline__: $JAVAC -target $target_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
372 | $JAVAC -target "$target_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
373 | } \ |
||
374 | && test -f conftestfail.class \ |
||
375 | && ! { echo "$as_me:__oline__: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
376 | $JAVAC -target "$target_version" -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
377 | }; then |
||
378 | CONF_JAVAC="$JAVAC -target $target_version -source $source_version" |
||
379 | HAVE_JAVAC_ENVVAR=1 |
||
380 | HAVE_JAVACOMP=1 |
||
381 | else |
||
382 | CONF_JAVAC="$JAVAC -target $target_version" |
||
383 | HAVE_JAVAC_ENVVAR=1 |
||
384 | HAVE_JAVACOMP=1 |
||
385 | fi |
||
386 | else |
||
387 | dnl Maybe this -target option requires a -source option? Try with |
||
388 | dnl -target and -source options. (Supported by Sun javac 1.4 and |
||
389 | dnl higher.) |
||
390 | rm -f conftest.class |
||
391 | if { echo "$as_me:__oline__: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
392 | $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
393 | } \ |
||
394 | && test -f conftest.class \ |
||
395 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
396 | CONF_JAVAC="$JAVAC -target $target_version -source $source_version" |
||
397 | HAVE_JAVAC_ENVVAR=1 |
||
398 | HAVE_JAVACOMP=1 |
||
399 | fi |
||
400 | fi |
||
401 | fi |
||
402 | fi |
||
403 | fi |
||
404 | if test -z "$HAVE_JAVACOMP"; then |
||
405 | pushdef([AC_MSG_CHECKING],[:])dnl |
||
406 | pushdef([AC_CHECKING],[:])dnl |
||
407 | pushdef([AC_MSG_RESULT],[:])dnl |
||
408 | AC_CHECK_PROG([HAVE_GCJ_IN_PATH], [gcj], [yes]) |
||
409 | AC_CHECK_PROG([HAVE_JAVAC_IN_PATH], [javac], [yes]) |
||
410 | AC_CHECK_PROG([HAVE_JIKES_IN_PATH], [jikes], [yes]) |
||
411 | popdef([AC_MSG_RESULT])dnl |
||
412 | popdef([AC_CHECKING])dnl |
||
413 | popdef([AC_MSG_CHECKING])dnl |
||
414 | if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_GCJ_IN_PATH"; then |
||
415 | dnl Test for a good gcj version (>= 3.0). |
||
416 | changequote(,)dnl |
||
417 | if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^3\.[01]/d' | grep '^[3-9]' >/dev/null; then |
||
418 | changequote([,])dnl |
||
419 | dnl See if libgcj.jar is well installed. |
||
420 | if { echo "$as_me:__oline__: gcj -C -d . conftestlib.java" >&AS_MESSAGE_LOG_FD |
||
421 | gcj -C -d . conftestlib.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
422 | }; then |
||
423 | dnl OK, gcj works. |
||
424 | changequote(,)dnl |
||
425 | if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then |
||
426 | changequote([,])dnl |
||
427 | dnl It's a version of gcj >= 4.3. Assume the classfile versions are correct. |
||
428 | dnl Try gcj. |
||
429 | rm -f conftest.class |
||
430 | if { echo "$as_me:__oline__: gcj -C -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
431 | gcj -C -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
432 | } \ |
||
433 | && test -f conftest.class \ |
||
434 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
435 | dnl Try adding -fsource option if it is useful. |
||
436 | rm -f conftest.class |
||
437 | rm -f conftestfail.class |
||
438 | if { echo "$as_me:__oline__: gcj -C -fsource=$source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
439 | gcj -C -fsource="$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
440 | } \ |
||
441 | && test -f conftest.class \ |
||
442 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \ |
||
443 | && { echo "$as_me:__oline__: gcj -C -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
444 | gcj -C -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
445 | } \ |
||
446 | && test -f conftestfail.class \ |
||
447 | && ! { echo "$as_me:__oline__: gcj -C -fsource=$source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
448 | gcj -C -fsource="$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
449 | }; then |
||
450 | CONF_JAVAC="gcj -C -fsource=$source_version" |
||
451 | HAVE_JAVAC_ENVVAR=1 |
||
452 | HAVE_JAVACOMP=1 |
||
453 | else |
||
454 | CONF_JAVAC="gcj -C" |
||
455 | HAVE_JAVAC_ENVVAR=1 |
||
456 | HAVE_JAVACOMP=1 |
||
457 | fi |
||
458 | else |
||
459 | dnl Try with -fsource and -ftarget options. |
||
460 | rm -f conftest.class |
||
461 | rm -f conftestfail.class |
||
462 | if { echo "$as_me:__oline__: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
463 | gcj -C -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
464 | } \ |
||
465 | && test -f conftest.class \ |
||
466 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
467 | CONF_JAVAC="gcj -C -fsource=$source_version -ftarget=$target_version" |
||
468 | HAVE_JAVAC_ENVVAR=1 |
||
469 | HAVE_JAVACOMP=1 |
||
470 | fi |
||
471 | fi |
||
472 | else |
||
473 | dnl It's a version of gcj < 4.3. Ignore the version of conftest.class. |
||
474 | dnl Now test whether it supports the desired target-version and |
||
475 | dnl source-version. |
||
476 | if test "$target_version" = 1.4 && test "$source_version" = 1.4; then |
||
477 | rm -f conftest.class |
||
478 | if { echo "$as_me:__oline__: gcj -C -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
479 | gcj -C -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
480 | } \ |
||
481 | && test -f conftest.class; then |
||
482 | CONF_JAVAC="gcj -C" |
||
483 | HAVE_GCJ_C=1 |
||
484 | HAVE_JAVACOMP=1 |
||
485 | fi |
||
486 | else |
||
487 | if test "$target_version" = 1.4 && test "$source_version" = 1.3; then |
||
488 | dnl Try gcj and "gcj -fno-assert". But add -fno-assert only if |
||
489 | dnl it works (not gcj < 3.3). |
||
490 | rm -f conftest.class |
||
491 | if { echo "$as_me:__oline__: gcj -C -fno-assert -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
492 | gcj -C -fno-assert -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
493 | } \ |
||
494 | && test -f conftest.class; then |
||
495 | CONF_JAVAC="gcj -C -fno-assert" |
||
496 | HAVE_GCJ_C=1 |
||
497 | HAVE_JAVACOMP=1 |
||
498 | else |
||
499 | rm -f conftest.class |
||
500 | if { echo "$as_me:__oline__: gcj -C -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
501 | gcj -C -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
502 | } \ |
||
503 | && test -f conftest.class; then |
||
504 | CONF_JAVAC="gcj -C" |
||
505 | HAVE_GCJ_C=1 |
||
506 | HAVE_JAVACOMP=1 |
||
507 | fi |
||
508 | fi |
||
509 | fi |
||
510 | fi |
||
511 | fi |
||
512 | fi |
||
513 | fi |
||
514 | fi |
||
515 | if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_JAVAC_IN_PATH"; then |
||
516 | dnl Test whether javac is usable. |
||
517 | if { javac -version >/dev/null 2>/dev/null || test $? -le 2; } \ |
||
518 | && ( if javac -help 2>&1 >/dev/null | grep at.dms.kjc.Main >/dev/null && javac -help 2>/dev/null | grep 'released.*2000' >/dev/null ; then exit 1; else exit 0; fi ); then |
||
519 | dnl OK, javac works. |
||
520 | dnl Now test whether it supports the desired target-version and |
||
521 | dnl source-version. |
||
522 | rm -f conftest.class |
||
523 | if { echo "$as_me:__oline__: javac -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
524 | javac -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
525 | } \ |
||
526 | && test -f conftest.class \ |
||
527 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
528 | dnl Try adding -source option if it is useful. |
||
529 | rm -f conftest.class |
||
530 | rm -f conftestfail.class |
||
531 | if { echo "$as_me:__oline__: javac -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
532 | javac -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
533 | } \ |
||
534 | && test -f conftest.class \ |
||
535 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \ |
||
536 | && { echo "$as_me:__oline__: javac -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
537 | javac -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
538 | } \ |
||
539 | && test -f conftestfail.class \ |
||
540 | && ! { echo "$as_me:__oline__: javac -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
541 | javac -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
542 | }; then |
||
543 | CONF_JAVAC="javac -source $source_version" |
||
544 | HAVE_JAVAC=1 |
||
545 | HAVE_JAVACOMP=1 |
||
546 | else |
||
547 | CONF_JAVAC="javac" |
||
548 | HAVE_JAVAC=1 |
||
549 | HAVE_JAVACOMP=1 |
||
550 | fi |
||
551 | else |
||
552 | dnl Try with -target option alone. (Sun javac 1.3.1 has the -target |
||
553 | dnl option but no -source option.) |
||
554 | rm -f conftest.class |
||
555 | if { echo "$as_me:__oline__: javac -target $target_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
556 | javac -target "$target_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
557 | } \ |
||
558 | && test -f conftest.class \ |
||
559 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
560 | dnl Try adding -source option if it is useful. |
||
561 | rm -f conftest.class |
||
562 | rm -f conftestfail.class |
||
563 | if { echo "$as_me:__oline__: javac -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
564 | javac -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
565 | } \ |
||
566 | && test -f conftest.class \ |
||
567 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD \ |
||
568 | && { echo "$as_me:__oline__: javac -target $target_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
569 | javac -target "$target_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
570 | } \ |
||
571 | && test -f conftestfail.class \ |
||
572 | && ! { echo "$as_me:__oline__: javac -target $target_version -source $source_version -d . conftestfail.java" >&AS_MESSAGE_LOG_FD |
||
573 | javac -target "$target_version" -source "$source_version" -d . conftestfail.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
574 | }; then |
||
575 | CONF_JAVAC="javac -target $target_version -source $source_version" |
||
576 | HAVE_JAVAC=1 |
||
577 | HAVE_JAVACOMP=1 |
||
578 | else |
||
579 | CONF_JAVAC="javac -target $target_version" |
||
580 | HAVE_JAVAC=1 |
||
581 | HAVE_JAVACOMP=1 |
||
582 | fi |
||
583 | else |
||
584 | dnl Maybe this -target option requires a -source option? Try with |
||
585 | dnl -target and -source options. (Supported by Sun javac 1.4 and |
||
586 | dnl higher.) |
||
587 | rm -f conftest.class |
||
588 | if { echo "$as_me:__oline__: javac -target $target_version -source $source_version -d . conftest.java" >&AS_MESSAGE_LOG_FD |
||
589 | javac -target "$target_version" -source "$source_version" -d . conftest.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
590 | } \ |
||
591 | && test -f conftest.class \ |
||
592 | && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&AS_MESSAGE_LOG_FD; then |
||
593 | CONF_JAVAC="javac -target $target_version -source $source_version" |
||
594 | HAVE_JAVAC=1 |
||
595 | HAVE_JAVACOMP=1 |
||
596 | fi |
||
597 | fi |
||
598 | fi |
||
599 | fi |
||
600 | fi |
||
601 | if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_JIKES_IN_PATH"; then |
||
602 | dnl Test whether jikes is usable. |
||
603 | if { jikes >/dev/null 2>/dev/null || test $? = 1; } \ |
||
604 | && ( |
||
605 | # See if the existing CLASSPATH is sufficient to make jikes work. |
||
606 | unset JAVA_HOME |
||
607 | jikes conftestlib.java >&AS_MESSAGE_LOG_FD 2>&1 |
||
608 | error=$? |
||
609 | rm -f conftestlib.class |
||
610 | exit $error |
||
611 | ); then |
||
612 | dnl OK, jikes works. |
||
613 | dnl Now test whether it supports the desired target-version and |
||
614 | dnl source-version. |
||
615 | if test "$source_version" = 1.3; then |
||
616 | CONF_JAVAC="jikes" |
||
617 | HAVE_JIKES=1 |
||
618 | HAVE_JAVACOMP=1 |
||
619 | fi |
||
620 | fi |
||
621 | fi |
||
622 | fi |
||
623 | rm -f conftest*.java conftest*.class |
||
624 | if test -n "$HAVE_JAVACOMP"; then |
||
625 | ac_result="$CONF_JAVAC" |
||
626 | else |
||
627 | ac_result="no" |
||
628 | fi |
||
629 | AC_MSG_RESULT([$ac_result]) |
||
630 | AC_SUBST([CONF_JAVAC]) |
||
631 | AC_SUBST([CLASSPATH]) |
||
632 | AC_SUBST([CLASSPATH_SEPARATOR]) |
||
633 | AC_SUBST([HAVE_JAVAC_ENVVAR]) |
||
634 | AC_SUBST([HAVE_GCJ_C]) |
||
635 | AC_SUBST([HAVE_JAVAC]) |
||
636 | AC_SUBST([HAVE_JIKES]) |
||
637 | ]) |