OSDN Git Service

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