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