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