configure.in: Standardized help text case of --enable-hash-synchronization New config...
[gcc.git] / libjava / configure.in
1 dnl Process this with autoconf to create configure
2 AC_INIT(java/lang/System.java)
3
4 # This works around the fact that libtool configuration may change LD
5 # for this particular configuration, but some shells, instead of
6 # keeping the changes in LD private, export them just because LD is
7 # exported.
8 ORIGINAL_LD_FOR_MULTILIBS=$LD
9
10 AC_PROG_LN_S
11
12 dnl We use these options to decide which functions to include.
13 AC_ARG_WITH(target-subdir,
14 [ --with-target-subdir=SUBDIR
15 configuring in a subdirectory])
16 AC_ARG_WITH(cross-host,
17 [ --with-cross-host=HOST configuring with a cross compiler])
18
19 AC_ARG_WITH(newlib,
20 [ --with-newlib Configuring with newlib])
21
22 LIBGCJ_CONFIGURE(.)
23
24 AM_CONFIG_HEADER(include/config.h gcj/libgcj-config.h)
25
26 # Only use libltdl for non-newlib builds.
27 if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
28 AC_LIBLTDL_CONVENIENCE
29 AC_LIBTOOL_DLOPEN
30 DIRLTDL=libltdl
31 AC_DEFINE(USE_LTDL, 1, [Define if libltdl is in use.])
32 # Sigh. Libtool's macro doesn't do the right thing.
33 INCLTDL="-I\$(top_srcdir)/libltdl $INCLTDL"
34 # FIXME: this is a hack.
35 sub_auxdir="`cd $ac_aux_dir && ${PWDCMD-pwd}`"
36 ac_configure_args="$ac_configure_args --with-auxdir=$sub_auxdir"
37 fi
38 AC_SUBST(INCLTDL)
39 AC_SUBST(LIBLTDL)
40 AC_SUBST(DIRLTDL)
41 AM_PROG_LIBTOOL
42 AC_CONFIG_SUBDIRS($DIRLTDL)
43
44 if test -z "$with_target_subdir" || test "$with_target_subdir" = "."; then
45 COMPPATH=.
46 else
47 COMPPATH=..
48 fi
49 AC_SUBST(COMPPATH)
50
51 dnl The -no-testsuite modules omit the test subdir.
52 AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
53
54 dnl Should the runtime set system properties by examining the
55 dnl environment variable GCJ_PROPERTIES?
56 AC_ARG_ENABLE(getenv-properties,
57 [ --disable-getenv-properties
58 don't set system properties from GCJ_PROPERTIES])
59
60 dnl Whether GCJ_PROPERTIES is used depends on the target.
61 if test -z "$enable_getenv_properties"; then
62 enable_getenv_properties=${enable_getenv_properties_default-yes}
63 fi
64 if test "$enable_getenv_properties" = no; then
65 AC_DEFINE(DISABLE_GETENV_PROPERTIES, 1,
66 [Define if system properties shouldn't be read from getenv("GCJ_PROPERTIES").])
67 fi
68
69 dnl Whether we should use arguments to main()
70 if test -z "$enable_main_args"; then
71 enable_main_args=${enable_main_args_default-yes}
72 fi
73 if test "$enable_main_args" = no; then
74 AC_DEFINE(DISABLE_MAIN_ARGS, 1, [Define if we should ignore arguments to main().])
75 fi
76
77
78 dnl Should we use hashtable-based synchronization?
79 dnl Currently works only for Linux X86/ia64
80 dnl Typically faster and more space-efficient
81 AC_ARG_ENABLE(hash-synchronization,
82 [ --enable-hash-synchronization
83 use global hash table for monitor locks])
84
85 if test -z "$enable_hash_synchronization"; then
86 enable_hash_synchronization=$enable_hash_synchronization_default
87 fi
88
89 # Do we allow intermodule optimizations (i.e. compiling many files at once)?
90 AC_ARG_ENABLE(libgcj-multifile,
91 [ --enable-libgcj-multifile
92 allow compilation of several files at once],
93 [case "${enableval}" in
94 yes) enable_libgcj_multifile=yes ;;
95 no) enable_libgcj_multifile=no ;;
96 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libgcj-multifile) ;;
97 esac],[enable_libgcj_multifile=no])
98 AM_CONDITIONAL(ONESTEP, test "$enable_libgcj_multifile" = yes)
99
100 dnl configure.host sets slow_pthread_self if the synchronization code should
101 dnl try to avoid pthread_self calls by caching thread IDs in a hashtable.
102 if test "${slow_pthread_self}" = "yes"; then
103 AC_DEFINE(SLOW_PTHREAD_SELF, 1,
104 [Define if if the synchronization code should try to avoid pthread_self calls by caching thread IDs in a hashtable.])
105 fi
106
107
108 dnl See if the user has requested runtime debugging.
109 LIBGCJDEBUG="false"
110 AC_SUBST(LIBGCJDEBUG)
111 AC_ARG_ENABLE(libgcj-debug,
112 [ --enable-libgcj-debug enable runtime debugging code],
113 if test "$enable_libgcj_debug" = yes; then
114 AC_DEFINE(DEBUG, 1, [Define this if you want runtime debugging enabled.])
115 LIBGCJDEBUG="true"
116 fi)
117
118 dnl See if the user has the interpreter included.
119 AC_ARG_ENABLE(interpreter,
120 [ --enable-interpreter enable interpreter],
121 if test "$enable_interpreter" = yes; then
122 # This can also be set in configure.host.
123 libgcj_interpreter=yes
124 elif test "$enable_interpreter" = no; then
125 libgcj_interpreter=no
126 fi)
127
128 if test "$libgcj_interpreter" = yes; then
129 AC_DEFINE(INTERPRETER, 1, [Define if you want a bytecode interpreter.])
130 fi
131 INTERPRETER="$libgcj_interpreter"
132 AC_SUBST(INTERPRETER)
133
134 AC_MSG_CHECKING([for exception model to use])
135 AC_LANG_SAVE
136 AC_LANG_CPLUSPLUS
137 AC_ARG_ENABLE(sjlj-exceptions,
138 [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
139 [:],
140 [dnl Botheration. Now we've got to detect the exception model.
141 dnl Link tests against libgcc.a are problematic since -- at least
142 dnl as of this writing -- we've not been given proper -L bits for
143 dnl single-tree newlib and libgloss.
144 dnl
145 dnl This is what AC_TRY_COMPILE would do if it didn't delete the
146 dnl conftest files before we got a change to grep them first.
147 cat > conftest.$ac_ext << EOF
148 [#]line __oline__ "configure"
149 struct S { ~S(); };
150 void bar();
151 void foo()
152 {
153 S s;
154 bar();
155 }
156 EOF
157 old_CXXFLAGS="$CXXFLAGS"
158 CXXFLAGS=-S
159 if AC_TRY_EVAL(ac_compile); then
160 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
161 enable_sjlj_exceptions=yes
162 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
163 enable_sjlj_exceptions=no
164 fi
165 fi
166 CXXFLAGS="$old_CXXFLAGS"
167 rm -f conftest*])
168 if test x$enable_sjlj_exceptions = xyes; then
169 AC_DEFINE(SJLJ_EXCEPTIONS, 1,
170 [Define if the compiler is configured for setjmp/longjmp exceptions.])
171 ac_exception_model_name=sjlj
172 elif test x$enable_sjlj_exceptions = xno; then
173 ac_exception_model_name="call frame"
174 else
175 AC_MSG_ERROR([unable to detect exception model])
176 fi
177 AC_LANG_RESTORE
178 AC_MSG_RESULT($ac_exception_model_name)
179
180 # If we are non using SJLJ exceptions, and this host does not have support
181 # for unwinding from a signal handler, enable checked dereferences and divides.
182 if test $can_unwind_signal = no && test $enable_sjlj_exceptions = no; then
183 CHECKREFSPEC=-fcheck-references
184 DIVIDESPEC=-fuse-divide-subroutine
185 EXCEPTIONSPEC=
186 fi
187
188 dnl See if the user wants to disable java.net. This is the mildly
189 dnl ugly way that we admit that target-side configuration sucks.
190 AC_ARG_ENABLE(java-net,
191 [ --disable-java-net disable java.net])
192
193 dnl Whether java.net is built by default can depend on the target.
194 if test -z "$enable_java_net"; then
195 enable_java_net=${enable_java_net_default-yes}
196 fi
197 if test "$enable_java_net" = no; then
198 AC_DEFINE(DISABLE_JAVA_NET, 1, [Define if java.net native functions should be stubbed out.])
199 fi
200
201 dnl See if the user wants to configure without libffi. Some
202 dnl architectures don't support it, and default values are set in
203 dnl configure.host.
204 AC_ARG_WITH(libffi,
205 [ --without-libffi don't use libffi],,with_libffi=${with_libffi_default-yes})
206
207 LIBFFI=
208 LIBFFIINCS=
209 if test "$with_libffi" != no; then
210 AC_DEFINE(USE_LIBFFI, 1, [Define if we're to use libffi.])
211 LIBFFI=../libffi/libffi_convenience.la
212 LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I../libffi/include'
213 fi
214 AC_SUBST(LIBFFI)
215 AC_SUBST(LIBFFIINCS)
216
217 dnl See if the user wants to disable JVMPI support.
218 AC_ARG_ENABLE(jvmpi,
219 [ --disable-jvmpi disable JVMPI support])
220
221 if test "$enable_jvmpi" != no; then
222 AC_DEFINE(ENABLE_JVMPI, 1, [Define if you are using JVMPI.])
223 fi
224
225 dnl If the target is an eCos system, use the appropriate eCos
226 dnl I/O routines.
227 dnl FIXME: this should not be a local option but a global target
228 dnl system; at present there is no eCos target.
229 TARGET_ECOS=${PROCESS-"no"}
230 AC_ARG_WITH(ecos,
231 [ --with-ecos enable runtime eCos target support],
232 TARGET_ECOS="$with_ecos"
233 )
234
235 PLATFORMOBJS=
236 case "$TARGET_ECOS" in
237 no) case "$host" in
238 *mingw*)
239 PLATFORM=Win32
240 PLATFORMNET=Win32
241 PLATFORMOBJS=win32.lo
242 PLATFORMH=win32.h
243 CHECK_FOR_BROKEN_MINGW_LD
244 ;;
245 *)
246 PLATFORM=Posix
247 PLATFORMNET=Posix
248 PLATFORMOBJS=posix.lo
249 PLATFORMH=posix.h
250 ;;
251 esac
252 ;;
253 *)
254 PLATFORM=Ecos
255 PLATFORMNET=NoNet
256 AC_DEFINE(ECOS, 1, [Define if you're running eCos.])
257 PLATFORMOBJS=posix.lo
258 PLATFORMH=posix.h
259 ;;
260 esac
261 AC_SUBST(PLATFORMOBJS)
262 AC_LINK_FILES(include/$PLATFORMH, include/platform.h)
263
264 AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1,
265 [Define if you have int32_t and uint32_t.]))
266 AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1,
267 [Define if you have int32_t and uint32_t.]))
268 AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1,
269 [Define if you have u_int32_t]))
270 AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1,
271 [Define if you have u_int32_t]))
272
273
274 dnl These may not be defined in a non-ANS conformant embedded system.
275 dnl FIXME: Should these case a runtime exception in that case?
276 AC_EGREP_HEADER(mktime, time.h, AC_DEFINE(HAVE_MKTIME, 1,
277 [Define is you have 'mktime' in <time.h>]))
278 AC_EGREP_HEADER(localtime, time.h, AC_DEFINE(HAVE_LOCALTIME, 1,
279 [Define is you have 'localtime' in <time.h>]))
280
281 dnl Create the subdirectory for natFileDescriptor.cc, or the attempt
282 dnl to create the link will fail.
283 test -d java || mkdir java
284 test -d java/io || mkdir java/io
285 test -d gnu || mkdir gnu
286 AC_LINK_FILES(java/io/natFile${FILE-${PLATFORM}}.cc, java/io/natFile.cc)
287 AC_LINK_FILES(java/io/natFileDescriptor${FILE-${PLATFORM}}.cc, java/io/natFileDescriptor.cc)
288
289 dnl Likewise for ConcreteProcess.java and natConcreteProcess.cc.
290 test -d java/lang || mkdir java/lang
291 AC_LINK_FILES(java/lang/${PLATFORM}Process.java, java/lang/ConcreteProcess.java)
292 AC_LINK_FILES(java/lang/nat${PLATFORM}Process.cc, java/lang/natConcreteProcess.cc)
293
294 dnl Likewise for natInetAddress.cc and natNetworkInterface.cc.
295 test -d java/net || mkdir java/net
296 AC_LINK_FILES(java/net/natInetAddress${PLATFORMNET}.cc, java/net/natInetAddress.cc)
297 AC_LINK_FILES(java/net/natNetworkInterface${PLATFORMNET}.cc, java/net/natNetworkInterface.cc)
298
299 dnl Likewise for natPlainSocketImpl.cc and natPlainDatagramSocketImpl.ca.c
300 test -d gnu/java || mkdir gnu/java
301 test -d gnu/java/net || mkdir gnu/java/net
302 AC_LINK_FILES(gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc, gnu/java/net/natPlainSocketImpl.cc)
303 AC_LINK_FILES(gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc, gnu/java/net/natPlainDatagramSocketImpl.cc)
304
305 case "${host}" in
306 *mingw*)
307 SYSTEMSPEC="-lgdi32 -lwsock32 -lws2_32"
308 ;;
309 *)
310 SYSTEMSPEC=
311 ;;
312 esac
313 AC_SUBST(SYSTEMSPEC)
314
315 LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs"
316 AC_SUBST(LIBGCJTESTSPEC)
317
318 AC_ARG_WITH(system-zlib,
319 [ --with-system-zlib use installed libz])
320 ZLIBSPEC=
321 AC_SUBST(ZLIBSPEC)
322 ZLIBTESTSPEC=
323 AC_SUBST(ZLIBTESTSPEC)
324
325 AC_PATH_XTRA
326
327 dnl Determine which AWT peer libraries to build
328 AC_ARG_ENABLE(java-awt,
329 [ --enable-java-awt list of AWT peer implementations to be built])
330
331 peerlibs="`echo ${enable_java_awt} | tr ',' ' '`"
332 use_xlib_awt=""
333 use_gtk_awt=""
334 # The default toolkit to use is the first one specified.
335 TOOLKIT=
336 AC_SUBST(TOOLKIT)
337
338 for peer in $peerlibs ; do
339 case $peer in
340 xlib)
341 if test "$no_x" = yes; then
342 echo "*** xlib peers requested but no X library available" 1>&2
343 exit 1
344 else
345 use_xlib_awt="yes"
346 if test -z "$TOOLKIT"; then
347 TOOLKIT=gnu.awt.xlib.XToolkit
348 fi
349 fi
350 ;;
351 gtk)
352 if test "$no_x" = yes; then
353 echo "*** xlib peers requested but no X library available" 1>&2
354 exit 1
355 else
356 use_gtk_awt=yes
357 if test -z "$TOOLKIT"; then
358 TOOLKIT=gnu.java.awt.peer.gtk.GtkToolkit
359 fi
360 test -d jniinclude || mkdir jniinclude
361 fi
362 ;;
363 no)
364 use_xlib_awt=
365 use_gtk_awt=
366 break
367 ;;
368 *)
369 echo "*** unrecognised argument \"${peer}\" for --enable-java-awt" 1>&2
370 exit 1
371 esac
372 done
373
374 AM_CONDITIONAL(XLIB_AWT, test "$use_xlib_awt" = yes)
375 AM_CONDITIONAL(GTK_AWT, test "$use_gtk_awt" = yes)
376
377
378 dnl FIXME: this should be _libs on some hosts.
379 libsubdir=.libs
380
381 dnl Allow the GC to be disabled. Can be useful when debugging.
382 AC_MSG_CHECKING([for garbage collector to use])
383 AC_ARG_ENABLE(java-gc,
384 changequote(<<,>>)dnl
385 << --enable-java-gc=TYPE choose garbage collector [boehm]>>,
386 changequote([,])
387 GC=$enableval,
388 GC=boehm)
389 GCLIBS=
390 GCINCS=
391 GCDEPS=
392 GCOBJS=
393 GCSPEC=
394 JC1GCSPEC=
395 GCTESTSPEC=
396 case "$GC" in
397 boehm)
398 AC_MSG_RESULT(boehm)
399 GCLIBS=../boehm-gc/libgcjgc_convenience.la
400 JC1GCSPEC='-fuse-boehm-gc'
401 GCTESTSPEC="-L`${PWDCMD-pwd}`/../boehm-gc/.libs -rpath `${PWDCMD-pwd}`/../boehm-gc/.libs"
402
403 dnl We also want to pick up some cpp flags required when including
404 dnl boehm-config.h. Yuck.
405 GCINCS="`cat ../boehm-gc/boehm-cflags`"
406 GCOBJS=boehm.lo
407 GCHDR=boehm-gc.h
408 dnl The POSIX thread support needs to know this.
409 AC_DEFINE(HAVE_BOEHM_GC, 1, [Define if Boehm GC in use.])
410 ;;
411 no)
412 AC_MSG_RESULT(none)
413 GCOBJS=nogc.lo
414 GCHDR=no-gc.h
415 ;;
416 *)
417 AC_MSG_ERROR(unrecognized collector \"$GC\")
418 ;;
419 esac
420 AC_SUBST(GCLIBS)
421 AC_SUBST(GCINCS)
422 AC_SUBST(GCDEPS)
423 AC_SUBST(GCOBJS)
424 AC_SUBST(GCSPEC)
425 AC_SUBST(JC1GCSPEC)
426 AC_SUBST(GCTESTSPEC)
427 AC_LINK_FILES(include/$GCHDR, include/java-gc.h)
428
429
430 AC_MSG_CHECKING([for thread model used by GCC])
431 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
432 AC_MSG_RESULT([$THREADS])
433
434 case "$THREADS" in
435 no | none | single)
436 THREADS=none
437 ;;
438 posix | pthreads)
439 THREADS=posix
440 case "$host" in
441 *-*-linux*)
442 AC_DEFINE(LINUX_THREADS, 1, [Define if using POSIX threads on Linux.])
443 ;;
444 esac
445 ;;
446 win32)
447 ;;
448 decosf1 | irix | mach | os2 | solaris | dce | vxworks)
449 AC_MSG_ERROR(thread package $THREADS not yet supported)
450 ;;
451 *)
452 AC_MSG_ERROR($THREADS is an unknown thread package)
453 ;;
454 esac
455
456 THREADCXXFLAGS=
457 THREADLDFLAGS=
458 THREADLIBS=
459 THREADINCS=
460 THREADDEPS=
461 THREADOBJS=
462 THREADH=
463 THREADSPEC=
464 case "$THREADS" in
465 posix)
466 case "$host" in
467 *-*-cygwin*)
468 # Don't set THREADLIBS here. Cygwin doesn't have -lpthread.
469 ;;
470 changequote(<<,>>)
471 *-*-freebsd[1234]*)
472 changequote([,])
473 # Before FreeBSD 5, it didn't have -lpthread (or any library which
474 # merely adds pthread_* functions) but it does have a -pthread switch
475 # which is required at link-time to select -lc_r *instead* of -lc.
476 THREADLDFLAGS=-pthread
477 # Don't set THREADSPEC here as might be expected since -pthread is
478 # not processed when found within a spec file, it must come from
479 # the command line. For now, the user must provide the -pthread
480 # switch to link code compiled with gcj. In future, consider adding
481 # support for weak references to pthread_* functions ala gthr.h API.
482 THREADSPEC='%{!pthread: %eUnder this configuration, the user must provide -pthread when linking.}'
483 ;;
484 *-*-freebsd*)
485 # FreeBSD 5 implements a model much closer to other modern UNIX
486 # which support threads. However, it still does not support
487 # -lpthread.
488 THREADLDFLAGS=-pthread
489 THREADSPEC=-lc_r
490 ;;
491 alpha*-dec-osf*)
492 THREADCXXFLAGS=-pthread
493 # boehm-gc needs some functions from librt, so link that too.
494 THREADLIBS='-lpthread -lrt'
495 THREADSPEC='-lpthread -lrt'
496 ;;
497 *)
498 THREADLIBS=-lpthread
499 THREADSPEC=-lpthread
500 ;;
501 esac
502 THREADOBJS=posix-threads.lo
503 THREADH=posix-threads.h
504 # MIT pthreads doesn't seem to have the mutexattr functions.
505 # But for now we don't check for it. We just assume you aren't
506 # using MIT pthreads.
507 AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT, 1, [Define if using POSIX threads that have the mutexattr functions.])
508
509 # If we're using the Boehm GC, then we happen to know that it
510 # defines _REENTRANT, so we don't bother. Eww.
511 if test "$GC" != boehm; then
512 AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads])
513 fi
514 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Required define if using POSIX threads])
515 ;;
516
517 win32)
518 THREADOBJS=win32-threads.lo
519 THREADH=win32-threads.h
520 ;;
521
522 none)
523 THREADOBJS=no-threads.lo
524 THREADH=no-threads.h
525 ;;
526 esac
527 AC_LINK_FILES(include/$THREADH, include/java-threads.h)
528 AC_SUBST(THREADLIBS)
529 AC_SUBST(THREADINCS)
530 AC_SUBST(THREADDEPS)
531 AC_SUBST(THREADOBJS)
532 AC_SUBST(THREADSPEC)
533 AC_SUBST(THREADLDFLAGS)
534 AC_SUBST(THREADCXXFLAGS)
535
536 if test -d sysdep; then true; else mkdir sysdep; fi
537 AC_LINK_FILES(sysdep/$sysdeps_dir/locks.h, sysdep/locks.h)
538
539 HASH_SYNC_SPEC=
540 # Hash synchronization is only useful with posix threads right now.
541 if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then
542 HASH_SYNC_SPEC=-fhash-synchronization
543 AC_DEFINE(JV_HASH_SYNCHRONIZATION, 1, [Define if hash synchronization is in use])
544 fi
545 AC_SUBST(HASH_SYNC_SPEC)
546
547
548 AM_CONDITIONAL(USING_GCC, test "$GCC" = yes)
549
550 CANADIAN=no
551 NULL_TARGET=no
552 NATIVE=yes
553
554 # We're in the tree with gcc, and need to include some of its headers.
555 GCC_UNWIND_INCLUDE='-I$(libgcj_basedir)/../gcc'
556
557 # Figure out where generated headers like libgcj-config.h get installed.
558 changequote(,)dnl
559 gcc_version_trigger=${libgcj_basedir}/../gcc/version.c
560 gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
561 gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
562 tool_include_dir='$(libdir)/gcc/$(target_alias)/'${gcc_version}/include
563 changequote([,])dnl
564 AC_SUBST(tool_include_dir)
565 AC_SUBST(gcc_version)
566
567 if test "x${with_newlib}" = "xyes"; then
568 # We are being configured with a cross compiler. AC_REPLACE_FUNCS
569 # may not work correctly, because the compiler may not be able to
570 # link executables.
571
572 # We assume newlib. This lets us hard-code the functions we know
573 # we'll have.
574 AC_DEFINE(HAVE_MEMMOVE, 1, [Define if you have memmove.])
575 AC_DEFINE(HAVE_MEMCPY, 1, [Define if you have memcpy.])
576 AC_DEFINE(HAVE_STRERROR, 1, [Define if you have strerror.])
577 AC_DEFINE(HAVE_TIME, 1, [Define if you have time.])
578 AC_DEFINE(HAVE_GMTIME_R, 1, [Define if you have the 'gmtime_r' function])
579 AC_DEFINE(HAVE_LOCALTIME_R, 1, [Define if you have the 'localtime_r' function.])
580 dnl This is only for POSIX threads.
581 AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT, 1, [Define if using POSIX threads that have the mutexattr functions.])
582 dnl We also assume we are using gcc, which provides alloca.
583 AC_DEFINE(HAVE_ALLOCA)
584
585 dnl Assume we do not have getuid and friends.
586 AC_DEFINE(NO_GETUID, 1, [Define if getuid() and friends are missing.])
587 PLATFORMNET=NoNet
588 else
589 AC_CHECK_FUNCS(strerror ioctl select fstat open fsync sleep opendir)
590 AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r getcwd)
591 AC_CHECK_FUNCS(access stat mkdir rename rmdir unlink realpath utime chmod)
592 AC_CHECK_FUNCS(nl_langinfo setlocale)
593 AC_CHECK_FUNCS(inet_aton inet_addr, break)
594 AC_CHECK_FUNCS(inet_pton uname inet_ntoa)
595 AC_CHECK_FUNCS(fork execvp pipe sigaction ftruncate)
596 AC_CHECK_HEADERS(execinfo.h unistd.h dlfcn.h)
597 AC_CHECK_FUNC(backtrace, [
598 case "$host" in
599 ia64-*-linux*)
600 # Has broken backtrace()
601 ;;
602 *)
603 AC_DEFINE(HAVE_BACKTRACE, 1,
604 [Define if your platform has a working backtrace() function.])
605 ;;
606 esac
607 ], [
608 case "$host" in
609 *mingw*)
610 # Has backtrace() defined in libgcj itself
611 AC_DEFINE(HAVE_BACKTRACE, 1,
612 [Define if your platform has a working backtrace() function.])
613 ;;
614 esac
615 ])
616
617 AC_CHECK_LIB(dl, dladdr, [
618 AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])])
619 if test x"$build" = x"$host"; then
620 AC_CHECK_FILES(/proc/self/exe, [
621 AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])])
622 else
623 case $host in
624 *-linux*)
625 AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])
626 ;;
627 esac
628 fi
629
630 AM_ICONV
631 AM_LC_MESSAGES
632 AC_STRUCT_TIMEZONE
633
634 AC_CHECK_FUNCS(gethostbyname_r, [
635 AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1,
636 [Define if you have the 'gethostbyname_r' function.])
637 # There are two different kinds of gethostbyname_r.
638 # We look for the one that returns `int'.
639 # Hopefully this check is robust enough.
640 AC_EGREP_HEADER(int.*gethostbyname_r, netdb.h, [
641 AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT, 1, [Define if gethostbyname_r returns 'int'.])])
642
643 case " $GCINCS " in
644 *" -D_REENTRANT "*) ;;
645 *)
646 dnl On DU4.0, gethostbyname_r is only declared with -D_REENTRANT
647 AC_CACHE_CHECK([whether gethostbyname_r declaration requires -D_REENTRANT],
648 [libjava_cv_gethostbyname_r_needs_reentrant],
649 [ AC_LANG_SAVE
650 AC_LANG_CPLUSPLUS
651 AC_TRY_COMPILE([#include <netdb.h>],
652 [gethostbyname_r("", 0, 0);],
653 [libjava_cv_gethostbyname_r_needs_reentrant=no], [dnl
654 CPPFLAGS_SAVE="$CPPFLAGS"
655 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
656 AC_TRY_COMPILE([#include <netdb.h>], [gethostbyname_r("", 0, 0);],
657 [libjava_cv_gethostbyname_r_needs_reentrant=yes],
658 [libjava_cv_gethostbyname_r_needs_reentrant=fail])
659 CPPFLAGS="$CPPFLAGS_SAVE"
660 ])
661 AC_LANG_RESTORE
662 ])
663 if test "x$libjava_cv_gethostbyname_r_needs_reentrant" = xyes; then
664 AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads])
665 fi
666 ;;
667 esac
668
669 AC_CACHE_CHECK([for struct hostent_data],
670 [libjava_cv_struct_hostent_data], [dnl
671 AC_TRY_COMPILE([
672 #if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT)
673 # define _REENTRANT 1
674 #endif
675 #include <netdb.h>], [struct hostent_data data;],
676 [libjava_cv_struct_hostent_data=yes],
677 [libjava_cv_struct_hostent_data=no])])
678 if test "x$libjava_cv_struct_hostent_data" = xyes; then
679 AC_DEFINE(HAVE_STRUCT_HOSTENT_DATA, 1,
680 [Define if struct hostent_data is defined in netdb.h])
681 fi
682 ])
683
684 # FIXME: libjava source code expects to find a prototype for
685 # gethostbyaddr_r in netdb.h. The outer check ensures that
686 # HAVE_GETHOSTBYADDR_R will not be defined if the prototype fails
687 # to exist where expected. (The root issue: AC_CHECK_FUNCS assumes C
688 # linkage check is enough, yet C++ code requires proper prototypes.)
689 AC_EGREP_HEADER(gethostbyaddr_r, netdb.h, [
690 AC_CHECK_FUNCS(gethostbyaddr_r, [
691 AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1,
692 [Define if you have the 'gethostbyaddr_r' function.])
693 # There are two different kinds of gethostbyaddr_r.
694 # We look for the one that returns `int'.
695 # Hopefully this check is robust enough.
696 AC_EGREP_HEADER(int.*gethostbyaddr_r, netdb.h, [
697 AC_DEFINE(GETHOSTBYADDR_R_RETURNS_INT, 1,
698 [Define if gethostbyaddr_r returns 'int'.])])])])
699
700 AC_CHECK_FUNCS(gethostname, [
701 AC_DEFINE(HAVE_GETHOSTNAME, 1,
702 [Define if you have the 'gethostname' function.])
703 AC_EGREP_HEADER(gethostname, unistd.h, [
704 AC_DEFINE(HAVE_GETHOSTNAME_DECL, 1,
705 [Define if gethostname is declared in <unistd.h>.])])])
706
707 AC_CHECK_FUNCS(usleep, [
708 AC_EGREP_HEADER(usleep, unistd.h, [
709 AC_DEFINE(HAVE_USLEEP_DECL, 1,
710 [Define if usleep is declared in <unistd.h>.])])])
711
712 # Look for these functions in the thread library, but only bother
713 # if using POSIX threads.
714 if test "$THREADS" = posix; then
715 save_LIBS="$LIBS"
716 LIBS="$LIBS $THREADLIBS"
717 # Some POSIX thread systems don't have pthread_mutexattr_settype.
718 # E.g., Solaris.
719 AC_CHECK_FUNCS(pthread_mutexattr_settype pthread_mutexattr_setkind_np)
720
721 # Look for sched_yield. Up to Solaris 2.6, it is in libposix4, since
722 # Solaris 7 the name librt is preferred.
723 AC_CHECK_FUNCS(sched_yield, , [
724 AC_CHECK_LIB(rt, sched_yield, [
725 AC_DEFINE(HAVE_SCHED_YIELD)
726 THREADLIBS="$THREADLIBS -lrt"
727 THREADSPEC="$THREADSPEC -lrt"], [
728 AC_CHECK_LIB(posix4, sched_yield, [
729 AC_DEFINE(HAVE_SCHED_YIELD)
730 THREADLIBS="$THREADLIBS -lposix4"
731 THREADSPEC="$THREADSPEC -lposix4"])])])
732 LIBS="$save_LIBS"
733
734 # We can save a little space at runtime if the mutex has m_count
735 # or __m_count. This is a nice hack for Linux.
736 AC_TRY_COMPILE([#include <pthread.h>], [
737 extern pthread_mutex_t *mutex; int q = mutex->m_count;
738 ], AC_DEFINE(PTHREAD_MUTEX_HAVE_M_COUNT, 1,
739 [Define if pthread_mutex_t has m_count member.]), [
740 AC_TRY_COMPILE([#include <pthread.h>], [
741 extern pthread_mutex_t *mutex; int q = mutex->__m_count;
742 ], AC_DEFINE(PTHREAD_MUTEX_HAVE___M_COUNT, 1,
743 [Define if pthread_mutex_t has __m_count member.]))])
744 fi
745
746 # We require a way to get the time.
747 time_found=no
748 AC_CHECK_FUNCS(gettimeofday time ftime, time_found=yes)
749 if test "$time_found" = no; then
750 AC_MSG_ERROR([no function found to get the time])
751 fi
752
753 AC_CHECK_FUNCS(memmove)
754
755 # We require memcpy.
756 memcpy_found=no
757 AC_CHECK_FUNCS(memcpy, memcpy_found=yes)
758 if test "$memcpy_found" = no; then
759 AC_MSG_ERROR([memcpy is required])
760 fi
761
762 AC_CHECK_LIB(dl, dlopen, [
763 AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])])
764
765 # Some library-finding code we stole from Tcl.
766 #--------------------------------------------------------------------
767 # Check for the existence of the -lsocket and -lnsl libraries.
768 # The order here is important, so that they end up in the right
769 # order in the command line generated by make. Here are some
770 # special considerations:
771 # 1. Use "connect" and "accept" to check for -lsocket, and
772 # "gethostbyname" to check for -lnsl.
773 # 2. Use each function name only once: can't redo a check because
774 # autoconf caches the results of the last check and won't redo it.
775 # 3. Use -lnsl and -lsocket only if they supply procedures that
776 # aren't already present in the normal libraries. This is because
777 # IRIX 5.2 has libraries, but they aren't needed and they're
778 # bogus: they goof up name resolution if used.
779 # 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
780 # To get around this problem, check for both libraries together
781 # if -lsocket doesn't work by itself.
782 #--------------------------------------------------------------------
783
784 AC_CACHE_CHECK([for socket libraries], gcj_cv_lib_sockets,
785 [gcj_cv_lib_sockets=
786 gcj_checkBoth=0
787 unset ac_cv_func_connect
788 AC_CHECK_FUNC(connect, gcj_checkSocket=0, gcj_checkSocket=1)
789 if test "$gcj_checkSocket" = 1; then
790 unset ac_cv_func_connect
791 AC_CHECK_LIB(socket, main, gcj_cv_lib_sockets="-lsocket",
792 gcj_checkBoth=1)
793 fi
794 if test "$gcj_checkBoth" = 1; then
795 gcj_oldLibs=$LIBS
796 LIBS="$LIBS -lsocket -lnsl"
797 unset ac_cv_func_accept
798 AC_CHECK_FUNC(accept,
799 [gcj_checkNsl=0
800 gcj_cv_lib_sockets="-lsocket -lnsl"])
801 unset ac_cv_func_accept
802 LIBS=$gcj_oldLibs
803 fi
804 unset ac_cv_func_gethostbyname
805 gcj_oldLibs=$LIBS
806 LIBS="$LIBS $gcj_cv_lib_sockets"
807 AC_CHECK_FUNC(gethostbyname, ,
808 [AC_CHECK_LIB(nsl, main,
809 [gcj_cv_lib_sockets="$gcj_cv_lib_sockets -lnsl"])])
810 unset ac_cv_func_gethostbyname
811 LIBS=$gcj_oldLIBS
812 ])
813 SYSTEMSPEC="$SYSTEMSPEC $gcj_cv_lib_sockets"
814
815 if test "$with_system_zlib" = yes; then
816 AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=)
817 fi
818
819 # Test for Gtk stuff, if asked for.
820 if test "$use_gtk_awt" = yes; then
821 AM_PATH_GTK_2_0(2.0.0,,exit 1)
822 AM_PATH_GLIB_2_0(2.0.0,,exit 1,gthread)
823 dnl XXX Fix me when libart.m4 has the compile test fixed!
824 enable_libarttest=no
825 AM_PATH_LIBART(2.1.0,,exit 1)
826 fi
827
828 # On Solaris, and maybe other architectures, the Boehm collector
829 # requires -ldl.
830 if test "$GC" = boehm; then
831 AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl")
832 fi
833 fi
834
835 if test -z "${with_multisubdir}"; then
836 builddotdot=.
837 else
838 changequote(<<,>>)
839 builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`
840 changequote([,])
841 fi
842
843 # Which gcj do we use?
844 which_gcj=default
845 built_gcc_dir="`cd ${builddotdot}/../../gcc && ${PWDCMD-pwd}`"
846 if test -n "${with_cross_host}"; then
847 # We are being configured with a cross compiler. We can't
848 # use ac_exeext, because that is for the target platform.
849 NATIVE=no
850 cross_host_exeext=
851 case "${with_cross_host}" in
852 *mingw* | *cygwin*)
853 cross_host_exeext=.exe
854 ;;
855 esac
856 if test -x "${built_gcc_dir}/gcj${cross_host_exeext}"; then
857 if test x"$build_alias" = x"$with_cross_host"; then
858 # Ordinary cross (host!=target and host=build)
859 which_gcj=built
860 else
861 # Canadian cross (host!=target and host!=build)
862 which_gcj=cross
863 fi
864 else
865 which_gcj=cross
866 fi
867 else
868 # We are being configured with a native or crossed-native compiler
869 if test -x "${built_gcc_dir}/gcj${ac_exeext}"; then
870 if test x"$build" = x"$host"; then
871 # True native build (host=target and host=build)
872 which_gcj=built
873 else
874 # Crossed-native build (host=target and host!=build)
875 which_gcj=cross
876 fi
877 else
878 which_gcj=path
879 fi
880 fi
881 case "${which_gcj}" in
882 built)
883 GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/"
884 ;;
885 cross)
886 # See the comment in Makefile.am about CANADIAN being a misnomer
887 CANADIAN=yes
888 NULL_TARGET=no
889 if test "x${with_newlib}" = "xyes"; then
890 # FIXME (comment): Why is this needed?
891 GCC_UNWIND_INCLUDE=
892 GCJ="${target_alias}-gcj"
893 else
894 GCJ="${target_alias}-gcj -B`${PWDCMD-pwd}`/"
895 fi
896 ;;
897 path)
898 # See the comment in Makefile.am about CANADIAN being a misnomer
899 CANADIAN=yes
900 NULL_TARGET=yes
901 GCJ="gcj -B`${PWDCMD-pwd}`/"
902 ;;
903 esac
904
905 # Create it, so that compile/link tests don't fail
906 test -f libgcj.spec || touch libgcj.spec
907
908 # We must search the source tree for java.lang, since we still don't
909 # have libgcj.jar nor java/lang/*.class
910 GCJ_SAVE_CPPFLAGS=$CPPFLAGS
911 CPPFLAGS="$CPPFLAGS -I`${PWDCMD-pwd}` -I`cd $srcdir && ${PWDCMD-pwd}`"
912
913 # Since some classes depend on this one, we need its source available
914 # before we can do any GCJ compilation test :-(
915 if test ! -f gnu/classpath/Configuration.java; then
916 test -d gnu || mkdir gnu
917 test -d gnu/classpath || mkdir gnu/classpath
918 sed -e 's,@LIBGCJDEBUG@,$LIBGCJDEBUG,' \
919 -e 's,@TOOLKIT@,$TOOLKIT,' \
920 < $srcdir/gnu/classpath/Configuration.java.in \
921 > gnu/classpath/Configuration.java
922 # We do not want to redirect the output of the grep below to /dev/null,
923 # but we add /dev/null to the input list so that grep will print the
924 # filename of Configuration.java in case it finds any matches.
925 if grep @ gnu/classpath/Configuration.java /dev/null; then
926 AC_MSG_ERROR([configure.in is missing the substitutions above])
927 fi
928 fi
929
930 LT_AC_PROG_GCJ
931
932 CPPFLAGS=$GCJ_SAVE_CPPFLAGS
933
934 AC_COMPILE_CHECK_SIZEOF(void *)
935
936 ZLIBS=
937 SYS_ZLIBS=
938 ZINCS=
939
940 if test -z "$ZLIBSPEC"; then
941 # Use zlib from the GCC tree.
942 ZINCS='-I$(top_srcdir)/../zlib'
943 ZLIBS=../zlib/libzgcj_convenience.la
944 else
945 # System's zlib.
946 SYS_ZLIBS="$ZLIBSPEC"
947 fi
948 AC_SUBST(ZLIBS)
949 AC_SUBST(SYS_ZLIBS)
950 AC_SUBST(ZINCS)
951 AC_SUBST(DIVIDESPEC)
952 AC_SUBST(CHECKREFSPEC)
953 AC_SUBST(EXCEPTIONSPEC)
954 AC_SUBST(IEEESPEC)
955
956 AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
957 AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes)
958 AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes)
959 AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes)
960 AC_SUBST(GCC_UNWIND_INCLUDE)
961
962 if test -n "$with_cross_host" &&
963 test x"$with_cross_host" != x"no"; then
964 toolexecdir='$(exec_prefix)/$(target_alias)'
965 toolexecmainlibdir='$(toolexecdir)/lib'
966 else
967 toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
968 toolexecmainlibdir='$(libdir)'
969 fi
970 multi_os_directory=`$CC -print-multi-os-directory`
971 case $multi_os_directory in
972 .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
973 *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
974 esac
975 AC_SUBST(toolexecdir)
976 AC_SUBST(toolexecmainlibdir)
977 AC_SUBST(toolexeclibdir)
978
979 # Determine gcj version number.
980 changequote(<<,>>)
981 gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([^ ]*\).*$/\1/p'`
982 changequote([,])
983 GCJVERSION=$gcjversion
984 AC_SUBST(GCJVERSION)
985 AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERSION", [Short GCJ version ID])
986
987 dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there.
988 dnl On that system, sys/ioctl.h will not include sys/filio.h unless
989 dnl BSD_COMP is defined; just including sys/filio.h is simpler.
990 AC_CHECK_HEADERS(unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/filio.h sys/stat.h sys/select.h sys/socket.h netinet/in.h arpa/inet.h netdb.h net/if.h pwd.h sys/config.h stdint.h langinfo.h locale.h)
991 dnl We avoid AC_HEADER_DIRENT since we really only care about dirent.h
992 dnl for now. If you change this, you also must update natFile.cc.
993 AC_CHECK_HEADERS(dirent.h)
994 AC_CHECK_HEADERS(inttypes.h, [
995 AC_DEFINE(HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
996 AC_DEFINE(JV_HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
997 ])
998 AC_HEADER_SYS_WAIT
999
1000 AC_CHECK_TYPE([ssize_t], [int])
1001
1002 AC_MSG_CHECKING([for in_addr_t])
1003 AC_TRY_COMPILE([#include <sys/types.h>
1004 #if STDC_HEADERS
1005 #include <stdlib.h>
1006 #include <stddef.h>
1007 #endif
1008 #if HAVE_NETINET_IN_H
1009 #include <netinet/in.h>
1010 #endif], [in_addr_t foo;],
1011 [AC_DEFINE(HAVE_IN_ADDR_T, 1,
1012 [Define to 1 if 'in_addr_t' is defined in sys/types.h or netinet/in.h.])
1013 AC_MSG_RESULT(yes)],
1014 [AC_MSG_RESULT(no)])
1015
1016 AC_MSG_CHECKING([whether struct ip_mreq is in netinet/in.h])
1017 AC_TRY_COMPILE([#include <netinet/in.h>], [struct ip_mreq mreq;],
1018 [AC_DEFINE(HAVE_STRUCT_IP_MREQ, 1,
1019 [Define if struct ip_mreq is defined in netinet/in.h.])
1020 AC_MSG_RESULT(yes)],
1021 [AC_MSG_RESULT(no)])
1022
1023 AC_MSG_CHECKING([whether struct ipv6_mreq is in netinet/in.h])
1024 AC_TRY_COMPILE([#include <netinet/in.h>], [struct ipv6_mreq mreq6;],
1025 [AC_DEFINE(HAVE_STRUCT_IPV6_MREQ, 1,
1026 [Define if struct ipv6_mreq is defined in netinet/in.h.])
1027 AC_MSG_RESULT(yes)],
1028 [AC_MSG_RESULT(no)])
1029
1030 AC_MSG_CHECKING([whether struct sockaddr_in6 is in netinet/in.h])
1031 AC_TRY_COMPILE([#include <netinet/in.h>], [struct sockaddr_in6 addr6;],
1032 [AC_DEFINE(HAVE_INET6, 1,
1033 [Define if inet6 structures are defined in netinet/in.h.])
1034 AC_MSG_RESULT(yes)],
1035 [AC_MSG_RESULT(no)])
1036
1037 AC_MSG_CHECKING([for socklen_t in sys/socket.h])
1038 AC_TRY_COMPILE([#define _POSIX_PII_SOCKET
1039 #include <sys/types.h>
1040 #include <sys/socket.h>], [socklen_t x = 5;],
1041 [AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define it socklen_t typedef is in sys/socket.h.])
1042 AC_MSG_RESULT(yes)],
1043 [AC_MSG_RESULT(no)])
1044
1045 AC_MSG_CHECKING([for tm_gmtoff in struct tm])
1046 AC_TRY_COMPILE([#include <time.h>], [struct tm tim; tim.tm_gmtoff = 0;],
1047 [AC_DEFINE(STRUCT_TM_HAS_GMTOFF, 1, [Define if struct tm has tm_gmtoff field.])
1048 AC_MSG_RESULT(yes)],
1049 [AC_MSG_RESULT(no)
1050 AC_MSG_CHECKING([for global timezone variable])
1051 dnl FIXME: we don't want a link check here because that won't work
1052 dnl when cross-compiling. So instead we make an assumption that
1053 dnl the header file will mention timezone if it exists.
1054 dnl Don't find the win32 function timezone
1055 AC_TRY_COMPILE([#include <time.h>], [void i(){long z2 = 2*timezone;}],
1056 [AC_DEFINE(HAVE_TIMEZONE, 1, [Define if global 'timezone' exists.])
1057 AC_MSG_RESULT(yes)],
1058 [AC_MSG_RESULT(no)
1059 AC_MSG_CHECKING([for global _timezone variable])
1060 dnl FIXME: As above, don't want link check
1061 AC_TRY_COMPILE([#include <time.h>], [long z2 = _timezone;],
1062 [AC_DEFINE(HAVE_UNDERSCORE_TIMEZONE, 1,
1063 [Define if your platform has the global _timezone variable.])
1064 AC_MSG_RESULT(yes)],
1065 [AC_MSG_RESULT(no)])])])
1066
1067 AC_FUNC_ALLOCA
1068 AC_FUNC_MMAP
1069
1070 AC_CHECK_PROGS(PERL, perl, false)
1071
1072 SYSDEP_SOURCES=
1073
1074 case "${host}" in
1075 i?86-*-linux*)
1076 SIGNAL_HANDLER=include/i386-signal.h
1077 ;;
1078 sparc*-sun-solaris*)
1079 SIGNAL_HANDLER=include/sparc-signal.h
1080 ;;
1081 # ia64-*)
1082 # SYSDEP_SOURCES=sysdep/ia64.c
1083 # test -d sysdep || mkdir sysdep
1084 # ;;
1085 ia64-*-linux*)
1086 SIGNAL_HANDLER=include/dwarf2-signal.h
1087 ;;
1088 powerpc-*-linux*)
1089 SIGNAL_HANDLER=include/powerpc-signal.h
1090 ;;
1091 alpha*-*-linux*)
1092 SIGNAL_HANDLER=include/dwarf2-signal.h
1093 ;;
1094 s390*-*-linux*)
1095 SIGNAL_HANDLER=include/s390-signal.h
1096 ;;
1097 x86_64*-*-linux*)
1098 SIGNAL_HANDLER=include/x86_64-signal.h
1099 ;;
1100 sparc*-*-linux*)
1101 SIGNAL_HANDLER=include/dwarf2-signal.h
1102 ;;
1103 sh-*-linux* | sh[[34]]*-*-linux*)
1104 SIGNAL_HANDLER=include/dwarf2-signal.h
1105 ;;
1106 *mingw*)
1107 SIGNAL_HANDLER=include/win32-signal.h
1108 ;;
1109 *)
1110 SIGNAL_HANDLER=include/default-signal.h
1111 ;;
1112 esac
1113
1114 # If we're using sjlj exceptions, forget what we just learned.
1115 if test "$enable_sjlj_exceptions" = yes; then
1116 SIGNAL_HANDLER=include/default-signal.h
1117 fi
1118
1119 # Define here any compiler flags that you need in order to make backtrace() work.
1120 BACKTRACESPEC=
1121 case "${host}" in
1122 x86_64*-*-linux*)
1123 BACKTRACESPEC=-fno-omit-frame-pointer
1124 ;;
1125 esac
1126 AC_SUBST(BACKTRACESPEC)
1127
1128 AC_SUBST(SYSDEP_SOURCES)
1129
1130 AC_LINK_FILES($SIGNAL_HANDLER, include/java-signal.h)
1131
1132 if test "${multilib}" = "yes"; then
1133 multilib_arg="--enable-multilib"
1134 else
1135 multilib_arg=
1136 fi
1137
1138
1139
1140 here=`${PWDCMD-pwd}`
1141 AC_SUBST(here)
1142
1143 # We get this from the environment.
1144 AC_SUBST(GCJFLAGS)
1145
1146 AC_OUTPUT(Makefile libgcj.pc libgcj.spec libgcj-test.spec gnu/classpath/Configuration.java gcj/Makefile include/Makefile testsuite/Makefile,
1147 [# Only add multilib support code if we just rebuilt top-level Makefile.
1148 case " $CONFIG_FILES " in
1149 *" Makefile "*)
1150 LD="${ORIGINAL_LD_FOR_MULTILIBS}"
1151 ac_file=Makefile . ${libgcj_basedir}/../config-ml.in
1152 ;;
1153 esac
1154
1155 # Make subdirectories and `.d' files. Look in both srcdir and
1156 # builddir for the .java files.
1157 h=`${PWDCMD-pwd}`
1158 : > deps.mk
1159 ( (cd $srcdir && find . \( -name '*.java' -o -name '*.cc' -o -name '*.c' \) -print) ;
1160 find . \( -name '*.java' -o -name '*.cc' -o -name '*.c' \) -print) | \
1161 fgrep -v testsuite | \
1162 sed -e 's/\.java/.d/'\;'s/\.cc/.d/'\;'s/\.c/.d/' | \
1163 while read f; do
1164 echo "include $f" >> deps.mk
1165 test -f $f || {
1166 changequote(<<,>>)
1167 d=`echo $f | sed -e 's,/[^/]*$,,'`
1168 changequote([,])
1169 if test ! -d $d; then
1170 $libgcj_basedir/../mkinstalldirs $d
1171 fi;
1172 echo > $f
1173 }
1174 done
1175 ],
1176 srcdir=${srcdir}
1177 host=${host}
1178 target=${target}
1179 with_multisubdir=${with_multisubdir}
1180 ac_configure_args="${multilib_arg} ${ac_configure_args}"
1181 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
1182 libgcj_basedir=${libgcj_basedir}
1183 CC="${CC}"
1184 CXX="${CXX}"
1185 ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
1186 )