OSDN Git Service

Another newlib fix.
[pf3gnuchains/gcc-fork.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    AC_DEFINE(HAVE_USLEEP_DECL, 1, [Define if usleep is declared in <unistd.h>.])
581    dnl This is only for POSIX threads.
582    AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT, 1, [Define if using POSIX threads that have the mutexattr functions.])
583    dnl We also assume we are using gcc, which provides alloca.
584    AC_DEFINE(HAVE_ALLOCA)
585
586    dnl Assume we do not have getuid and friends.
587    AC_DEFINE(NO_GETUID, 1, [Define if getuid() and friends are missing.])
588    PLATFORMNET=NoNet
589 else
590    AC_CHECK_FUNCS(strerror ioctl select fstat open fsync sleep opendir)
591    AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r getcwd)
592    AC_CHECK_FUNCS(access stat mkdir rename rmdir unlink realpath utime chmod)
593    AC_CHECK_FUNCS(nl_langinfo setlocale)
594    AC_CHECK_FUNCS(inet_aton inet_addr, break)
595    AC_CHECK_FUNCS(inet_pton uname inet_ntoa)
596    AC_CHECK_FUNCS(fork execvp pipe sigaction ftruncate)
597    AC_CHECK_HEADERS(execinfo.h unistd.h dlfcn.h) 
598    AC_CHECK_FUNC(backtrace, [
599      case "$host" in
600        ia64-*-linux*)
601          # Has broken backtrace()
602          ;;
603        *)
604          AC_DEFINE(HAVE_BACKTRACE, 1,
605            [Define if your platform has a working backtrace() function.])
606          ;;
607      esac
608    ], [
609      case "$host" in
610        *mingw*)
611          # Has backtrace() defined in libgcj itself
612          AC_DEFINE(HAVE_BACKTRACE, 1,
613            [Define if your platform has a working backtrace() function.])
614          ;;
615      esac
616    ])
617
618    AC_CHECK_LIB(dl, dladdr, [
619      AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])])
620    if test x"$build" = x"$host"; then
621      AC_CHECK_FILES(/proc/self/exe, [
622        AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])])
623    else
624      case $host in
625      *-linux*)
626        AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])
627        ;;
628      esac
629    fi
630
631    AM_ICONV
632    AM_LC_MESSAGES
633    AC_STRUCT_TIMEZONE
634
635    AC_CHECK_FUNCS(gethostbyname_r, [
636      AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1,
637        [Define if you have the 'gethostbyname_r' function.])
638      # There are two different kinds of gethostbyname_r.
639      # We look for the one that returns `int'.
640      # Hopefully this check is robust enough.
641      AC_EGREP_HEADER(int.*gethostbyname_r, netdb.h, [
642        AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT, 1, [Define if gethostbyname_r returns 'int'.])])
643
644      case " $GCINCS " in
645      *" -D_REENTRANT "*) ;;
646      *)
647         dnl On DU4.0, gethostbyname_r is only declared with -D_REENTRANT
648         AC_CACHE_CHECK([whether gethostbyname_r declaration requires -D_REENTRANT],
649         [libjava_cv_gethostbyname_r_needs_reentrant],
650         [ AC_LANG_SAVE
651           AC_LANG_CPLUSPLUS
652           AC_TRY_COMPILE([#include <netdb.h>],
653             [gethostbyname_r("", 0, 0);],
654             [libjava_cv_gethostbyname_r_needs_reentrant=no], [dnl
655                 CPPFLAGS_SAVE="$CPPFLAGS"
656                 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
657                 AC_TRY_COMPILE([#include <netdb.h>], [gethostbyname_r("", 0, 0);],
658                     [libjava_cv_gethostbyname_r_needs_reentrant=yes],
659                     [libjava_cv_gethostbyname_r_needs_reentrant=fail])
660                 CPPFLAGS="$CPPFLAGS_SAVE"
661           ])
662           AC_LANG_RESTORE
663         ])
664         if test "x$libjava_cv_gethostbyname_r_needs_reentrant" = xyes; then
665           AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads])
666         fi
667      ;;
668      esac
669
670      AC_CACHE_CHECK([for struct hostent_data],
671         [libjava_cv_struct_hostent_data], [dnl
672         AC_TRY_COMPILE([
673 #if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT)
674 # define _REENTRANT 1
675 #endif
676 #include <netdb.h>], [struct hostent_data data;],
677           [libjava_cv_struct_hostent_data=yes],
678           [libjava_cv_struct_hostent_data=no])])
679      if test "x$libjava_cv_struct_hostent_data" = xyes; then
680        AC_DEFINE(HAVE_STRUCT_HOSTENT_DATA, 1,
681          [Define if struct hostent_data is defined in netdb.h])
682      fi
683    ])
684
685    # FIXME: libjava source code expects to find a prototype for
686    # gethostbyaddr_r in netdb.h.  The outer check ensures that
687    # HAVE_GETHOSTBYADDR_R will not be defined if the prototype fails
688    # to exist where expected.  (The root issue: AC_CHECK_FUNCS assumes C
689    # linkage check is enough, yet C++ code requires proper prototypes.)
690    AC_EGREP_HEADER(gethostbyaddr_r, netdb.h, [
691    AC_CHECK_FUNCS(gethostbyaddr_r, [
692      AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1,
693        [Define if you have the 'gethostbyaddr_r' function.])
694      # There are two different kinds of gethostbyaddr_r.
695      # We look for the one that returns `int'.
696      # Hopefully this check is robust enough.
697      AC_EGREP_HEADER(int.*gethostbyaddr_r, netdb.h, [
698        AC_DEFINE(GETHOSTBYADDR_R_RETURNS_INT, 1,
699          [Define if gethostbyaddr_r returns 'int'.])])])])
700
701    AC_CHECK_FUNCS(gethostname, [
702      AC_DEFINE(HAVE_GETHOSTNAME, 1,
703        [Define if you have the 'gethostname' function.])
704      AC_EGREP_HEADER(gethostname, unistd.h, [
705        AC_DEFINE(HAVE_GETHOSTNAME_DECL, 1,
706          [Define if gethostname is declared in <unistd.h>.])])])
707
708    AC_CHECK_FUNCS(usleep, [
709      AC_EGREP_HEADER(usleep, unistd.h, [
710        AC_DEFINE(HAVE_USLEEP_DECL, 1,
711           [Define if usleep is declared in <unistd.h>.])])])
712
713    # Look for these functions in the thread library, but only bother
714    # if using POSIX threads.
715    if test "$THREADS" = posix; then
716       save_LIBS="$LIBS"
717       LIBS="$LIBS $THREADLIBS"
718       # Some POSIX thread systems don't have pthread_mutexattr_settype.
719       # E.g., Solaris.
720       AC_CHECK_FUNCS(pthread_mutexattr_settype pthread_mutexattr_setkind_np)
721
722       # Look for sched_yield.  Up to Solaris 2.6, it is in libposix4, since
723       # Solaris 7 the name librt is preferred.
724       AC_CHECK_FUNCS(sched_yield, , [
725         AC_CHECK_LIB(rt, sched_yield, [
726           AC_DEFINE(HAVE_SCHED_YIELD)
727           THREADLIBS="$THREADLIBS -lrt"
728           THREADSPEC="$THREADSPEC -lrt"], [
729           AC_CHECK_LIB(posix4, sched_yield, [
730             AC_DEFINE(HAVE_SCHED_YIELD)
731             THREADLIBS="$THREADLIBS -lposix4"
732             THREADSPEC="$THREADSPEC -lposix4"])])])
733       LIBS="$save_LIBS"
734
735       # We can save a little space at runtime if the mutex has m_count
736       # or __m_count.  This is a nice hack for Linux.
737       AC_TRY_COMPILE([#include <pthread.h>], [
738           extern pthread_mutex_t *mutex; int q = mutex->m_count;
739         ], AC_DEFINE(PTHREAD_MUTEX_HAVE_M_COUNT, 1,
740              [Define if pthread_mutex_t has m_count member.]), [
741         AC_TRY_COMPILE([#include <pthread.h>], [
742             extern pthread_mutex_t *mutex; int q = mutex->__m_count;
743           ], AC_DEFINE(PTHREAD_MUTEX_HAVE___M_COUNT, 1,
744             [Define if pthread_mutex_t has __m_count member.]))])
745    fi
746
747    # We require a way to get the time.
748    time_found=no
749    AC_CHECK_FUNCS(gettimeofday time ftime, time_found=yes)
750    if test "$time_found" = no; then
751       AC_MSG_ERROR([no function found to get the time])
752    fi
753
754    AC_CHECK_FUNCS(memmove)
755
756    # We require memcpy.
757    memcpy_found=no
758    AC_CHECK_FUNCS(memcpy, memcpy_found=yes)
759    if test "$memcpy_found" = no; then
760       AC_MSG_ERROR([memcpy is required])
761    fi
762
763    AC_CHECK_LIB(dl, dlopen, [
764        AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])])
765
766    # Some library-finding code we stole from Tcl.
767    #--------------------------------------------------------------------
768    #    Check for the existence of the -lsocket and -lnsl libraries.
769    #    The order here is important, so that they end up in the right
770    #    order in the command line generated by make.  Here are some
771    #    special considerations:
772    #    1. Use "connect" and "accept" to check for -lsocket, and
773    #       "gethostbyname" to check for -lnsl.
774    #    2. Use each function name only once:  can't redo a check because
775    #       autoconf caches the results of the last check and won't redo it.
776    #    3. Use -lnsl and -lsocket only if they supply procedures that
777    #       aren't already present in the normal libraries.  This is because
778    #       IRIX 5.2 has libraries, but they aren't needed and they're
779    #       bogus:  they goof up name resolution if used.
780    #    4. On some SVR4 systems, can't use -lsocket without -lnsl too.
781    #       To get around this problem, check for both libraries together
782    #       if -lsocket doesn't work by itself.
783    #--------------------------------------------------------------------
784
785    AC_CACHE_CHECK([for socket libraries], gcj_cv_lib_sockets,
786     [gcj_cv_lib_sockets=
787      gcj_checkBoth=0
788      unset ac_cv_func_connect
789      AC_CHECK_FUNC(connect, gcj_checkSocket=0, gcj_checkSocket=1)
790      if test "$gcj_checkSocket" = 1; then
791          unset ac_cv_func_connect
792          AC_CHECK_LIB(socket, main, gcj_cv_lib_sockets="-lsocket",
793                       gcj_checkBoth=1)
794      fi
795      if test "$gcj_checkBoth" = 1; then
796          gcj_oldLibs=$LIBS
797          LIBS="$LIBS -lsocket -lnsl"
798          unset ac_cv_func_accept
799          AC_CHECK_FUNC(accept,
800                        [gcj_checkNsl=0
801                         gcj_cv_lib_sockets="-lsocket -lnsl"])
802          unset ac_cv_func_accept
803          LIBS=$gcj_oldLibs
804      fi
805      unset ac_cv_func_gethostbyname
806      gcj_oldLibs=$LIBS
807      LIBS="$LIBS $gcj_cv_lib_sockets"
808      AC_CHECK_FUNC(gethostbyname, ,
809                    [AC_CHECK_LIB(nsl, main,
810                                  [gcj_cv_lib_sockets="$gcj_cv_lib_sockets -lnsl"])])
811      unset ac_cv_func_gethostbyname
812      LIBS=$gcj_oldLIBS
813    ])
814    SYSTEMSPEC="$SYSTEMSPEC $gcj_cv_lib_sockets"
815
816    if test "$with_system_zlib" = yes; then
817       AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=)
818    fi
819
820    # Test for Gtk stuff, if asked for.
821    if test "$use_gtk_awt" = yes; then
822       AM_PATH_GTK_2_0(2.0.0,,exit 1)
823       AM_PATH_GLIB_2_0(2.0.0,,exit 1,gthread)
824       dnl XXX Fix me when libart.m4 has the compile test fixed!
825       enable_libarttest=no
826       AM_PATH_LIBART(2.1.0,,exit 1)
827    fi
828
829    # On Solaris, and maybe other architectures, the Boehm collector
830    # requires -ldl.
831    if test "$GC" = boehm; then
832       AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl")
833    fi
834 fi
835
836 if test -z "${with_multisubdir}"; then
837    builddotdot=.
838 else
839 changequote(<<,>>)
840    builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`
841 changequote([,])
842 fi
843
844 # Which gcj do we use?
845 which_gcj=default
846 built_gcc_dir="`cd ${builddotdot}/../../gcc && ${PWDCMD-pwd}`"
847 if test -n "${with_cross_host}"; then
848   # We are being configured with a cross compiler. We can't
849   # use ac_exeext, because that is for the target platform.
850   NATIVE=no
851   cross_host_exeext=
852   case "${with_cross_host}" in
853      *mingw* | *cygwin*)
854          cross_host_exeext=.exe
855      ;;
856   esac
857   if test -x "${built_gcc_dir}/gcj${cross_host_exeext}"; then
858      if test x"$build_alias" = x"$with_cross_host"; then
859         # Ordinary cross (host!=target and host=build)
860         which_gcj=built
861      else
862         # Canadian cross (host!=target and host!=build)
863         which_gcj=cross
864      fi
865   else
866      which_gcj=cross
867   fi
868 else
869   # We are being configured with a native or crossed-native compiler
870   if test -x "${built_gcc_dir}/gcj${ac_exeext}"; then
871      if test x"$build" = x"$host"; then
872         # True native build (host=target and host=build)
873         which_gcj=built
874      else
875         # Crossed-native build (host=target and host!=build)
876         which_gcj=cross
877      fi
878   else
879      which_gcj=path
880   fi
881 fi
882 case "${which_gcj}" in
883    built)
884       GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/"
885    ;;
886    cross)
887       # See the comment in Makefile.am about CANADIAN being a misnomer
888       CANADIAN=yes
889       NULL_TARGET=no
890       if test "x${with_newlib}" = "xyes"; then
891          # FIXME (comment): Why is this needed?
892          GCC_UNWIND_INCLUDE=
893          GCJ="${target_alias}-gcj"
894       else
895          GCJ="${target_alias}-gcj -B`${PWDCMD-pwd}`/"
896       fi
897    ;;
898    path)
899       # See the comment in Makefile.am about CANADIAN being a misnomer
900       CANADIAN=yes
901       NULL_TARGET=yes
902       GCJ="gcj -B`${PWDCMD-pwd}`/"
903    ;;
904 esac
905
906 # Create it, so that compile/link tests don't fail
907 test -f libgcj.spec || touch libgcj.spec
908
909 # We must search the source tree for java.lang, since we still don't
910 # have libgcj.jar nor java/lang/*.class
911 GCJ_SAVE_CPPFLAGS=$CPPFLAGS
912 CPPFLAGS="$CPPFLAGS -I`${PWDCMD-pwd}` -I`cd $srcdir && ${PWDCMD-pwd}`"
913
914 # Since some classes depend on this one, we need its source available
915 # before we can do any GCJ compilation test :-(
916 if test ! -f gnu/classpath/Configuration.java; then
917   test -d gnu || mkdir gnu
918   test -d gnu/classpath || mkdir gnu/classpath
919   sed -e 's,@LIBGCJDEBUG@,$LIBGCJDEBUG,' \
920       -e 's,@TOOLKIT@,$TOOLKIT,' \
921         < $srcdir/gnu/classpath/Configuration.java.in \
922         > gnu/classpath/Configuration.java
923   # We do not want to redirect the output of the grep below to /dev/null,
924   # but we add /dev/null to the input list so that grep will print the
925   # filename of Configuration.java in case it finds any matches.
926   if grep @ gnu/classpath/Configuration.java /dev/null; then
927     AC_MSG_ERROR([configure.in is missing the substitutions above])
928   fi
929 fi
930
931 LT_AC_PROG_GCJ
932
933 CPPFLAGS=$GCJ_SAVE_CPPFLAGS
934
935 AC_COMPILE_CHECK_SIZEOF(void *)
936
937 ZLIBS=
938 SYS_ZLIBS=
939 ZINCS=
940
941 if test -z "$ZLIBSPEC"; then
942    # Use zlib from the GCC tree.
943    ZINCS='-I$(top_srcdir)/../zlib'
944    ZLIBS=../zlib/libzgcj_convenience.la
945 else
946    # System's zlib.
947    SYS_ZLIBS="$ZLIBSPEC"
948 fi
949 AC_SUBST(ZLIBS)
950 AC_SUBST(SYS_ZLIBS)
951 AC_SUBST(ZINCS)
952 AC_SUBST(DIVIDESPEC)
953 AC_SUBST(CHECKREFSPEC)
954 AC_SUBST(EXCEPTIONSPEC)
955 AC_SUBST(IEEESPEC)
956
957 AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
958 AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes)
959 AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes)
960 AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes)
961 AC_SUBST(GCC_UNWIND_INCLUDE)
962
963 if test -n "$with_cross_host" &&
964    test x"$with_cross_host" != x"no"; then
965   toolexecdir='$(exec_prefix)/$(target_alias)'
966   toolexecmainlibdir='$(toolexecdir)/lib'
967 else
968   toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
969   toolexecmainlibdir='$(libdir)'
970 fi
971 multi_os_directory=`$CC -print-multi-os-directory`
972 case $multi_os_directory in
973   .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
974   *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
975 esac
976 AC_SUBST(toolexecdir)
977 AC_SUBST(toolexecmainlibdir)
978 AC_SUBST(toolexeclibdir)
979
980 # Determine gcj version number.
981 changequote(<<,>>)
982 gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([^ ]*\).*$/\1/p'`
983 changequote([,])
984 GCJVERSION=$gcjversion
985 AC_SUBST(GCJVERSION)
986 AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERSION", [Short GCJ version ID])
987
988 dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there.
989 dnl On that system, sys/ioctl.h will not include sys/filio.h unless
990 dnl BSD_COMP is defined; just including sys/filio.h is simpler.
991 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)
992 dnl We avoid AC_HEADER_DIRENT since we really only care about dirent.h
993 dnl for now.  If you change this, you also must update natFile.cc.
994 AC_CHECK_HEADERS(dirent.h)
995 AC_CHECK_HEADERS(inttypes.h, [
996     AC_DEFINE(HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
997     AC_DEFINE(JV_HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
998 ])
999 AC_HEADER_SYS_WAIT
1000
1001 AC_CHECK_TYPE([ssize_t], [int])
1002
1003 AC_MSG_CHECKING([for in_addr_t])
1004 AC_TRY_COMPILE([#include <sys/types.h>
1005 #if STDC_HEADERS
1006 #include <stdlib.h>
1007 #include <stddef.h>
1008 #endif
1009 #if HAVE_NETINET_IN_H
1010 #include <netinet/in.h>
1011 #endif], [in_addr_t foo;],
1012   [AC_DEFINE(HAVE_IN_ADDR_T, 1,
1013      [Define to 1 if 'in_addr_t' is defined in sys/types.h or netinet/in.h.])
1014    AC_MSG_RESULT(yes)],
1015   [AC_MSG_RESULT(no)])
1016
1017 AC_MSG_CHECKING([whether struct ip_mreq is in netinet/in.h])
1018 AC_TRY_COMPILE([#include <netinet/in.h>], [struct ip_mreq mreq;],
1019   [AC_DEFINE(HAVE_STRUCT_IP_MREQ, 1,
1020      [Define if struct ip_mreq is defined in netinet/in.h.])
1021    AC_MSG_RESULT(yes)],
1022   [AC_MSG_RESULT(no)])
1023
1024 AC_MSG_CHECKING([whether struct ipv6_mreq is in netinet/in.h])
1025 AC_TRY_COMPILE([#include <netinet/in.h>], [struct ipv6_mreq mreq6;],
1026   [AC_DEFINE(HAVE_STRUCT_IPV6_MREQ, 1,
1027      [Define if struct ipv6_mreq is defined in netinet/in.h.])
1028    AC_MSG_RESULT(yes)],
1029   [AC_MSG_RESULT(no)])
1030
1031 AC_MSG_CHECKING([whether struct sockaddr_in6 is in netinet/in.h])
1032 AC_TRY_COMPILE([#include <netinet/in.h>], [struct sockaddr_in6 addr6;],
1033   [AC_DEFINE(HAVE_INET6, 1,
1034      [Define if inet6 structures are defined in netinet/in.h.])
1035    AC_MSG_RESULT(yes)],
1036   [AC_MSG_RESULT(no)])
1037
1038 AC_MSG_CHECKING([for socklen_t in sys/socket.h])
1039 AC_TRY_COMPILE([#define _POSIX_PII_SOCKET
1040 #include <sys/types.h>
1041 #include <sys/socket.h>], [socklen_t x = 5;],
1042   [AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define it socklen_t typedef is in sys/socket.h.])
1043    AC_MSG_RESULT(yes)],
1044   [AC_MSG_RESULT(no)])
1045
1046 AC_MSG_CHECKING([for tm_gmtoff in struct tm])
1047 AC_TRY_COMPILE([#include <time.h>], [struct tm tim; tim.tm_gmtoff = 0;],
1048   [AC_DEFINE(STRUCT_TM_HAS_GMTOFF, 1, [Define if struct tm has tm_gmtoff field.])
1049    AC_MSG_RESULT(yes)],
1050   [AC_MSG_RESULT(no)
1051    AC_MSG_CHECKING([for global timezone variable])
1052    dnl FIXME: we don't want a link check here because that won't work
1053    dnl when cross-compiling.  So instead we make an assumption that
1054    dnl the header file will mention timezone if it exists.
1055    dnl Don't find the win32 function timezone
1056    AC_TRY_COMPILE([#include <time.h>], [void i(){long z2 = 2*timezone;}],
1057      [AC_DEFINE(HAVE_TIMEZONE, 1, [Define if global 'timezone' exists.])
1058       AC_MSG_RESULT(yes)],
1059      [AC_MSG_RESULT(no)
1060        AC_MSG_CHECKING([for global _timezone variable])
1061        dnl FIXME: As above, don't want link check
1062        AC_TRY_COMPILE([#include <time.h>], [long z2 = _timezone;],
1063          [AC_DEFINE(HAVE_UNDERSCORE_TIMEZONE, 1,
1064             [Define if your platform has the global _timezone variable.])
1065           AC_MSG_RESULT(yes)],
1066           [AC_MSG_RESULT(no)])])])
1067
1068 AC_FUNC_ALLOCA
1069 AC_FUNC_MMAP
1070
1071 AC_CHECK_PROGS(PERL, perl, false)
1072
1073 SYSDEP_SOURCES=
1074
1075 case "${host}" in
1076  i?86-*-linux*)
1077     SIGNAL_HANDLER=include/i386-signal.h
1078     ;;
1079  sparc*-sun-solaris*)
1080     SIGNAL_HANDLER=include/sparc-signal.h
1081     ;;
1082 # ia64-*)
1083 #    SYSDEP_SOURCES=sysdep/ia64.c
1084 #    test -d sysdep || mkdir sysdep
1085 #    ;;
1086  ia64-*-linux*)
1087     SIGNAL_HANDLER=include/dwarf2-signal.h
1088     ;;
1089  powerpc-*-linux*)
1090     SIGNAL_HANDLER=include/powerpc-signal.h
1091     ;;
1092  alpha*-*-linux*)
1093     SIGNAL_HANDLER=include/dwarf2-signal.h
1094     ;;
1095  s390*-*-linux*)
1096     SIGNAL_HANDLER=include/s390-signal.h
1097     ;;
1098  x86_64*-*-linux*)
1099     SIGNAL_HANDLER=include/x86_64-signal.h
1100     ;;
1101  sparc*-*-linux*)
1102     SIGNAL_HANDLER=include/dwarf2-signal.h
1103     ;;
1104  sh-*-linux* | sh[[34]]*-*-linux*)
1105     SIGNAL_HANDLER=include/dwarf2-signal.h
1106     ;;
1107  *mingw*)
1108     SIGNAL_HANDLER=include/win32-signal.h
1109     ;;
1110  *)
1111     SIGNAL_HANDLER=include/default-signal.h
1112     ;;
1113 esac
1114
1115 # If we're using sjlj exceptions, forget what we just learned.
1116 if test "$enable_sjlj_exceptions" = yes; then
1117    SIGNAL_HANDLER=include/default-signal.h
1118 fi
1119
1120 # Define here any compiler flags that you need in order to make backtrace() work.
1121 BACKTRACESPEC=
1122 case "${host}" in
1123  x86_64*-*-linux*)
1124     BACKTRACESPEC=-fno-omit-frame-pointer
1125     ;;
1126 esac
1127 AC_SUBST(BACKTRACESPEC)
1128
1129 AC_SUBST(SYSDEP_SOURCES)
1130
1131 AC_LINK_FILES($SIGNAL_HANDLER, include/java-signal.h)
1132
1133 if test "${multilib}" = "yes"; then
1134   multilib_arg="--enable-multilib"
1135 else
1136   multilib_arg=
1137 fi
1138
1139
1140
1141 here=`${PWDCMD-pwd}`
1142 AC_SUBST(here)
1143
1144 # We get this from the environment.
1145 AC_SUBST(GCJFLAGS)
1146
1147 AC_OUTPUT(Makefile libgcj.pc libgcj.spec libgcj-test.spec gnu/classpath/Configuration.java gcj/Makefile include/Makefile testsuite/Makefile,
1148 [# Only add multilib support code if we just rebuilt top-level Makefile.
1149 case " $CONFIG_FILES " in
1150  *" Makefile "*)
1151    LD="${ORIGINAL_LD_FOR_MULTILIBS}"
1152    ac_file=Makefile . ${libgcj_basedir}/../config-ml.in
1153    ;;
1154 esac
1155
1156 # Make subdirectories and `.d' files.  Look in both srcdir and
1157 # builddir for the .java files.
1158 h=`${PWDCMD-pwd}`
1159 : > deps.mk
1160 ( (cd $srcdir && find . \( -name '*.java' -o -name '*.cc' -o -name '*.c' \) -print) ;
1161   find . \( -name '*.java' -o -name '*.cc' -o -name '*.c' \) -print) | \
1162    fgrep -v testsuite | \
1163    sed -e 's/\.java/.d/'\;'s/\.cc/.d/'\;'s/\.c/.d/' | \
1164    while read f; do
1165       echo "include $f" >> deps.mk
1166       test -f $f || {
1167 changequote(<<,>>)
1168          d=`echo $f | sed -e 's,/[^/]*$,,'`
1169 changequote([,])
1170          if test ! -d $d; then
1171            $libgcj_basedir/../mkinstalldirs $d
1172          fi;
1173          echo > $f
1174       }
1175    done
1176 ],
1177 srcdir=${srcdir}
1178 host=${host}
1179 target=${target}
1180 with_multisubdir=${with_multisubdir}
1181 ac_configure_args="${multilib_arg} ${ac_configure_args}"
1182 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
1183 libgcj_basedir=${libgcj_basedir}
1184 CC="${CC}"
1185 CXX="${CXX}"
1186 ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
1187 )