OSDN Git Service

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