source: branches/libc-0.6/src/gcc/libjava/configure.in

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

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