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