source: vendor/gcc/3.3.5/libjava/configure.in

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

GCC v3.3.3 sources.

  • 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.