OSDN Git Service

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