]> git.ipfire.org Git - thirdparty/gcc.git/blame - libjava/configure.ac
re PR target/18788 ("-pthreads" option with "-shared" does not cause libpthread.so...
[thirdparty/gcc.git] / libjava / configure.ac
CommitLineData
aed6152d 1dnl # Process this with autoconf to create configure
df58e648 2AC_PREREQ(2.64)
e3f92d3b
MK
3# Still use "libjava" here to placate dejagnu.
4AC_INIT([libjava], [version-unused],, [libjava])
5
6AC_CONFIG_SRCDIR(java/lang/System.java)
ee9dd372 7
215c351a
PB
8GCC_TOPLEV_SUBDIRS
9
aed6152d 10# We use these options to decide which functions to include.
ee9dd372 11AC_ARG_WITH(target-subdir,
aed6152d
NN
12 AS_HELP_STRING([--with-target-subdir=SUBDIR],
13 [configure in a subdirectory]))
f1c3e0a6 14
aed6152d
NN
15# We may get other options which we don't document:
16# --with-target-subdir, --with-multisrctop, --with-multisubdir
36609570 17
8a489465
JH
18# Find the rest of the source tree framework.
19AM_ENABLE_MULTILIB(, ..)
36609570 20
bc03b358 21AC_CANONICAL_SYSTEM
b764adea 22_GCC_TOPLEV_NONCANONICAL_BUILD
bc03b358
NN
23_GCC_TOPLEV_NONCANONICAL_TARGET
24
60557047
MK
25AC_SUBST(target_noncanonical)
26
bc03b358
NN
27# This works around the fact that libtool configuration may change LD
28# for this particular configuration, but some shells, instead of
29# keeping the changes in LD private, export them just because LD is
30# exported.
31ORIGINAL_LD_FOR_MULTILIBS=$LD
32
33AC_PROG_LN_S
34
36609570
NN
35# This works around an automake problem.
36mkinstalldirs="`cd $ac_aux_dir && ${PWDCMD-pwd}`/mkinstalldirs"
37AC_SUBST(mkinstalldirs)
38
bc03b358 39AC_ARG_WITH(cross-host,
aed6152d
NN
40 AS_HELP_STRING([--with-cross-host=HOST],
41 [configure with a cross compiler from HOST]))
bc03b358
NN
42
43AC_ARG_WITH(newlib,
aed6152d
NN
44 AS_HELP_STRING([--with-newlib],
45 [configure with newlib]))
bc03b358
NN
46
47AC_ARG_ENABLE(version-specific-runtime-libs,
aed6152d
NN
48 AS_HELP_STRING([--enable-version-specific-runtime-libs],
49 [specify that runtime libraries should be installed in a compiler-specific directory]),
bc03b358
NN
50 [case "$enableval" in
51 yes) version_specific_libs=yes ;;
52 no) version_specific_libs=no ;;
53 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
54 esac],
55 [version_specific_libs=no]
56)
57
34677bae
MK
58AC_ARG_ENABLE(browser-plugin,
59 AS_HELP_STRING([--enable-browser-plugin],
648e8d6d
TF
60 [build gcjwebplugin web browser plugin]),
61 [case "$enableval" in
34677bae
MK
62 yes) browser_plugin_enabled=yes ;;
63 no) browser_plugin_enabled=no ;;
64 *) AC_MSG_ERROR([Unknown argument to enable/disable browser plugin]);;
648e8d6d 65 esac],
34677bae 66 [browser_plugin_enabled=no]
648e8d6d
TF
67)
68
ac1ed908
MW
69AC_ARG_ENABLE(gconf-peer,
70 AS_HELP_STRING([--enable-gconf-peer],
71 [compile GConf native peers for util.preferences]),
72 [case "$enableval" in
73 yes) gconf_enabled=yes ;;
74 no) gconf_enabled=no ;;
75 *) AC_MSG_ERROR([Unknown argument to enable/disable gconf-peer]);;
76 esac],
77 [gconf_enabled=no]
78)
79
cd6d4007
MK
80AC_ARG_WITH([antlr-jar],
81 [AS_HELP_STRING([--with-antlr-jar=file],[Use ANTLR from the specified jar file])],
82 [
83 ANTLR_JAR=$withval
84 ],
85 [
86 ANTLR_JAR=
87 ])
88
89AC_MSG_CHECKING([for antlr.jar])
90if test "x$ANTLR_JAR" = x; then
91 for antlr_lib_home in `ls -d /usr/local/share/antlr* 2> /dev/null` \
92 /usr/share/antlr/lib /usr/share/java /usr/lib;
93 do
94 if test -f "$antlr_lib_home/antlr.jar"; then
95 # FIXME: version check for antlr needed without using a VM
96 ANTLR_JAR="$antlr_lib_home/antlr.jar"
97 break
98 fi
99 done
100 if test "x$ANTLR_JAR" = x; then
101 AC_MSG_RESULT([not found])
102 else
103 AC_MSG_RESULT($ANTLR_JAR)
104 fi
105else
106 if test -f "${ANTLR_JAR}"; then
107 AC_MSG_RESULT($ANTLR_JAR)
108 else
109 AC_MSG_ERROR([antlr jar file not found: $ANTLR_JAR])
110 fi
111fi
112AC_SUBST(ANTLR_JAR)
113
114AC_ARG_ENABLE([gjdoc],
115 [AS_HELP_STRING(--disable-gjdoc,compile GJDoc (disabled by --disable-gjdoc) [default=yes])],
116 [case "${enableval}" in
117 yes) BUILD_GJDOC=yes ;;
118 no) BUILD_GJDOC=no ;;
119 *) BUILD_GJDOC=yes ;;
120 esac],
121 [BUILD_GJDOC=maybe])
122
d793c2a5 123AC_MSG_CHECKING([whether to build gjdoc])
cd6d4007
MK
124if test "x$BUILD_GJDOC" = xmaybe; then
125 if test -f "${ANTLR_JAR}"; then
126 BUILD_GJDOC=yes
127 AC_MSG_RESULT(yes)
128 else
129 BUILD_GJDOC=no
130 AC_MSG_RESULT([no, antlr.jar not found])
131 fi
132else
133 AC_MSG_RESULT($BUILD_GJDOC)
134fi
135AM_CONDITIONAL(CREATE_GJDOC, test "x${BUILD_GJDOC}" = xyes)
136
97b8365c
TT
137AC_ARG_ENABLE(java-maintainer-mode,
138 AS_HELP_STRING([--enable-java-maintainer-mode],
139 [allow rebuilding of .class and .h files]))
140AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
141
aed6152d 142# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
ed698112
NN
143GCC_NO_EXECUTABLES
144
a5d28a12 145# For libstdc++-v3, -fno-builtin must be present here so that a
ed698112
NN
146# non-conflicting form of std::exit can be guessed by AC_PROG_CXX, and
147# used in later tests. This may not be necessary in libjava; I don't know.
ed698112
NN
148save_CXXFLAGS="$CXXFLAGS"
149CXXFLAGS="$CXXFLAGS -fno-builtin"
36609570 150AC_PROG_CC
ed698112
NN
151AC_PROG_CXX
152CXXFLAGS="$save_CXXFLAGS"
36609570 153
13917ae3 154AM_INIT_AUTOMAKE([no-dist 1.9.0])
36609570
NN
155
156AC_CHECK_TOOL(AS, as)
d6c122f7 157AC_CHECK_TOOL(LD, ld)
36609570
NN
158AC_CHECK_TOOL(AR, ar)
159AC_CHECK_TOOL(RANLIB, ranlib, :)
474b97ce 160AC_CHECK_TOOL(DLLTOOL, dlltool, :)
02809848 161AC_PROG_AWK
97b8365c 162AC_CHECK_PROGS([JAR], [jar fastjar gjar], no)
02809848
PB
163AC_PATH_PROG([ZIP], [zip], no)
164AC_PATH_PROG([UNZIP], [unzip], unzip)
a968c714
TT
165
166# We need a jar that supports -@. This is a GNU extension.
167if test "$JAR" != no; then
168 rm -f config-test.jar
169 echo $srcdir/configure.ac | $JAR -cf@ config-test.jar
170 if test -f config-test.jar; then
171 rm -f config-test.jar
172 else
173 JAR=no
174 fi
175fi
176
acd724f6
TT
177# Prefer the jar we found, but fall back to our jar script.
178if test "$JAR" = no; then
179 if test "$ZIP" = no; then
02809848 180 AC_MSG_ERROR([cannot find neither zip nor jar, cannot continue])
acd724f6
TT
181 else
182 # InfoZIP available, use the 'guaranteed' Bourne-shell JAR to build libjava
183 JAR=`pwd`/scripts/jar
02809848 184 fi
76c6ea0c 185fi
36609570
NN
186
187AC_PROG_INSTALL
188
189AM_MAINTAINER_MODE
190
191AC_EXEEXT
192
193# configure.host sets the following important variables
194# libgcj_cflags - host specific C compiler flags
195# libgcj_cxxflags - host specific C++ compiler flags
196# libgcj_javaflags - host specific Java compiler flags
c4f0333b 197# libgcj_sublib_ltflags - host specific Libtool flags
474b97ce
DK
198# libgcj_sublib_core_extra_deps - host specific extra
199# dependencies for core sublib
200# (these last two only used when building sublibs)
6a92b6c7 201# and a number of others; see the list at the start of the file.
36609570
NN
202
203libgcj_cflags=
204libgcj_cxxflags=
205libgcj_javaflags=
c4f0333b 206libgcj_sublib_ltflags=
474b97ce 207libgcj_sublib_core_extra_deps=
36609570 208
aed6152d 209. ${srcdir}/configure.host
36609570 210
76b972d6
L
211ACX_PROG_LD_GNU_SYMBOLIC
212libgcj_ld_symbolic_functions=$SYMBOLIC_LDFLAGS
213if test -z "$libgcj_ld_symbolic"; then
214 libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS
215fi
216
aed6152d
NN
217LIBGCJ_CFLAGS="${libgcj_cflags}"
218LIBGCJ_CXXFLAGS="${libgcj_cxxflags}"
219LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
c4f0333b 220LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_ltflags}"
474b97ce 221LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}"
36739040 222LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}"
76b972d6 223LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}"
36609570
NN
224AC_SUBST(LIBGCJ_CFLAGS)
225AC_SUBST(LIBGCJ_CXXFLAGS)
226AC_SUBST(LIBGCJ_JAVAFLAGS)
c4f0333b 227AC_SUBST(LIBGCJ_SUBLIB_LTFLAGS)
474b97ce 228AC_SUBST(LIBGCJ_SUBLIB_CORE_EXTRA_DEPS)
36739040 229AC_SUBST(LIBGCJ_LD_SYMBOLIC)
76b972d6 230AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
ee9dd372 231
16dab3e2
TF
232# Only use libltdl for non-newlib builds.
233if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
234 AC_LTDL_SHLIBPATH
235fi
ee9dd372 236
16dab3e2 237AC_CONFIG_HEADERS([include/config.h gcj/libgcj-config.h])
b0fa81ee 238
6a92b6c7
DK
239# Possibly build libgcj as many sub-libraries.
240AC_ARG_ENABLE(libgcj-sublibs,
241 AS_HELP_STRING([--enable-libgcj-sublibs],
242 [build libgcj as many sub-libraries]))
243
244if test -z "$enable_libgcj_sublibs"; then
245 enable_libgcj_sublibs=$enable_libgcj_sublibs_default
246fi
247AM_CONDITIONAL(BUILD_SUBLIBS, test "$enable_libgcj_sublibs" = yes)
248if test "$enable_libgcj_sublibs" = yes ; then
249 # In theory we could make do with only one override and simply
250 # tag "_bc" onto the end of it when we use it to generate the
251 # spec, but that's an ugly thing to do when there are multiple
252 # words in the string and you're relying on the ordering to
253 # append the correct one.
254 libgcj_spec_lgcj_override="-lgcj-noncore -lgcj"
255 libgcj_spec_lgcj_bc_override="-lgcj-noncore -lgcj_bc"
256fi
257
258
b0fa81ee
TT
259# See if the user has requested runtime debugging.
260LIBGCJDEBUG="disable"
261AC_SUBST(LIBGCJDEBUG)
262AC_ARG_ENABLE(libgcj-debug,
263 AS_HELP_STRING([--enable-libgcj-debug],
264 [enable runtime debugging code]),
265 [if test "$enable_libgcj_debug" = yes; then
903db435 266 AC_DEFINE(__GCJ_DEBUG, 1, [Define this if you want runtime debugging enabled.])
b0fa81ee
TT
267 LIBGCJDEBUG="enable"
268 fi])
269
97b8365c
TT
270AC_ARG_WITH([escher],
271 AS_HELP_STRING([--with-escher=ABS.PATH],
272 [specify path to escher dir or JAR for X peers]))
273case "$with_escher" in
274"")
275 use_escher=false
276 ;;
277"no")
278 use_escher=false
279 ;;
280"yes")
281 AC_MSG_ERROR([Please supply an absolute path to Escher library])
282 ;;
283*)
284 use_escher=true
285 ;;
286esac
287
b0fa81ee
TT
288# Determine which AWT peer libraries to build
289AC_ARG_ENABLE(java-awt,
290 AS_HELP_STRING([--enable-java-awt],
291 [list of AWT peer implementations to be built]))
292
293peerlibs="`echo ${enable_java_awt} | tr ',' ' '`"
294use_xlib_awt=""
295use_gtk_awt=""
ab3fa9d3 296use_qt_awt=""
97b8365c 297use_x_awt=""
b0fa81ee
TT
298# The default toolkit to use is the first one specified.
299TOOLKIT=
300AC_SUBST(TOOLKIT)
301
302for peer in $peerlibs ; do
303 case $peer in
304 xlib)
305 if test "$no_x" = yes; then
306 echo "*** xlib peers requested but no X library available" 1>&2
307 exit 1
308 else
9365047a
TT
309 use_xlib_awt="yes"
310 if test -z "$TOOLKIT"; then
311 TOOLKIT=gnu.awt.xlib.XToolkit
312 fi
b0fa81ee
TT
313 fi
314 ;;
315 gtk)
316 if test "$no_x" = yes; then
ab3fa9d3 317 echo "*** gtk peers requested but no X library available" 1>&2
b0fa81ee
TT
318 exit 1
319 else
320 use_gtk_awt=yes
321 if test -z "$TOOLKIT"; then
322 TOOLKIT=gnu.java.awt.peer.gtk.GtkToolkit
323 fi
324 fi
325 ;;
ab3fa9d3
TT
326 qt)
327 if test "$no_x" = yes; then
328 # Perhaps we should admit the possibility of embedded Qt.
329 echo "*** Qt peers requested but no X library available" 1>&2
330 exit 1
331 else
332 use_qt_awt=yes
333 if test -z "$TOOLKIT"; then
334 TOOLKIT=gnu.java.awt.peer.qt.QtToolkit
335 fi
336 fi
337 ;;
97b8365c
TT
338 x)
339 use_x_awt=yes
340 if test -z "$TOOLKIT"; then
341 TOOLKIT=gnu.java.awt.peer.x.XToolkit
342 fi
343 ;;
b0fa81ee
TT
344 no)
345 use_xlib_awt=
346 use_gtk_awt=
ab3fa9d3 347 use_qt_awt=
97b8365c 348 use_x_awt=
b0fa81ee
TT
349 break
350 ;;
351 *)
352 echo "*** unrecognised argument \"${peer}\" for --enable-java-awt" 1>&2
353 exit 1
354 esac
355done
356
357AM_CONDITIONAL(XLIB_AWT, test "$use_xlib_awt" = yes)
97b8365c
TT
358AM_CONDITIONAL(X_AWT, test "$use_x_awt" = yes)
359
360AC_DEFINE_UNQUOTED(AWT_TOOLKIT, "$TOOLKIT", [Name of default AWT toolkit])
361
f3392d53
RW
362expanded_prefix=$prefix
363if test "X$prefix" = XNONE; then
364 expanded_prefix=${ac_default_prefix}
365fi
366
367AC_DEFINE_UNQUOTED(LIBGCJ_PREFIX, "$expanded_prefix", [Installation prefix])
b0fa81ee 368
9365047a
TT
369# Create standard.omit based on decisions we just made.
370cp $srcdir/standard.omit.in standard.omit
371if test "$use_xlib_awt" != yes; then
372 echo gnu/awt/xlib >> standard.omit
373 echo gnu/gcj/xlib >> standard.omit
374fi
97b8365c
TT
375if test "$use_x_awt" != yes; then
376 echo gnu/java/awt/peer/x >> standard.omit
377fi
b0fa81ee 378
7f40378f 379# Tools that need to be compiled against classpath's tools classes
ded63764 380: > vm-tools-packages
7f40378f
DD
381for package in gnu/gcj/tools/gc_analyze ; do
382 echo $package >> standard.omit
383 echo $package >> vm-tools-packages
384done
385
b0fa81ee
TT
386if test -z "${with_multisubdir}"; then
387 builddotdot=.
388else
389 builddotdot=`echo ${with_multisubdir} | sed -e 's:[[^/]][[^/]]*:..:g'`
390fi
391
392NATIVE=yes
393
97b8365c 394# Which gcj and host gcj (for ecjx) do we use?
b0fa81ee 395which_gcj=default
97b8365c
TT
396host_exeext=${ac_exeext}
397GCJ_FOR_ECJX=
b0fa81ee
TT
398built_gcc_dir="`cd ${builddotdot}/../../${host_subdir}/gcc && ${PWDCMD-pwd}`"
399if test -n "${with_cross_host}"; then
400 # We are being configured with a cross compiler. We can't
401 # use ac_exeext, because that is for the target platform.
402 NATIVE=no
403 cross_host_exeext=
97b8365c 404 GCJ_FOR_ECJX="${with_cross_host}-gcj"
b0fa81ee
TT
405 case "${with_cross_host}" in
406 *mingw* | *cygwin*)
407 cross_host_exeext=.exe
408 ;;
409 esac
97b8365c 410 host_exeext=${cross_host_exeext}
b0fa81ee
TT
411 if test -x "${built_gcc_dir}/gcj${cross_host_exeext}"; then
412 if test x"$build_noncanonical" = x"$with_cross_host"; then
413 # Ordinary cross (host!=target and host=build)
414 which_gcj=built
415 else
416 # Canadian cross (host!=target and host!=build)
417 which_gcj=cross
418 fi
419 else
420 which_gcj=cross
421 fi
422else
423 # We are being configured with a native or crossed-native compiler
424 if test -x "${built_gcc_dir}/gcj${ac_exeext}"; then
425 if test x"$build" = x"$host"; then
426 # True native build (host=target and host=build)
427 which_gcj=built
428 else
429 # Crossed-native build (host=target and host!=build)
430 which_gcj=cross
431 fi
432 else
433 which_gcj=path
434 fi
435fi
4a4a4e99
AO
436libgcjdir=`${PWDCMD-pwd}`
437case $GCJ in
438*" -B"*)
439 # Just in case there is a comma in the build dir, quote it for the
440 # sed command below.
441 case $libgcjdir in
442 *[[,\\]]*) qlibgcjdir=`echo "$libgcjdir" | sed 's:[[,\\]]:\\&:g'`;;
443 *) qlibgcjdir=$libgcjdir;;
444 esac
445 GCJ=`echo "$GCJ" | sed "s, -B, -B$qlibgcjdir/&,"`
446 ;;
447*)
448 GCJ=$GCJ" -B$libgcjdir/"
449 ;;
450esac
b0fa81ee
TT
451case "${which_gcj}" in
452 built)
b0fa81ee 453 GCJH='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh'
b0fa81ee
TT
454 ;;
455 cross)
456 if test "x${with_newlib}" = "xyes"; then
457 # FIXME (comment): Why is this needed?
458 GCC_UNWIND_INCLUDE=
b0fa81ee 459 fi
bf654c94 460 GCJH='$(target_noncanonical)-gcjh'
b0fa81ee
TT
461 ;;
462 path)
b0fa81ee
TT
463 GCJH=gcjh
464 ;;
465esac
e0441a5b
MK
466JAVAC="$GCJ -C"
467export JAVAC
b0fa81ee 468
97b8365c 469AC_SUBST(GCJ_FOR_ECJX)
b0fa81ee 470AC_SUBST(GCJH)
97b8365c 471AC_SUBST(host_exeext)
b0fa81ee
TT
472
473# Create it, so that compile/link tests don't fail
474test -f libgcj.spec || touch libgcj.spec
475
476
477
478# Set up to configure Classpath.
479# FIXME: no supported way to pass args in autoconf.
97b8365c
TT
480# Disable tool wrappers to avoid ltdl.h configure check.
481ac_configure_args="$ac_configure_args --disable-tool-wrappers"
b0fa81ee
TT
482ac_configure_args="$ac_configure_args --disable-load-library"
483ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
484ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT"
485dir1=`cd $srcdir && pwd`
486dir2=`pwd`
487ac_configure_args="$ac_configure_args --with-vm-classes=$dir1:$dir2"
488ac_configure_args="$ac_configure_args --disable-core-jni"
489dnl FIXME?
490ac_configure_args="$ac_configure_args --disable-examples"
491ac_configure_args="$ac_configure_args --with-glibj=build"
34677bae 492if test "$browser_plugin_enabled" != yes; then
648e8d6d 493 ac_configure_args="$ac_configure_args --disable-plugin"
34677bae
MK
494else
495 ac_configure_args="$ac_configure_args --enable-plugin"
648e8d6d 496fi
ac1ed908
MW
497if test "$gconf_enabled" != yes; then
498 ac_configure_args="$ac_configure_args --disable-gconf-peer"
499 ac_configure_args="$ac_configure_args --enable-default-preferences-peer=gnu.java.util.prefs.FileBasedFactory"
500fi
b0fa81ee 501if test "$use_gtk_awt" != yes; then
97b8365c 502 ac_configure_args="$ac_configure_args --disable-gtk-peer --disable-plugin"
b0fa81ee 503fi
ab3fa9d3
TT
504if test "$use_qt_awt" != yes; then
505 ac_configure_args="$ac_configure_args --disable-qt-peer"
e0f7b260
TT
506else
507 # We need this as qt is disabled by default in classpath.
508 ac_configure_args="$ac_configure_args --enable-qt-peer"
ab3fa9d3 509fi
97b8365c
TT
510if test "$use_x_awt" != yes; then
511 ac_configure_args="$ac_configure_args --without-escher"
512else
513 # We need this as escher is disabled by default in classpath.
514 if test "$use_escher" != true; then
515 AC_MSG_ERROR([Please supply an absolute path to the Escher library])
516 else
517 ac_configure_args="$ac_configure_args --with-escher=$with_escher"
518 fi
519fi
cd6d4007
MK
520if test "x$BUILD_GJDOC" = xno; then
521 ac_configure_args="$ac_configure_args --disable-gjdoc"
522fi
97b8365c 523# -Werror causes unavoidable problems in code using alsa.
e0441a5b 524ac_configure_args="$ac_configure_args --disable-regen-headers"
97b8365c 525ac_configure_args="$ac_configure_args --disable-Werror"
b0fa81ee
TT
526dnl --with-gcj=$GCJ
527dnl --with-javah=$GCJH
b0fa81ee
TT
528dnl gtk-cairo -- just export here...
529dnl --enable-regen-headers?
530
d6f6aaf6 531# Only use libltdl for non-newlib builds.
2d29f3a1 532if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
7af85558
TT
533 AC_LIBLTDL_CONVENIENCE
534 AC_LIBTOOL_DLOPEN
535 DIRLTDL=libltdl
e1a3a7d0 536 AC_DEFINE(USE_LTDL, 1, [Define if libltdl is in use.])
7af85558
TT
537 # Sigh. Libtool's macro doesn't do the right thing.
538 INCLTDL="-I\$(top_srcdir)/libltdl $INCLTDL"
7f7ba9bf 539 # FIXME: this is a hack.
1e6347d8 540 sub_auxdir="`cd $ac_aux_dir && ${PWDCMD-pwd}`"
f1eba847 541 ac_configure_args="$ac_configure_args --with-auxdir=$sub_auxdir"
7af85558
TT
542fi
543AC_SUBST(INCLTDL)
544AC_SUBST(LIBLTDL)
545AC_SUBST(DIRLTDL)
cad90591 546AC_PROG_LIBTOOL
e3f92d3b
MK
547AM_PROG_GCJ
548AM_PROG_CC_C_O
b0fa81ee
TT
549
550AC_CONFIG_SUBDIRS(classpath libltdl)
a3ffcff3 551
aed6152d 552# The -no-testsuite modules omit the test subdir.
ee9dd372
TT
553AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
554
aed6152d
NN
555# Should the runtime set system properties by examining the
556# environment variable GCJ_PROPERTIES?
ffccc6be 557AC_ARG_ENABLE(getenv-properties,
aed6152d
NN
558 AS_HELP_STRING([--disable-getenv-properties],
559 [don't set system properties from GCJ_PROPERTIES]))
ffccc6be 560
aed6152d 561# Whether GCJ_PROPERTIES is used depends on the target.
3610e0d5 562if test -z "$enable_getenv_properties"; then
ffccc6be
AG
563 enable_getenv_properties=${enable_getenv_properties_default-yes}
564fi
565if test "$enable_getenv_properties" = no; then
e1a3a7d0
MK
566 AC_DEFINE(DISABLE_GETENV_PROPERTIES, 1,
567 [Define if system properties shouldn't be read from getenv("GCJ_PROPERTIES").])
ffccc6be
AG
568fi
569
aed6152d 570# Whether we should use arguments to main()
b5ee195f
AG
571if test -z "$enable_main_args"; then
572 enable_main_args=${enable_main_args_default-yes}
573fi
574if test "$enable_main_args" = no; then
e1a3a7d0 575 AC_DEFINE(DISABLE_MAIN_ARGS, 1, [Define if we should ignore arguments to main().])
b5ee195f
AG
576fi
577
3610e0d5 578
aed6152d
NN
579# Should we use hashtable-based synchronization?
580# Currently works only for Linux X86/ia64
581# Typically faster and more space-efficient
3610e0d5 582AC_ARG_ENABLE(hash-synchronization,
aed6152d
NN
583 AS_HELP_STRING([--enable-hash-synchronization],
584 [use global hash table for monitor locks]))
3610e0d5
TT
585
586if test -z "$enable_hash_synchronization"; then
587 enable_hash_synchronization=$enable_hash_synchronization_default
588fi
3610e0d5 589
97b8365c
TT
590
591install_ecj_jar=no
592ECJ_BUILD_JAR=
593ECJ_JAR=
594AC_ARG_WITH(ecj-jar,
595 AS_HELP_STRING([--with-ecj-jar=FILE], [use preinstalled ecj jar]),
596 [ECJ_JAR=$withval],
1b4aced6
TT
597 [if test -f $multi_basedir/ecj.jar; then
598 ECJ_BUILD_JAR=$multi_basedir/ecj.jar
97b8365c
TT
599 ECJ_JAR='$(jardir)/ecj.jar'
600 install_ecj_jar=yes
601 fi])
602AC_SUBST(ECJ_BUILD_JAR)
603AC_SUBST(ECJ_JAR)
604AM_CONDITIONAL(BUILD_ECJ1, test "$ECJ_JAR" != "")
605AM_CONDITIONAL(INSTALL_ECJ_JAR, test $install_ecj_jar = yes)
606
c33b7bf0
TF
607AC_ARG_WITH(java-home,
608 AS_HELP_STRING([--with-java-home=DIRECTORY],
609 [value of java.home system property]),
610 [JAVA_HOME="${withval}"], [JAVA_HOME=""])
611AM_CONDITIONAL(JAVA_HOME_SET, test ! -z "$JAVA_HOME")
612AC_SUBST(JAVA_HOME)
613
a507baad
DD
614suppress_libgcj_bc=no
615AC_ARG_ENABLE(libgcj-bc,
616 AS_HELP_STRING([--enable-libgcj-bc],
617 [enable(default) or disable BC ABI for portions of libgcj]),
618 [if test "$enable_libgcj_bc" = "no"; then
619 suppress_libgcj_bc=yes
620 fi])
621AM_CONDITIONAL(SUPPRESS_LIBGCJ_BC, test "$suppress_libgcj_bc" = "yes")
622
c07cd2c7
DD
623build_libgcj_reduced_reflection=no
624AC_ARG_ENABLE(reduced-reflection,
625 AS_HELP_STRING([--enable-reduced-reflection],
626 [enable or disable(default) -freduced-reflection when building portions of libgcj]),
627 [if test "$enable_reduced_reflection" = "yes"; then
628 build_libgcj_reduced_reflection=yes
629 fi])
630AM_CONDITIONAL(BUILD_LIBGCJ_REDUCED_REFLECTION, test "$build_libgcj_reduced_reflection" = "yes")
631
83c02e38
ME
632# What is the native OS API for MinGW?
633AC_ARG_WITH(win32-nlsapi,
aed6152d
NN
634 AS_HELP_STRING([--with-win32-nlsapi=ansi or unicows or unicode],
635 [native MinGW libgcj Win32 OS API (default is ansi)]),
83c02e38
ME
636[case "${withval}" in
637 ansi) with_win32_nlsapi=ansi ;;
638 unicows) with_win32_nlsapi=unicows ;;
639 unicode) with_win32_nlsapi=unicode ;;
640 *) AC_MSG_ERROR(Bad value ${withval} for --with-win32-nlsapi.) ;;
641esac],[with_win32_nlsapi=ansi])
642
643case "${with_win32_nlsapi}" in
644 unicows | unicode)
645 AC_DEFINE(MINGW_LIBGCJ_UNICODE, 1,
646 [Define if MinGW libgcj uses the Windows UNICODE OS API.])
647 ;;
648esac
649
aed6152d
NN
650# configure.host sets slow_pthread_self if the synchronization code should
651# try to avoid pthread_self calls by caching thread IDs in a hashtable.
45597167 652if test "${slow_pthread_self}" = "yes"; then
e1a3a7d0
MK
653 AC_DEFINE(SLOW_PTHREAD_SELF, 1,
654 [Define if if the synchronization code should try to avoid pthread_self calls by caching thread IDs in a hashtable.])
45597167
BM
655fi
656
ed347998
HB
657# Check for gc debugging. This option is handled both here and in the GC.
658AC_ARG_ENABLE(gc-debug,
48d0dd75
KC
659 AS_HELP_STRING([--enable-gc-debug],
660 [include full support for pointer backtracing etc.]),
ed347998 661[ if test "$enable_gc_debug" = "yes"; then
48d0dd75
KC
662 AC_DEFINE(LIBGCJ_GC_DEBUG, 1,
663 [Define if we want to use debug calls into the garbage collector.])
ed347998
HB
664 fi])
665
aed6152d 666# See if the user has the interpreter included.
58eb6e7c 667AC_ARG_ENABLE(interpreter,
aed6152d
NN
668 AS_HELP_STRING([--enable-interpreter],
669 [enable interpreter]),
670 [if test "$enable_interpreter" = yes; then
b11f6430
AG
671 # This can also be set in configure.host.
672 libgcj_interpreter=yes
f7ccaa38
BM
673 elif test "$enable_interpreter" = no; then
674 libgcj_interpreter=no
aed6152d 675 fi])
58eb6e7c 676
b11f6430 677if test "$libgcj_interpreter" = yes; then
e1a3a7d0 678 AC_DEFINE(INTERPRETER, 1, [Define if you want a bytecode interpreter.])
b11f6430 679fi
b2ae5f70
TT
680INTERPRETER="$libgcj_interpreter"
681AC_SUBST(INTERPRETER)
86acf60c 682AM_CONDITIONAL(INTERPRETER, test "$libgcj_interpreter" = yes)
b11f6430 683
52a11cbf 684AC_MSG_CHECKING([for exception model to use])
cad90591 685AC_LANG_PUSH(C++)
3cf88fb4 686AC_ARG_ENABLE(sjlj-exceptions,
aed6152d
NN
687 AS_HELP_STRING([--enable-sjlj-exceptions],
688 [force use of builtin_setjmp for exceptions]),
52a11cbf
RH
689[:],
690[dnl Botheration. Now we've got to detect the exception model.
691dnl Link tests against libgcc.a are problematic since -- at least
692dnl as of this writing -- we've not been given proper -L bits for
693dnl single-tree newlib and libgloss.
694dnl
695dnl This is what AC_TRY_COMPILE would do if it didn't delete the
696dnl conftest files before we got a change to grep them first.
697cat > conftest.$ac_ext << EOF
698[#]line __oline__ "configure"
699struct S { ~S(); };
700void bar();
701void foo()
702{
703 S s;
704 bar();
705}
706EOF
707old_CXXFLAGS="$CXXFLAGS"
708CXXFLAGS=-S
709if AC_TRY_EVAL(ac_compile); then
710 if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
711 enable_sjlj_exceptions=yes
712 elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
713 enable_sjlj_exceptions=no
48965b7c
MM
714 elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then
715 # ARM EH ABI.
716 enable_sjlj_exceptions=no
52a11cbf
RH
717 fi
718fi
719CXXFLAGS="$old_CXXFLAGS"
720rm -f conftest*])
721if test x$enable_sjlj_exceptions = xyes; then
722 AC_DEFINE(SJLJ_EXCEPTIONS, 1,
723 [Define if the compiler is configured for setjmp/longjmp exceptions.])
724 ac_exception_model_name=sjlj
725elif test x$enable_sjlj_exceptions = xno; then
726 ac_exception_model_name="call frame"
727else
728 AC_MSG_ERROR([unable to detect exception model])
3cf88fb4 729fi
cad90591 730AC_LANG_POP(C++)
52a11cbf 731AC_MSG_RESULT($ac_exception_model_name)
3cf88fb4 732
605dc89b
BM
733# If we are non using SJLJ exceptions, and this host does not have support
734# for unwinding from a signal handler, enable checked dereferences and divides.
735if test $can_unwind_signal = no && test $enable_sjlj_exceptions = no; then
736 CHECKREFSPEC=-fcheck-references
737 DIVIDESPEC=-fuse-divide-subroutine
738 EXCEPTIONSPEC=
739fi
740
aed6152d
NN
741# See if the user wants to disable java.net. This is the mildly
742# ugly way that we admit that target-side configuration sucks.
4b68fe8a 743AC_ARG_ENABLE(java-net,
aed6152d
NN
744 AS_HELP_STRING([--disable-java-net],
745 [disable java.net]))
4b68fe8a 746
aed6152d 747# Whether java.net is built by default can depend on the target.
3610e0d5 748if test -z "$enable_java_net"; then
4b68fe8a
TT
749 enable_java_net=${enable_java_net_default-yes}
750fi
006d4a9b 751if test "$enable_java_net" = no; then
e1a3a7d0 752 AC_DEFINE(DISABLE_JAVA_NET, 1, [Define if java.net native functions should be stubbed out.])
4b68fe8a
TT
753fi
754
aed6152d
NN
755# See if the user wants to configure without libffi. Some
756# architectures don't support it, and default values are set in
757# configure.host.
c8fb9813 758AC_ARG_WITH(libffi,
aed6152d
NN
759 AS_HELP_STRING([--without-libffi],
760 [don't use libffi]),
761 [:],
762 [with_libffi=${with_libffi_default-yes}])
c8fb9813
AG
763
764LIBFFI=
765LIBFFIINCS=
766if test "$with_libffi" != no; then
e1a3a7d0 767 AC_DEFINE(USE_LIBFFI, 1, [Define if we're to use libffi.])
ce3b24a7 768 LIBFFI=../libffi/libffi_convenience.la
a15e868a 769 LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I../libffi/include'
c8fb9813
AG
770fi
771AC_SUBST(LIBFFI)
772AC_SUBST(LIBFFIINCS)
773
aed6152d 774# See if the user wants to disable JVMPI support.
54c2f04b 775AC_ARG_ENABLE(jvmpi,
aed6152d
NN
776 AS_HELP_STRING([--disable-jvmpi],
777 [disable JVMPI support]))
54c2f04b
AG
778
779if test "$enable_jvmpi" != no; then
e1a3a7d0 780 AC_DEFINE(ENABLE_JVMPI, 1, [Define if you are using JVMPI.])
54c2f04b
AG
781fi
782
aed6152d
NN
783# If the target is an eCos system, use the appropriate eCos
784# I/O routines.
785# FIXME: this should not be a local option but a global target
786# system; at present there is no eCos target.
b5ee195f 787TARGET_ECOS=${PROCESS-"no"}
ee9dd372 788AC_ARG_WITH(ecos,
7941ceab 789[ --with-ecos enable runtime eCos target support],
ee9dd372
TT
790TARGET_ECOS="$with_ecos"
791)
792
793case "$TARGET_ECOS" in
54a190dd 794 no) case "$host" in
b8fe3c1e 795 *mingw*)
54a190dd 796 PLATFORM=Win32
9b5f18b1 797 PLATFORMNET=Win32
8c78e3a3 798 PLATFORMH=win32.h
e2a450f6 799 CHECK_FOR_BROKEN_MINGW_LD
54a190dd
AM
800 ;;
801 *)
802 PLATFORM=Posix
9b5f18b1 803 PLATFORMNET=Posix
8c78e3a3 804 PLATFORMH=posix.h
54a190dd
AM
805 ;;
806 esac
ee9dd372
TT
807 ;;
808 *)
54a190dd 809 PLATFORM=Ecos
9b5f18b1 810 PLATFORMNET=NoNet
e1a3a7d0 811 AC_DEFINE(ECOS, 1, [Define if you're running eCos.])
8c78e3a3 812 PLATFORMH=posix.h
ee9dd372
TT
813 ;;
814esac
97b8365c 815AC_SUBST(PLATFORM)
614c0fc2 816AC_CONFIG_LINKS(include/platform.h:include/$PLATFORMH)
ee9dd372 817
e1a3a7d0
MK
818AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1,
819 [Define if you have int32_t and uint32_t.]))
820AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1,
821 [Define if you have int32_t and uint32_t.]))
822AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1,
823 [Define if you have u_int32_t]))
824AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1,
825 [Define if you have u_int32_t]))
0d16618c 826
e3f92d3b 827AM_CONDITIONAL(USING_WIN32_PLATFORM, test "$PLATFORM" = Win32)
3d5a109a 828AM_CONDITIONAL(USING_POSIX_PLATFORM, test "$PLATFORM" = Posix || test "$PLATFORM" = Ecos)
ee9dd372 829
f1a66265
GK
830case "$host" in
831 *-darwin*) DARWIN_CRT=true ;;
832 *) DARWIN_CRT=false ;;
833esac
834AM_CONDITIONAL(USING_DARWIN_CRT, $DARWIN_CRT)
835
646714ab 836# This may not be defined in a non-ANS conformant embedded system.
aed6152d 837# FIXME: Should these case a runtime exception in that case?
e1a3a7d0
MK
838AC_EGREP_HEADER(localtime, time.h, AC_DEFINE(HAVE_LOCALTIME, 1,
839 [Define is you have 'localtime' in <time.h>]))
ee9dd372 840
aed6152d
NN
841# Create the subdirectory for natFile.cc, or the attempt
842# to create the link will fail.
ee9dd372
TT
843test -d java || mkdir java
844test -d java/io || mkdir java/io
213858c0 845test -d gnu || mkdir gnu
614c0fc2 846AC_CONFIG_LINKS(java/io/natFile.cc:java/io/natFile${FILE-${PLATFORM}}.cc)
ee9dd372 847
97b8365c 848# Likewise for natConcreteProcess.cc.
42962a48 849test -d java/lang || mkdir java/lang
614c0fc2 850AC_CONFIG_LINKS(java/lang/natConcreteProcess.cc:java/lang/nat${PLATFORM}Process.cc)
42962a48 851
adefdaca 852# Likewise for natVMInetAddress.cc and natVMNetworkInterface.cc.
9b5f18b1 853test -d java/net || mkdir java/net
adefdaca 854AC_CONFIG_LINKS(java/net/natVMInetAddress.cc:java/net/natVMInetAddress${PLATFORMNET}.cc)
bf5d810f 855AC_CONFIG_LINKS(java/net/natVMNetworkInterface.cc:java/net/natVMNetworkInterface${PLATFORMNET}.cc)
4a503716 856
aed6152d 857# Likewise for natPlainSocketImpl.cc and natPlainDatagramSocketImpl.cc.
4a503716
MK
858test -d gnu/java || mkdir gnu/java
859test -d gnu/java/net || mkdir gnu/java/net
614c0fc2
TF
860AC_CONFIG_LINKS(gnu/java/net/natPlainSocketImpl.cc:gnu/java/net/natPlainSocketImpl${PLATFORMNET}.cc)
861AC_CONFIG_LINKS(gnu/java/net/natPlainDatagramSocketImpl.cc:gnu/java/net/natPlainDatagramSocketImpl${PLATFORMNET}.cc)
9b5f18b1 862
463c03f1 863# Likewise for natVMPipe.cc and natVMSelector.cc.
4ba6d1c3 864test -d gnu/java/nio || mkdir gnu/java/nio
463c03f1
GB
865AC_CONFIG_LINKS(gnu/java/nio/natVMPipe.cc:gnu/java/nio/natVMPipe${PLATFORM}.cc)
866AC_CONFIG_LINKS(gnu/java/nio/natVMSelector.cc:gnu/java/nio/natVMSelector${PLATFORM}.cc)
867
868# Likewise for natFileChannelImpl.cc
76c88fd9 869test -d gnu/java/nio/channels || mkdir gnu/java/nio/channels
614c0fc2 870AC_CONFIG_LINKS(gnu/java/nio/channels/natFileChannelImpl.cc:gnu/java/nio/channels/natFileChannel${FILE-${PLATFORM}}.cc)
4ba6d1c3 871
dc6a0b2d 872# Likewise for natVMSecureRandom.cc
fd24db29
MK
873test -d gnu/java/security || mkdir gnu/java/security
874test -d gnu/java/security/jce || mkdir gnu/java/security/jce
dc6a0b2d
AJH
875test -d gnu/java/security/jce/prng || mkdir gnu/java/security/jce/prng
876AC_CONFIG_LINKS(gnu/java/security/jce/prng/natVMSecureRandom.cc:gnu/java/security/jce/prng/natVMSecureRandom${FILE-${PLATFORM}}.cc)
877
4a8e624f 878case "${host}" in
b8fe3c1e 879 *mingw*)
5b5662ee 880 SYSTEMSPEC="-lgdi32 -lws2_32"
83c02e38
ME
881 if test "${with_win32_nlsapi}" = "unicows"; then
882 SYSTEMSPEC="-lunicows $SYSTEMSPEC"
883 fi
4a8e624f 884 ;;
5df19a91 885 *-*-darwin[[912]]*)
f8328d1d 886 SYSTEMSPEC="%{!Zdynamiclib:%{!Zbundle:-allow_stack_execute}}"
5df19a91 887 ;;
4a8e624f
AM
888 *)
889 SYSTEMSPEC=
890 ;;
891esac
f994389b
TT
892AC_SUBST(SYSTEMSPEC)
893
894AC_ARG_WITH(system-zlib,
aed6152d
NN
895 AS_HELP_STRING([--with-system-zlib],
896 [use installed libz]))
f994389b
TT
897ZLIBSPEC=
898AC_SUBST(ZLIBSPEC)
0f9c645e
AG
899ZLIBTESTSPEC=
900AC_SUBST(ZLIBTESTSPEC)
f994389b 901
5aac1dac
TT
902AC_PATH_XTRA
903
aed6152d 904# FIXME: this should be _libs on some hosts.
f994389b
TT
905libsubdir=.libs
906
f202305d
AH
907LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs"
908
909LIBSTDCXXSPEC=
c0975bc7
AP
910# extra LD Flags which are required for targets
911case "${host}" in
f97e8c0f 912*-*-darwin[[0-7]].*)
73079360
AT
913 # For now we have to disable it on darwin[8-9] because it slows down
914 # the linking phase. A possible bug in ld?
c0975bc7
AP
915 # on Darwin -single_module speeds up loading of the dynamic libraries.
916 extra_ldflags_libjava=-Wl,-single_module
917 ;;
f202305d
AH
918arm*linux*eabi)
919 # Some of the ARM unwinder code is actually in libstdc++. We
920 # could in principle replicate it in libgcj, but it's better to
921 # have a dependency on libstdc++.
922 extra_ldflags='-L$(here)/../libstdc++-v3/src/.libs -lstdc++'
923 LIBSTDCXXSPEC=-lstdc++
924 LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++"
925 ;;
6a92b6c7
DK
926*-*-cygwin)
927 extra_ldflags_libjava=-liconv
928 ;;
c0975bc7 929esac
6cf3abb1
AH
930
931# Check for --no-merge-exidx-entries, an ARM-specific linker option.
932AC_CACHE_CHECK([for --no-merge-exidx-entries], [libgcj_cv_exidx],
933 [saved_ldflags="$LDFLAGS"
934 LDFLAGS="${LDFLAGS} -Wl,--no-merge-exidx-entries"
8352cbb4
RO
935 # The IRIX 6 ld doesn't recognize --no-merge-exidx-entries, but only
936 # warns about unknown options, which breaks the testsuite. So enable
937 # AC_LANG_WERROR, but there's currently (autoconf 2.64) no way to turn
938 # it off again. As a workaround, save and restore werror flag like
939 # AC_PATH_XTRA.
940 ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag=$ac_[]_AC_LANG_ABBREV[]_werror_flag
941 AC_LANG_WERROR
6cf3abb1
AH
942 AC_LINK_IFELSE([int main(void){ return 0;} ],
943 [eval "libgcj_cv_exidx=yes"],
944 [eval "libgcj_cv_exidx=no"])
8352cbb4 945 ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag
6cf3abb1
AH
946 LDFLAGS="${saved_ldflags}"]
947)
948if test "${libgcj_cv_exidx}" = "yes"; then
949 SYSTEMSPEC="${SYSTEMSPEC} --no-merge-exidx-entries"
950 extra_ldflags="${extra_ldflags} -Wl,--no-merge-exidx-entries"
951fi
952
c0975bc7 953AC_SUBST(extra_ldflags_libjava)
f202305d
AH
954AC_SUBST(extra_ldflags)
955AC_SUBST(LIBSTDCXXSPEC)
956
957AC_SUBST(LIBGCJTESTSPEC)
c0975bc7 958
aed6152d 959# Allow the GC to be disabled. Can be useful when debugging.
ee9dd372
TT
960AC_MSG_CHECKING([for garbage collector to use])
961AC_ARG_ENABLE(java-gc,
aed6152d
NN
962 AS_HELP_STRING([--enable-java-gc=TYPE],
963 [choose garbage collector (default is boehm)]),
964 [GC=$enableval],
965 [GC=boehm])
ee9dd372
TT
966GCLIBS=
967GCINCS=
968GCDEPS=
f994389b 969GCSPEC=
bf3b8e42 970JC1GCSPEC=
0f9c645e 971GCTESTSPEC=
ee9dd372
TT
972case "$GC" in
973 boehm)
974 AC_MSG_RESULT(boehm)
ce3b24a7 975 GCLIBS=../boehm-gc/libgcjgc_convenience.la
bf3b8e42 976 JC1GCSPEC='-fuse-boehm-gc'
1e6347d8 977 GCTESTSPEC="-L`${PWDCMD-pwd}`/../boehm-gc/.libs -rpath `${PWDCMD-pwd}`/../boehm-gc/.libs"
4109fe85
BM
978 GCINCS='-I$(top_srcdir)/../boehm-gc/include -I../boehm-gc/include'
979 GCOBJS=boehm.lo
ee9dd372 980 GCHDR=boehm-gc.h
aed6152d 981 # The POSIX thread support needs to know this.
e1a3a7d0 982 AC_DEFINE(HAVE_BOEHM_GC, 1, [Define if Boehm GC in use.])
ee9dd372
TT
983 ;;
984 no)
985 AC_MSG_RESULT(none)
ee9dd372
TT
986 GCHDR=no-gc.h
987 ;;
988 *)
cad90591 989 AC_MSG_ERROR([unrecognized collector "$GC"])
ee9dd372
TT
990 ;;
991esac
992AC_SUBST(GCLIBS)
993AC_SUBST(GCINCS)
994AC_SUBST(GCDEPS)
f994389b 995AC_SUBST(GCSPEC)
bf3b8e42 996AC_SUBST(JC1GCSPEC)
0f9c645e 997AC_SUBST(GCTESTSPEC)
614c0fc2 998AC_CONFIG_LINKS(include/java-gc.h:include/$GCHDR)
e3f92d3b
MK
999AM_CONDITIONAL(USING_BOEHMGC, test "$GC" = boehm)
1000AM_CONDITIONAL(USING_NOGC, test "$GC" = no)
ee9dd372
TT
1001
1002
2d65a52e
AO
1003AC_MSG_CHECKING([for thread model used by GCC])
1004THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
1005AC_MSG_RESULT([$THREADS])
ee9dd372
TT
1006
1007case "$THREADS" in
1008 no | none | single)
1009 THREADS=none
1010 ;;
887e6178 1011 aix | posix | posix95 | pthreads)
ee9dd372
TT
1012 THREADS=posix
1013 case "$host" in
1014 *-*-linux*)
e1a3a7d0 1015 AC_DEFINE(LINUX_THREADS, 1, [Define if using POSIX threads on Linux.])
ee9dd372
TT
1016 ;;
1017 esac
1018 ;;
54a190dd
AM
1019 win32)
1020 ;;
1021 decosf1 | irix | mach | os2 | solaris | dce | vxworks)
ee9dd372
TT
1022 AC_MSG_ERROR(thread package $THREADS not yet supported)
1023 ;;
1024 *)
1025 AC_MSG_ERROR($THREADS is an unknown thread package)
1026 ;;
1027esac
ee9dd372 1028
620a329b 1029THREADCXXFLAGS=
5c009209 1030THREADLDFLAGS=
ee9dd372
TT
1031THREADLIBS=
1032THREADINCS=
1033THREADDEPS=
ee9dd372 1034THREADH=
f994389b 1035THREADSPEC=
5a121897 1036THREADSTARTFILESPEC=
ee9dd372
TT
1037case "$THREADS" in
1038 posix)
1518ec60
TT
1039 case "$host" in
1040 *-*-cygwin*)
1041 # Don't set THREADLIBS here. Cygwin doesn't have -lpthread.
1042 ;;
aed6152d 1043 *-*-freebsd[[1234]]*)
da979152
LR
1044 # Before FreeBSD 5, it didn't have -lpthread (or any library which
1045 # merely adds pthread_* functions) but it does have a -pthread switch
1046 # which is required at link-time to select -lc_r *instead* of -lc.
5c009209 1047 THREADLDFLAGS=-pthread
da979152
LR
1048 # Don't set THREADSPEC here as might be expected since -pthread is
1049 # not processed when found within a spec file, it must come from
1050 # the command line. For now, the user must provide the -pthread
1051 # switch to link code compiled with gcj. In future, consider adding
1052 # support for weak references to pthread_* functions ala gthr.h API.
56d6e6b1 1053 THREADSPEC='%{!pthread: %{!shared: %eUnder this configuration, the user must provide -pthread when linking.}}'
da979152
LR
1054 ;;
1055 *-*-freebsd*)
04522557
NM
1056 # FreeBSD >=5.3 implements a model much closer to other modern UNIX
1057 # systems which support threads and -lpthread.
5c009209 1058 THREADLDFLAGS=-pthread
04522557 1059 THREADSPEC=-lpthread
da979152 1060 ;;
68bfb94e 1061 alpha*-dec-osf* | hppa*-hp-hpux*)
620a329b
RS
1062 THREADCXXFLAGS=-pthread
1063 # boehm-gc needs some functions from librt, so link that too.
1064 THREADLIBS='-lpthread -lrt'
1065 THREADSPEC='-lpthread -lrt'
1066 ;;
16c9d3b1
RO
1067 *-*-solaris2.8)
1068 # Always use alternate thread library on Solaris 8. Need libthread
1069 # for TLS support.
1070 # Need -Wl,-R to get it through libtool ...
1071 THREADLIBS='-L/usr/lib/lwp$(MULTISUBDIR) -Wl,-R -Wl,/usr/lib/lwp$(MULTISUBDIR) -lpthread -lthread'
1072 # ... while ld only accepts -R.
1073 THREADSPEC='-L/usr/lib/lwp%{m64:/64} -R/usr/lib/lwp%{m64:/64} -lpthread -lthread'
1074 ;;
1075 *-*-solaris2.9)
1076 # As on Solaris 8, need libthread for TLS support.
1077 THREADLIBS='-lpthread -lthread'
1078 THREADSPEC='-lpthread -lthread'
1079 ;;
1518ec60
TT
1080 *)
1081 THREADLIBS=-lpthread
1082 THREADSPEC=-lpthread
1083 ;;
1084 esac
ee9dd372
TT
1085 THREADH=posix-threads.h
1086 # MIT pthreads doesn't seem to have the mutexattr functions.
1087 # But for now we don't check for it. We just assume you aren't
1088 # using MIT pthreads.
e1a3a7d0 1089 AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT, 1, [Define if using POSIX threads that have the mutexattr functions.])
7f6e0fe6
TT
1090
1091 # If we're using the Boehm GC, then we happen to know that it
1092 # defines _REENTRANT, so we don't bother. Eww.
1093 if test "$GC" != boehm; then
1094 AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads])
1095 fi
1096 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS, 1, [Required define if using POSIX threads])
ee9dd372
TT
1097 ;;
1098
54a190dd 1099 win32)
54a190dd 1100 THREADH=win32-threads.h
5a121897
RM
1101 THREADCXXFLAGS=-mthreads
1102 # We need thread-safe exception handling so _CRT_MT should be set to 1.
1103 # But we do not want the executables created to be dependent on
1104 # mingwm10.dll which provides a __mingwthr_key_dtor() that cleans up
1105 # exception handling contexts. The following kludge achieves this effect
1106 # and causes a dummy __mingwthr_key_dtor() to be linked in from
1107 # libmingw32.a. This causes a memory leak of about 24 bytes per thread.
1108 # A workaround is to explicitly use -mthreads while linking Java programs.
1109 # See PR libgcj/28263.
1110 #
1111 # FIXME: In Java we are able to detect thread death at the end of
1112 # Thread.run() so we should be able to clean up the exception handling
1113 # contexts ourselves.
1114 THREADSTARTFILESPEC='crtmt%O%s'
54a190dd
AM
1115 ;;
1116
ee9dd372 1117 none)
ee9dd372
TT
1118 THREADH=no-threads.h
1119 ;;
1120esac
614c0fc2 1121AC_CONFIG_LINKS(include/java-threads.h:include/$THREADH)
ee9dd372
TT
1122AC_SUBST(THREADLIBS)
1123AC_SUBST(THREADINCS)
1124AC_SUBST(THREADDEPS)
f994389b 1125AC_SUBST(THREADSPEC)
5a121897 1126AC_SUBST(THREADSTARTFILESPEC)
5c009209 1127AC_SUBST(THREADLDFLAGS)
620a329b 1128AC_SUBST(THREADCXXFLAGS)
e3f92d3b
MK
1129AM_CONDITIONAL(USING_POSIX_THREADS, test "$THREADS" = posix)
1130AM_CONDITIONAL(USING_WIN32_THREADS, test "$THREADS" = win32)
1131AM_CONDITIONAL(USING_NO_THREADS, test "$THREADS" = none)
fda2cea1
JJ
1132if test "$enable_shared" != yes; then
1133 use_libgcj_bc=no
1134fi
97c074fd 1135AM_CONDITIONAL(USE_LIBGCJ_BC, test "$use_libgcj_bc" = yes)
ee9dd372 1136
902c431d 1137if test -d sysdep; then true; else mkdir sysdep; fi
614c0fc2 1138AC_CONFIG_LINKS(sysdep/locks.h:sysdep/$sysdeps_dir/locks.h)
18744d9b 1139AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h)
eb2925b6 1140AC_CONFIG_LINKS(sysdep/descriptor.h:$descriptor_h)
45597167 1141
6a92b6c7
DK
1142LIBGCJ_SPEC_LGCJ=-lgcj
1143LIBGCJ_SPEC_LGCJ_BC=-lgcj_bc
1144if test x"$libgcj_spec_lgcj_override" != x ; then
1145 LIBGCJ_SPEC_LGCJ=$libgcj_spec_lgcj_override
1146fi
1147if test x"$libgcj_spec_lgcj_bc_override" != x ; then
1148 LIBGCJ_SPEC_LGCJ_BC=$libgcj_spec_lgcj_bc_override
1149fi
1150LIBGCJ_SPEC="%{s-bc-abi:} $LIBGCJ_SPEC_LGCJ"
97c074fd 1151if test "$use_libgcj_bc" = yes; then
6a92b6c7 1152 LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:$LIBGCJ_SPEC_LGCJ;:$LIBGCJ_SPEC_LGCJ_BC}"
de383aec 1153 LIBGCJ_BC_SPEC="%{findirect-dispatch:-fPIC}"
97c074fd
JJ
1154fi
1155AC_SUBST(LIBGCJ_SPEC)
de383aec 1156AC_SUBST(LIBGCJ_BC_SPEC)
97c074fd 1157
cf6b8de4
TT
1158HASH_SYNC_SPEC=
1159# Hash synchronization is only useful with posix threads right now.
7deae97a 1160if test "$enable_hash_synchronization" = yes && test "$THREADS" != "none"; then
cf6b8de4 1161 HASH_SYNC_SPEC=-fhash-synchronization
860a1536 1162 AC_DEFINE(JV_HASH_SYNCHRONIZATION, 1, [Define if hash synchronization is in use])
cf6b8de4
TT
1163fi
1164AC_SUBST(HASH_SYNC_SPEC)
1165
ee9dd372
TT
1166AM_CONDITIONAL(USING_GCC, test "$GCC" = yes)
1167
212a2676 1168# We're in the tree with gcc, and need to include some of its headers.
8a489465 1169GCC_UNWIND_INCLUDE='-I$(multi_basedir)/./libjava/../gcc'
ee9dd372 1170
9e7823cc 1171if test "x${with_newlib}" = "xyes"; then
ee9dd372
TT
1172 # We are being configured with a cross compiler. AC_REPLACE_FUNCS
1173 # may not work correctly, because the compiler may not be able to
1174 # link executables.
1175
1176 # We assume newlib. This lets us hard-code the functions we know
1177 # we'll have.
e1a3a7d0
MK
1178 AC_DEFINE(HAVE_MEMMOVE, 1, [Define if you have memmove.])
1179 AC_DEFINE(HAVE_MEMCPY, 1, [Define if you have memcpy.])
e1a3a7d0
MK
1180 AC_DEFINE(HAVE_TIME, 1, [Define if you have time.])
1181 AC_DEFINE(HAVE_GMTIME_R, 1, [Define if you have the 'gmtime_r' function])
1182 AC_DEFINE(HAVE_LOCALTIME_R, 1, [Define if you have the 'localtime_r' function.])
5463a4f3 1183 AC_DEFINE(HAVE_USLEEP_DECL, 1, [Define if usleep is declared in <unistd.h>.])
aed6152d 1184 # This is only for POSIX threads.
e1a3a7d0 1185 AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT, 1, [Define if using POSIX threads that have the mutexattr functions.])
ee9dd372 1186
aed6152d 1187 # Assume we do not have getuid and friends.
e1a3a7d0 1188 AC_DEFINE(NO_GETUID, 1, [Define if getuid() and friends are missing.])
9b5f18b1 1189 PLATFORMNET=NoNet
ee9dd372 1190else
91f6762e 1191 AC_CHECK_FUNCS([strerror_r select fstat open fsync sleep opendir \
c8910ef9 1192 localtime_r getpwuid_r getcwd \
1e19cfd2 1193 access stat lstat mkdir rename rmdir unlink utime chmod readlink \
17c2e2c0
TT
1194 nl_langinfo setlocale \
1195 inet_pton uname inet_ntoa \
646714ab 1196 getrlimit sigaction ftruncate mmap \
9327c475 1197 getifaddrs])
ee9dd372 1198 AC_CHECK_FUNCS(inet_aton inet_addr, break)
646714ab 1199 AC_CHECK_HEADERS(unistd.h dlfcn.h sys/resource.h)
2a67186a 1200 # Do an additional check on dld, HP-UX for example has dladdr in libdld.sl
b9f243c2 1201 AC_CHECK_LIB(dl, dladdr, [
2a67186a
AT
1202 AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])], [
1203 AC_CHECK_LIB(dld, dladdr, [
1204 AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])])])
6d1e9d18 1205
8a489465 1206 if test x"$cross_compiling" = x"no"; then
9e7823cc 1207 AC_CHECK_FILES(/proc/self/exe, [
e1a3a7d0 1208 AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])])
7f40378f
DD
1209 AC_CHECK_FILES(/proc/self/maps, [
1210 AC_DEFINE(HAVE_PROC_SELF_MAPS, 1,
1211 [Define if you have /proc/self/maps])])
9e7823cc
L
1212 else
1213 case $host in
1214 *-linux*)
e1a3a7d0 1215 AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])
7f40378f 1216 AC_DEFINE(HAVE_PROC_SELF_MAPS, 1, [Define if you have /proc/self/maps])
9e7823cc
L
1217 ;;
1218 esac
1219 fi
ee9dd372 1220
860a1536 1221 AM_ICONV
999825b0 1222 AM_LC_MESSAGES
ebecd56d 1223 AC_STRUCT_TIMEZONE
860a1536 1224
ee9dd372 1225 AC_CHECK_FUNCS(gethostbyname_r, [
e1a3a7d0
MK
1226 AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1,
1227 [Define if you have the 'gethostbyname_r' function.])
ee9dd372
TT
1228 # There are two different kinds of gethostbyname_r.
1229 # We look for the one that returns `int'.
1230 # Hopefully this check is robust enough.
1231 AC_EGREP_HEADER(int.*gethostbyname_r, netdb.h, [
e1a3a7d0 1232 AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT, 1, [Define if gethostbyname_r returns 'int'.])])
34c5c0e1
AO
1233
1234 case " $GCINCS " in
1235 *" -D_REENTRANT "*) ;;
1236 *)
1237 dnl On DU4.0, gethostbyname_r is only declared with -D_REENTRANT
1238 AC_CACHE_CHECK([whether gethostbyname_r declaration requires -D_REENTRANT],
1239 [libjava_cv_gethostbyname_r_needs_reentrant],
cad90591 1240 [ AC_LANG_PUSH(C++)
b7d9c3ae
MK
1241 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]],
1242 [[gethostbyname_r("", 0, 0);]])],
34c5c0e1
AO
1243 [libjava_cv_gethostbyname_r_needs_reentrant=no], [dnl
1244 CPPFLAGS_SAVE="$CPPFLAGS"
1245 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
b7d9c3ae 1246 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netdb.h>]], [[gethostbyname_r("", 0, 0);]])],
34c5c0e1
AO
1247 [libjava_cv_gethostbyname_r_needs_reentrant=yes],
1248 [libjava_cv_gethostbyname_r_needs_reentrant=fail])
1249 CPPFLAGS="$CPPFLAGS_SAVE"
1250 ])
cad90591 1251 AC_LANG_POP(C++)
34c5c0e1
AO
1252 ])
1253 if test "x$libjava_cv_gethostbyname_r_needs_reentrant" = xyes; then
7f6e0fe6 1254 AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads])
34c5c0e1
AO
1255 fi
1256 ;;
1257 esac
1258
1259 AC_CACHE_CHECK([for struct hostent_data],
1260 [libjava_cv_struct_hostent_data], [dnl
b7d9c3ae 1261 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
34c5c0e1
AO
1262#if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT)
1263# define _REENTRANT 1
1264#endif
b7d9c3ae 1265#include <netdb.h>]], [[struct hostent_data data;]])],
34c5c0e1
AO
1266 [libjava_cv_struct_hostent_data=yes],
1267 [libjava_cv_struct_hostent_data=no])])
1268 if test "x$libjava_cv_struct_hostent_data" = xyes; then
1269 AC_DEFINE(HAVE_STRUCT_HOSTENT_DATA, 1,
1270 [Define if struct hostent_data is defined in netdb.h])
1271 fi
1272 ])
ee9dd372 1273
da979152
LR
1274 # FIXME: libjava source code expects to find a prototype for
1275 # gethostbyaddr_r in netdb.h. The outer check ensures that
1276 # HAVE_GETHOSTBYADDR_R will not be defined if the prototype fails
1277 # to exist where expected. (The root issue: AC_CHECK_FUNCS assumes C
1278 # linkage check is enough, yet C++ code requires proper prototypes.)
1279 AC_EGREP_HEADER(gethostbyaddr_r, netdb.h, [
ee9dd372 1280 AC_CHECK_FUNCS(gethostbyaddr_r, [
e1a3a7d0
MK
1281 AC_DEFINE(HAVE_GETHOSTBYADDR_R, 1,
1282 [Define if you have the 'gethostbyaddr_r' function.])
ee9dd372
TT
1283 # There are two different kinds of gethostbyaddr_r.
1284 # We look for the one that returns `int'.
1285 # Hopefully this check is robust enough.
1286 AC_EGREP_HEADER(int.*gethostbyaddr_r, netdb.h, [
e1a3a7d0
MK
1287 AC_DEFINE(GETHOSTBYADDR_R_RETURNS_INT, 1,
1288 [Define if gethostbyaddr_r returns 'int'.])])])])
ee9dd372
TT
1289
1290 AC_CHECK_FUNCS(gethostname, [
e1a3a7d0
MK
1291 AC_DEFINE(HAVE_GETHOSTNAME, 1,
1292 [Define if you have the 'gethostname' function.])
ee9dd372 1293 AC_EGREP_HEADER(gethostname, unistd.h, [
e1a3a7d0
MK
1294 AC_DEFINE(HAVE_GETHOSTNAME_DECL, 1,
1295 [Define if gethostname is declared in <unistd.h>.])])])
ee9dd372 1296
6b3517ea
RO
1297 AC_CHECK_FUNCS(usleep, [
1298 AC_EGREP_HEADER(usleep, unistd.h, [
e1a3a7d0
MK
1299 AC_DEFINE(HAVE_USLEEP_DECL, 1,
1300 [Define if usleep is declared in <unistd.h>.])])])
6b3517ea 1301
bc5afba4
TT
1302 # Look for these functions in the thread library, but only bother
1303 # if using POSIX threads.
1304 if test "$THREADS" = posix; then
1305 save_LIBS="$LIBS"
1306 LIBS="$LIBS $THREADLIBS"
bc5afba4
TT
1307
1308 # Look for sched_yield. Up to Solaris 2.6, it is in libposix4, since
1309 # Solaris 7 the name librt is preferred.
1310 AC_CHECK_FUNCS(sched_yield, , [
1311 AC_CHECK_LIB(rt, sched_yield, [
1312 AC_DEFINE(HAVE_SCHED_YIELD)
1313 THREADLIBS="$THREADLIBS -lrt"
f1b856d9 1314 THREADSPEC="$THREADSPEC -lrt"], [
bc5afba4
TT
1315 AC_CHECK_LIB(posix4, sched_yield, [
1316 AC_DEFINE(HAVE_SCHED_YIELD)
1317 THREADLIBS="$THREADLIBS -lposix4"
f1b856d9 1318 THREADSPEC="$THREADSPEC -lposix4"])])])
e59a1e40
TT
1319
1320 AC_CHECK_LIB(rt, clock_gettime, [
1321 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define if you have clock_gettime()])
1322 case "$THREADSPEC" in
1323 *-lrt*) ;;
dfd8572b
TT
1324 *)
1325 THREADSPEC="$THREADSPEC -lrt"
1326 THREADLIBS="$THREADLIBS -lrt"
1327 ;;
e59a1e40
TT
1328 esac])
1329
bc5afba4
TT
1330 LIBS="$save_LIBS"
1331
1332 # We can save a little space at runtime if the mutex has m_count
1333 # or __m_count. This is a nice hack for Linux.
b7d9c3ae 1334 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[
bc5afba4 1335 extern pthread_mutex_t *mutex; int q = mutex->m_count;
b7d9c3ae 1336 ]])], AC_DEFINE(PTHREAD_MUTEX_HAVE_M_COUNT, 1,
e1a3a7d0 1337 [Define if pthread_mutex_t has m_count member.]), [
b7d9c3ae 1338 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[
bc5afba4 1339 extern pthread_mutex_t *mutex; int q = mutex->__m_count;
b7d9c3ae 1340 ]])], AC_DEFINE(PTHREAD_MUTEX_HAVE___M_COUNT, 1,
e1a3a7d0 1341 [Define if pthread_mutex_t has __m_count member.]))])
bc5afba4 1342 fi
ee9dd372
TT
1343
1344 # We require a way to get the time.
1345 time_found=no
1346 AC_CHECK_FUNCS(gettimeofday time ftime, time_found=yes)
1347 if test "$time_found" = no; then
1348 AC_MSG_ERROR([no function found to get the time])
1349 fi
1350
138607df 1351 AC_CHECK_FUNCS(memmove)
ee9dd372
TT
1352
1353 # We require memcpy.
1354 memcpy_found=no
1355 AC_CHECK_FUNCS(memcpy, memcpy_found=yes)
1356 if test "$memcpy_found" = no; then
1357 AC_MSG_ERROR([memcpy is required])
1358 fi
2a67186a 1359 # Do an additional check on dld, HP-UX for example has dlopen in libdld.sl
04942eac 1360 AC_CHECK_LIB(dl, dlopen, [
2a67186a
AT
1361 AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])], [
1362 AC_CHECK_LIB(dld, dlopen, [
1363 AC_DEFINE(HAVE_DLOPEN, 1, [Define if dlopen is available])])])
8107bcf9 1364
f994389b
TT
1365 # Some library-finding code we stole from Tcl.
1366 #--------------------------------------------------------------------
1367 # Check for the existence of the -lsocket and -lnsl libraries.
1368 # The order here is important, so that they end up in the right
1369 # order in the command line generated by make. Here are some
1370 # special considerations:
1371 # 1. Use "connect" and "accept" to check for -lsocket, and
1372 # "gethostbyname" to check for -lnsl.
1373 # 2. Use each function name only once: can't redo a check because
1374 # autoconf caches the results of the last check and won't redo it.
1375 # 3. Use -lnsl and -lsocket only if they supply procedures that
1376 # aren't already present in the normal libraries. This is because
1377 # IRIX 5.2 has libraries, but they aren't needed and they're
1378 # bogus: they goof up name resolution if used.
1379 # 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
1380 # To get around this problem, check for both libraries together
1381 # if -lsocket doesn't work by itself.
1382 #--------------------------------------------------------------------
1383
1384 AC_CACHE_CHECK([for socket libraries], gcj_cv_lib_sockets,
1385 [gcj_cv_lib_sockets=
1386 gcj_checkBoth=0
1387 unset ac_cv_func_connect
1388 AC_CHECK_FUNC(connect, gcj_checkSocket=0, gcj_checkSocket=1)
1389 if test "$gcj_checkSocket" = 1; then
1390 unset ac_cv_func_connect
1391 AC_CHECK_LIB(socket, main, gcj_cv_lib_sockets="-lsocket",
1392 gcj_checkBoth=1)
1393 fi
1394 if test "$gcj_checkBoth" = 1; then
1395 gcj_oldLibs=$LIBS
1396 LIBS="$LIBS -lsocket -lnsl"
1397 unset ac_cv_func_accept
1398 AC_CHECK_FUNC(accept,
1399 [gcj_checkNsl=0
1400 gcj_cv_lib_sockets="-lsocket -lnsl"])
1401 unset ac_cv_func_accept
1402 LIBS=$gcj_oldLibs
1403 fi
1404 unset ac_cv_func_gethostbyname
1405 gcj_oldLibs=$LIBS
1406 LIBS="$LIBS $gcj_cv_lib_sockets"
1407 AC_CHECK_FUNC(gethostbyname, ,
1408 [AC_CHECK_LIB(nsl, main,
1409 [gcj_cv_lib_sockets="$gcj_cv_lib_sockets -lnsl"])])
1410 unset ac_cv_func_gethostbyname
1411 LIBS=$gcj_oldLIBS
1412 ])
1413 SYSTEMSPEC="$SYSTEMSPEC $gcj_cv_lib_sockets"
1414
1415 if test "$with_system_zlib" = yes; then
ce3b24a7 1416 AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=)
f994389b
TT
1417 fi
1418
5aac1dac
TT
1419 # Test for Gtk stuff, if asked for.
1420 if test "$use_gtk_awt" = yes; then
f0faf24b 1421 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4)
a1ddb355
MK
1422 AC_SUBST(GTK_CFLAGS)
1423 AC_SUBST(GTK_LIBS)
1424
f0faf24b 1425 PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.4 gthread-2.0 >= 2.4)
1e567c43
TF
1426 AC_SUBST(GLIB_CFLAGS)
1427 AC_SUBST(GLIB_LIBS)
1428
a1ddb355
MK
1429 PKG_CHECK_MODULES(LIBART, libart-2.0 >= 2.1)
1430 AC_SUBST(LIBART_CFLAGS)
1431 AC_SUBST(LIBART_LIBS)
3f8dfdd4
TF
1432
1433 # We require the XTest Extension to support java.awt.Robot.
1434 AC_CHECK_LIB([Xtst], [XTestQueryExtension], [true],
1435 [AC_MSG_ERROR([libXtst not found, required by java.awt.Robot])],
1436 [${X_LIBS}])
5aac1dac
TT
1437 fi
1438
4b7f154f
TT
1439 # On Solaris, and maybe other architectures, the Boehm collector
1440 # requires -ldl.
1441 if test "$GC" = boehm; then
de2b3a07
RO
1442 case "${host}" in
1443 mips-sgi-irix6*)
1444 # IRIX 6 lacks a N64 libdl.so, but only the N32 (default multilib)
1445 # libgcj.spec is used, so override here
1446 SYSTEMSPEC="$SYSTEMSPEC %{!mabi=64:-ldl}"
1447 ;;
1448 *)
1449 AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl")
1450 ;;
1451 esac
4b7f154f 1452 fi
17fdfd9f 1453fi
4b7f154f 1454
349e19d4
AL
1455# Use a semicolon as CLASSPATH separator for MinGW, otherwise a colon.
1456case $build in
1457 *-mingw32) CLASSPATH_SEPARATOR=';' ;;
1458 *) CLASSPATH_SEPARATOR=':' ;;
1459esac
1460AC_SUBST(CLASSPATH_SEPARATOR)
1461
5ec89e89
AO
1462# We must search the source tree for java.lang, since we still don't
1463# have libgcj.jar nor java/lang/*.class
1464GCJ_SAVE_CPPFLAGS=$CPPFLAGS
1e6347d8 1465CPPFLAGS="$CPPFLAGS -I`${PWDCMD-pwd}` -I`cd $srcdir && ${PWDCMD-pwd}`"
5ec89e89
AO
1466
1467# Since some classes depend on this one, we need its source available
1468# before we can do any GCJ compilation test :-(
1469if test ! -f gnu/classpath/Configuration.java; then
1470 test -d gnu || mkdir gnu
1471 test -d gnu/classpath || mkdir gnu/classpath
10cbe699 1472 # Note that it is not crucial that all the values here be correct.
f3392d53 1473 sed -e "s,@prefix@,$expanded_prefix," \
10cbe699
TT
1474 -e "s,@VERSION@,$VERSION," \
1475 -e "s,@LIBDEBUG@,false," \
1476 -e "s,@INIT_LOAD_LIBRARY@,false," \
1477 -e "s,@@,$LIBGCJDEBUG," \
1478 -e "s,@default_toolkit@,$TOOLKIT," \
1479 -e "s,@JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@,false," \
1480 -e "s,@GTK_CAIRO_ENABLED@,false," \
442a795b 1481 -e "s,@ECJ_JAR@,," \
cd6d4007 1482 -e "s,@WANT_NATIVE_BIG_INTEGER@,false," \
10cbe699 1483 < $srcdir/classpath/gnu/classpath/Configuration.java.in \
5ec89e89
AO
1484 > gnu/classpath/Configuration.java
1485 # We do not want to redirect the output of the grep below to /dev/null,
1486 # but we add /dev/null to the input list so that grep will print the
1487 # filename of Configuration.java in case it finds any matches.
10cbe699 1488 if grep '@.*@' gnu/classpath/Configuration.java /dev/null; then
80d8905c 1489 AC_MSG_ERROR([configure.ac is missing the substitutions above])
5ec89e89
AO
1490 fi
1491fi
1492
58d2986d
AO
1493LT_AC_PROG_GCJ
1494
b0fa81ee
TT
1495# Now remove it.
1496rm -f gnu/classpath/Configuration.java
1497
5ec89e89
AO
1498CPPFLAGS=$GCJ_SAVE_CPPFLAGS
1499
8107bc83 1500AC_CHECK_SIZEOF(void *)
99444711 1501
8107bc83 1502AC_C_BIGENDIAN
44bffd9f 1503
f994389b 1504ZLIBS=
ce3b24a7 1505SYS_ZLIBS=
41e0e0cd 1506ZINCS=
ce3b24a7
BM
1507
1508if test -z "$ZLIBSPEC"; then
1509 # Use zlib from the GCC tree.
41e0e0cd 1510 ZINCS='-I$(top_srcdir)/../zlib'
ce3b24a7 1511 ZLIBS=../zlib/libzgcj_convenience.la
f994389b 1512else
ce3b24a7
BM
1513 # System's zlib.
1514 SYS_ZLIBS="$ZLIBSPEC"
f994389b
TT
1515fi
1516AC_SUBST(ZLIBS)
ce3b24a7 1517AC_SUBST(SYS_ZLIBS)
41e0e0cd 1518AC_SUBST(ZINCS)
67a60018 1519AC_SUBST(DIVIDESPEC)
5cb27a46 1520AC_SUBST(CHECKREFSPEC)
e529c2c1 1521AC_SUBST(EXCEPTIONSPEC)
135709e8 1522AC_SUBST(BACKTRACESPEC)
c4ebd83d 1523AC_SUBST(IEEESPEC)
e8e76230 1524AC_SUBST(ATOMICSPEC)
f994389b 1525
4c86f325 1526AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes)
97b8365c 1527AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = yes)
7013e7cd 1528AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes)
4bf95cef 1529AM_CONDITIONAL(INSTALL_BINARIES, test -z "${with_multisubdir}")
52a11cbf 1530AC_SUBST(GCC_UNWIND_INCLUDE)
ee9dd372 1531
f1c3e0a6
AJ
1532# Process the option "--enable-version-specific-runtime-libs"
1533# Calculate toolexeclibdir
1534case ${version_specific_libs} in
1535 yes)
1536 # Need the gcc compiler version to know where to install libraries
1537 # and header files if --enable-version-specific-runtime-libs option
1538 # is selected.
e9bbd9d7 1539 includedir='$(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include/'
ed2e3d33 1540 toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
e9bbd9d7 1541 toolexecmainlibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
f1c3e0a6
AJ
1542 toolexeclibdir=$toolexecmainlibdir
1543 ;;
1544 no)
1545 if test -n "$with_cross_host" &&
1546 test x"$with_cross_host" != x"no"; then
1547 # Install a library built with a cross compiler in tooldir, not libdir.
ed2e3d33 1548 toolexecdir='$(exec_prefix)/$(target_noncanonical)'
f1c3e0a6
AJ
1549 toolexecmainlibdir='$(toolexecdir)/lib'
1550 else
ed2e3d33 1551 toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
f1c3e0a6
AJ
1552 toolexecmainlibdir='$(libdir)'
1553 fi
1554 multi_os_directory=`$CC -print-multi-os-directory`
1555 case $multi_os_directory in
1556 .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
1557 *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
1558 esac
1559 ;;
ff8b9ca8 1560esac
dbf45a01
AO
1561AC_SUBST(toolexecdir)
1562AC_SUBST(toolexecmainlibdir)
1563AC_SUBST(toolexeclibdir)
1564
ed339fbc 1565# Determine gcj and libgcj version number.
acd29efb 1566gcjversion=`cat "$srcdir/../gcc/BASE-VER"`
ed339fbc
MK
1567libgcj_soversion=`awk -F: '/^[[^#]].*:/ { print $1 }' $srcdir/libtool-version`
1568GCJVERSION=$gcjversion
1569AC_SUBST(GCJVERSION)
1570AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERSION", [Short GCJ version ID])
1571
80f06e28
TF
1572# Determine where the standard .db file and GNU Classpath JNI
1573# libraries are found.
50e47dba 1574gcjsubdir=gcj-$gcjversion-$libgcj_soversion
84af16a6
JJ
1575multi_os_directory=`$CC -print-multi-os-directory`
1576case $multi_os_directory in
80f06e28 1577 .)
50e47dba 1578 dbexecdir='$(libdir)/'$gcjsubdir # Avoid /.
80f06e28
TF
1579 ;;
1580 *)
50e47dba 1581 dbexecdir='$(libdir)/'$multi_os_directory/$gcjsubdir
80f06e28 1582 ;;
84af16a6
JJ
1583esac
1584AC_SUBST(dbexecdir)
c9db365d 1585AC_SUBST(gcjsubdir)
1b5a2139 1586
97b8365c
TT
1587AC_DEFINE(JV_VERSION, "1.5.0", [Compatibility version string])
1588AC_DEFINE(JV_API_VERSION, "1.5", [API compatibility version string])
b6121641 1589
dafb7f3f
RS
1590TL_AC_GXX_INCLUDE_DIR
1591
aed6152d
NN
1592# We check for sys/filio.h because Solaris 2.5 defines FIONREAD there.
1593# On that system, sys/ioctl.h will not include sys/filio.h unless
1594# BSD_COMP is defined; just including sys/filio.h is simpler.
aed6152d
NN
1595# We avoid AC_HEADER_DIRENT since we really only care about dirent.h
1596# for now. If you change this, you also must update natFile.cc.
17c2e2c0
TT
1597AC_CHECK_HEADERS([unistd.h bstring.h sys/time.h sys/types.h fcntl.h \
1598 sys/ioctl.h sys/filio.h sys/stat.h sys/select.h \
9e8b671c 1599 sys/socket.h netinet/in.h arpa/inet.h netdb.h \
17c2e2c0 1600 pwd.h sys/config.h stdint.h langinfo.h locale.h \
97b8365c 1601 dirent.h sys/rw_lock.h magic.h ifaddrs.h])
9e8b671c
EB
1602
1603# sys/socket.h is a prerequisite for net/if.h on Solaris.
1604AC_CHECK_HEADERS(net/if.h, [], [], [
1605#ifdef HAVE_SYS_SOCKET_H
1606#include <sys/socket.h>
1607#endif
1608])
1609
04942eac
TT
1610AC_CHECK_HEADERS(inttypes.h, [
1611 AC_DEFINE(HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
1612 AC_DEFINE(JV_HAVE_INTTYPES_H, 1, [Define if <inttypes.h> is available])
1613])
ee9dd372 1614
a3e174ea 1615AC_CHECK_TYPE([ssize_t], [int])
7679f368
TT
1616AC_CHECK_TYPE([magic_t], [
1617 AC_DEFINE(HAVE_MAGIC_T, 1, [Define if magic.h declares magic_t])], [], [
1618#ifdef HAVE_MAGIC_H
1619#include <magic.h>
1620#endif])
ccfe7e46
AO
1621
1622AC_MSG_CHECKING([for in_addr_t])
b7d9c3ae 1623AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
ccfe7e46
AO
1624#if STDC_HEADERS
1625#include <stdlib.h>
1626#include <stddef.h>
1627#endif
1628#if HAVE_NETINET_IN_H
1629#include <netinet/in.h>
b7d9c3ae 1630#endif]], [[in_addr_t foo;]])],
e1a3a7d0
MK
1631 [AC_DEFINE(HAVE_IN_ADDR_T, 1,
1632 [Define to 1 if 'in_addr_t' is defined in sys/types.h or netinet/in.h.])
ccfe7e46
AO
1633 AC_MSG_RESULT(yes)],
1634 [AC_MSG_RESULT(no)])
1635
1636AC_MSG_CHECKING([whether struct ip_mreq is in netinet/in.h])
b7d9c3ae 1637AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>]], [[struct ip_mreq mreq;]])],
e1a3a7d0
MK
1638 [AC_DEFINE(HAVE_STRUCT_IP_MREQ, 1,
1639 [Define if struct ip_mreq is defined in netinet/in.h.])
ccfe7e46
AO
1640 AC_MSG_RESULT(yes)],
1641 [AC_MSG_RESULT(no)])
a3e174ea 1642
60a78ccf 1643AC_MSG_CHECKING([whether struct ipv6_mreq is in netinet/in.h])
b7d9c3ae 1644AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>]], [[struct ipv6_mreq mreq6;]])],
e1a3a7d0
MK
1645 [AC_DEFINE(HAVE_STRUCT_IPV6_MREQ, 1,
1646 [Define if struct ipv6_mreq is defined in netinet/in.h.])
60a78ccf
RO
1647 AC_MSG_RESULT(yes)],
1648 [AC_MSG_RESULT(no)])
1649
ee9dd372 1650AC_MSG_CHECKING([whether struct sockaddr_in6 is in netinet/in.h])
b7d9c3ae 1651AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>]], [[struct sockaddr_in6 addr6;]])],
e1a3a7d0
MK
1652 [AC_DEFINE(HAVE_INET6, 1,
1653 [Define if inet6 structures are defined in netinet/in.h.])
ee9dd372
TT
1654 AC_MSG_RESULT(yes)],
1655 [AC_MSG_RESULT(no)])
1656
1657AC_MSG_CHECKING([for socklen_t in sys/socket.h])
b7d9c3ae 1658AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _POSIX_PII_SOCKET
60a78ccf 1659#include <sys/types.h>
b7d9c3ae 1660#include <sys/socket.h>]], [[socklen_t x = 5;]])],
e1a3a7d0 1661 [AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define it socklen_t typedef is in sys/socket.h.])
ee9dd372
TT
1662 AC_MSG_RESULT(yes)],
1663 [AC_MSG_RESULT(no)])
1664
1665AC_MSG_CHECKING([for tm_gmtoff in struct tm])
b7d9c3ae 1666AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[struct tm tim; tim.tm_gmtoff = 0;]])],
e1a3a7d0 1667 [AC_DEFINE(STRUCT_TM_HAS_GMTOFF, 1, [Define if struct tm has tm_gmtoff field.])
ee9dd372
TT
1668 AC_MSG_RESULT(yes)],
1669 [AC_MSG_RESULT(no)
1670 AC_MSG_CHECKING([for global timezone variable])
1671 dnl FIXME: we don't want a link check here because that won't work
1672 dnl when cross-compiling. So instead we make an assumption that
1673 dnl the header file will mention timezone if it exists.
0659e0e3 1674 dnl Don't find the win32 function timezone
b7d9c3ae 1675 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[void i(){long z2 = 2*timezone;}]])],
e1a3a7d0 1676 [AC_DEFINE(HAVE_TIMEZONE, 1, [Define if global 'timezone' exists.])
ee9dd372 1677 AC_MSG_RESULT(yes)],
0659e0e3
DB
1678 [AC_MSG_RESULT(no)
1679 AC_MSG_CHECKING([for global _timezone variable])
1680 dnl FIXME: As above, don't want link check
b7d9c3ae 1681 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[long z2 = _timezone;]])],
e1a3a7d0
MK
1682 [AC_DEFINE(HAVE_UNDERSCORE_TIMEZONE, 1,
1683 [Define if your platform has the global _timezone variable.])
0659e0e3
DB
1684 AC_MSG_RESULT(yes)],
1685 [AC_MSG_RESULT(no)])])])
ee9dd372 1686
ee9dd372
TT
1687AC_CHECK_PROGS(PERL, perl, false)
1688
6c80c45e 1689SYSDEP_SOURCES=
02731d29 1690SIGNAL_HANDLER_AUX=
6c80c45e
TT
1691
1692case "${host}" in
1693 i?86-*-linux*)
1694 SIGNAL_HANDLER=include/i386-signal.h
1695 ;;
f644b3d1
RO
1696 *-*-solaris2*)
1697 SIGNAL_HANDLER=include/solaris-signal.h
6c80c45e 1698 ;;
5a0bf1ee
RH
1699# ia64-*)
1700# SYSDEP_SOURCES=sysdep/ia64.c
1701# test -d sysdep || mkdir sysdep
1702# ;;
8c5ac2c4
RC
1703 hppa*-*-linux*)
1704 SIGNAL_HANDLER=include/pa-signal.h
1705 ;;
68bfb94e
AT
1706 hppa*-hp-hpux*)
1707 SIGNAL_HANDLER=include/hppa-signal.h
1708 ;;
90b2d2af
AH
1709 ia64-*-linux*)
1710 SIGNAL_HANDLER=include/dwarf2-signal.h
1711 ;;
02731d29 1712 powerpc*-*-linux*)
beea2324 1713 SIGNAL_HANDLER=include/powerpc-signal.h
01936f3a 1714 ;;
c9bffcd5
AH
1715 alpha*-*-linux*)
1716 SIGNAL_HANDLER=include/dwarf2-signal.h
1717 ;;
e793a714
UW
1718 s390*-*-linux*)
1719 SIGNAL_HANDLER=include/s390-signal.h
1720 ;;
7b204712 1721 x86_64*-*-linux*)
399df6db 1722 SIGNAL_HANDLER=include/x86_64-signal.h
02731d29 1723 SIGNAL_HANDLER_AUX=include/i386-signal.h
7b204712 1724 ;;
714708c8
DM
1725 sparc*-*-linux*)
1726 SIGNAL_HANDLER=include/dwarf2-signal.h
1727 ;;
be3d702c
KK
1728 sh*-*-linux*)
1729 SIGNAL_HANDLER=include/sh-signal.h
4977bab6 1730 ;;
b8fe3c1e 1731 *mingw*)
54a190dd
AM
1732 SIGNAL_HANDLER=include/win32-signal.h
1733 ;;
13229468
DD
1734 mips*-*-linux*)
1735 SIGNAL_HANDLER=include/mips-signal.h
1736 ;;
dbc293c8
RZ
1737 m68*-*-linux*)
1738 SIGNAL_HANDLER=include/dwarf2-signal.h
1739 ;;
dc4e3423 1740 powerpc*-*-darwin* | i?86-*-darwin[[912]]* | x86_64-*-darwin[[912]]*)
f8a57be8
GK
1741 SIGNAL_HANDLER=include/darwin-signal.h
1742 ;;
887e6178
DE
1743 powerpc*-*-aix*)
1744 SIGNAL_HANDLER=include/aix-signal.h
1745 ;;
6c80c45e
TT
1746 *)
1747 SIGNAL_HANDLER=include/default-signal.h
1748 ;;
1749esac
1750
1751# If we're using sjlj exceptions, forget what we just learned.
c9bffcd5 1752if test "$enable_sjlj_exceptions" = yes; then
3cf88fb4 1753 SIGNAL_HANDLER=include/default-signal.h
02731d29 1754 SIGNAL_HANDLER_AUX=
3cf88fb4 1755fi
a4e44caa 1756
6c80c45e
TT
1757AC_SUBST(SYSDEP_SOURCES)
1758
02731d29
JJ
1759if test -z "$SIGNAL_HANDLER_AUX"; then
1760 SIGNAL_HANDLER_AUX=$SIGNAL_HANDLER
1761fi
1762
614c0fc2
TF
1763AC_CONFIG_LINKS(include/java-signal.h:$SIGNAL_HANDLER
1764 include/java-signal-aux.h:$SIGNAL_HANDLER_AUX)
a4e44caa 1765
ee9dd372
TT
1766if test "${multilib}" = "yes"; then
1767 multilib_arg="--enable-multilib"
1768else
1769 multilib_arg=
1770fi
1771
b9e6a2e5
TT
1772# See if we support thread-local storage.
1773GCC_CHECK_TLS
5950e016 1774
d4708d9d
JH
1775# For _Unwind_GetIPInfo.
1776GCC_CHECK_UNWIND_GETIPINFO
1777
47742ccd
JJ
1778# See if linker supports anonymous version scripts.
1779AC_CACHE_CHECK([whether ld supports anonymous version scripts],
1780 [libjava_cv_anon_version_script],
1781 [save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
1782 libjava_cv_anon_version_script=no
22a4778a
RO
1783 CFLAGS="$CFLAGS -fPIC";
1784 LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
47742ccd
JJ
1785 echo '{ global: globalsymb*; local: *; };' > conftest.map
1786 AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
22a4778a
RO
1787 [libjava_cv_anon_version_script=gnu], [])
1788 if test x$libjava_cv_anon_version_script = xno; then
1789 case "$target_os" in
1790 solaris2*)
1791 LDFLAGS="$save_LDFLAGS"
1792 LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
1793 # Sun ld doesn't understand wildcards here.
1794 echo '{ global: globalsymbol; local: *; };' > conftest.map
1795 AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
1796 [libjava_cv_anon_version_script=sun], [])
1797 ;;
1798 esac
1799 fi
47742ccd
JJ
1800 CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
1801 ])
22a4778a
RO
1802AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" != no)
1803AM_CONDITIONAL(ANONVERSCRIPT_GNU, test "$libjava_cv_anon_version_script" = gnu)
1804AM_CONDITIONAL(ANONVERSCRIPT_SUN, test "$libjava_cv_anon_version_script" = sun)
47742ccd 1805
d6c122f7
DD
1806# Check if linker supports static linking on a per library basis
1807LD_START_STATIC_SPEC=
1808LD_FINISH_STATIC_SPEC=
bc492e47
RO
1809if $LD --help 2>&1 | grep -- -call_shared >/dev/null 2>&1; then
1810 if $LD --help 2>&1 | grep -- -non_shared >/dev/null 2>&1; then
d6c122f7
DD
1811 LD_START_STATIC_SPEC='%{static-libgcj:-non_shared}'
1812 LD_FINISH_STATIC_SPEC='%{static-libgcj:-call_shared}'
1813 fi
1814fi
1815AC_SUBST(LD_START_STATIC_SPEC)
1816AC_SUBST(LD_FINISH_STATIC_SPEC)
2622c79d 1817
1e6347d8 1818here=`${PWDCMD-pwd}`
ee9dd372
TT
1819AC_SUBST(here)
1820
7e0c895f
TT
1821# We get this from the environment.
1822AC_SUBST(GCJFLAGS)
480222b5 1823
c9db365d
JS
1824AC_ARG_WITH([python-dir],
1825 AS_HELP_STRING([--with-python-dir],
1826 [the location to install Python modules. This path should NOT include the prefix.]),
1827 [with_python_dir=$withval], [with_python_dir=""])
1828
1829if test "x${with_python_dir}" = "x"
1830then
1831 # Needed for installing Python modules during make install.
1832 python_mod_dir="\${prefix}/share/python"
1833 # Needed for substituting into aot-compile*
f3392d53 1834 python_mod_dir_expanded="${expanded_prefix}/share/python"
c9db365d
JS
1835else
1836 python_mod_dir="\${prefix}${with_python_dir}"
f3392d53 1837 python_mod_dir_expanded="${expanded_prefix}${with_python_dir}"
c9db365d
JS
1838fi
1839AC_MSG_RESULT(Python modules dir: ${python_mod_dir_expanded});
1840AC_SUBST(python_mod_dir)
1841AC_SUBST(python_mod_dir_expanded)
1842
1843# needed for aot-compile-rpm
1844MAKE=`which make`
1845AC_SUBST(MAKE)
1846
1847AC_ARG_ENABLE([aot-compile-rpm],
1848 [AS_HELP_STRING([--enable-aot-compile-rpm],
1849 [enable installation of aot-compile-rpm [default=no]])],
1850 [case "${enableval}" in
1851 yes) AOT_RPM_ENABLED=yes ;;
1852 no) AOT_RPM_ENABLED=no ;;
1853 *) AC_MSG_ERROR([Unknown argument to enable/disable aot-compile-rpm]) ;;
1854 esac],
1855 [AOT_RPM_ENABLED=no]
1856)
cd6d4007 1857AM_CONDITIONAL(INSTALL_AOT_RPM, test "x${AOT_RPM_ENABLED}" = xyes)
c9db365d
JS
1858
1859AC_ARG_ENABLE([java-home],
1860 [AS_HELP_STRING([--enable-java-home],
1861 [create a standard JDK-style directory layout in the install tree [default=no]])],
1862 [case "${enableval}" in
1863 yes) JAVA_HOME_ENABLED=yes ;;
1864 no) JAVA_HOME_ENABLED=no ;;
1865 *) AC_MSG_ERROR([Unknown argument to enable/disable java-home]) ;;
1866 esac],
1867 [JAVA_HOME_ENABLED=no]
1868)
cd6d4007 1869AM_CONDITIONAL(CREATE_JAVA_HOME, test "x${JAVA_HOME_ENABLED}" = xyes)
c9db365d
JS
1870
1871# Only do these checks if java-home above is enabled.
cd6d4007 1872if test "x${JAVA_HOME_ENABLED}" = xyes
c9db365d
JS
1873then
1874
1875 AC_ARG_WITH([gcc-suffix],
1876 AS_HELP_STRING([--with-gcc-suffix],
1877 [the GCC tool suffix (defaults to empty string)]),
1878 [gcc_suffix=$withval], [gcc_suffix=""])
1879 AC_MSG_RESULT(GCC suffix: ${gcc_suffix})
1880 AC_SUBST(gcc_suffix)
1881
1882 AC_ARG_WITH([arch-directory],
1883 AS_HELP_STRING([--with-arch-directory],
1884 [the arch directory under jre/lib (defaults to auto-detect)]),
1885 [host_cpu=$withval], [host_cpu=""])
1886
1887 AC_ARG_WITH([os-directory],
1888 AS_HELP_STRING([--with-os-directory],
1889 [the os directory under include (defaults to auto-detect)]),
1890 [host_os=$withval], [host_os=""])
1891
1892 AC_ARG_WITH([origin-name],
1893 AS_HELP_STRING([--with-origin-name],
1894 [the JPackage origin name of this package (default is gcj${gcc_suffix}]),
1895 [origin_name=$withval], [origin_name=gcj${gcc_suffix}])
1896 AC_MSG_RESULT(JPackage origin name: ${origin_name})
1897
1898 AC_ARG_WITH([arch-suffix],
1899 AS_HELP_STRING([--with-arch-suffix],
1900 [the arch directory suffix (default is the empty string]),
1901 [arch_suffix=$withval], [arch_suffix=""])
1902 AC_MSG_RESULT(arch suffix: ${arch_suffix})
1903
1904 AC_ARG_WITH([jvm-root-dir],
1905 AS_HELP_STRING([--with-jvm-root-dir],
1906 [where to install SDK (default is ${prefix}/lib/jvm)]),
1907 [jvm_root_dir=$withval], [jvm_root_dir="\${prefix}/lib/jvm"])
1908 AC_MSG_RESULT(JVM root installation directory: ${jvm_root_dir})
1909
1910 AC_ARG_WITH([jvm-jar-dir],
1911 AS_HELP_STRING([--with-jvm-jar-dir],
1912 [where to install jars (default is ${prefix}/lib/jvm-exports)]),
1913 [jvm_jar_dir=$withval], [jvm_jar_dir=\${prefix}/lib/jvm-exports])
1914 AC_MSG_RESULT(JAR root installation directory: ${jvm_jar_dir})
1915
1916 JAVA_VERSION=1.5.0
1917 BUILD_VERSION=0
1918 AC_SUBST(JAVA_VERSION)
1919 AC_SUBST(BUILD_VERSION)
1920 AC_MSG_RESULT(Java version: ${JAVA_VERSION})
1921
6eaf85d0 1922 jre_dir=jre
c9db365d
JS
1923 jre_lnk=jre-${JAVA_VERSION}-${origin_name}
1924 sdk_lnk=java-${JAVA_VERSION}-${origin_name}
1925
1926 JVM_ROOT_DIR=${jvm_root_dir}
1927 AC_SUBST(JVM_ROOT_DIR)
1928 AC_MSG_RESULT(JVM ROOT directory: ${JVM_ROOT_DIR})
1929
1930 JVM_JAR_ROOT_DIR=${jvm_jar_dir}
1931 AC_SUBST(JVM_JAR_ROOT_DIR)
1932 AC_MSG_RESULT(JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR})
1933
6eaf85d0 1934 JVM_JAR_DIR=${jvm_jar_dir}
c9db365d
JS
1935 AC_SUBST(JVM_JAR_DIR)
1936 AC_MSG_RESULT(JVM JAR directory: ${JVM_JAR_DIR})
1937
1938 JRE_DIR=${jre_dir}
1939 AC_SUBST(JRE_DIR)
1940
c9db365d
JS
1941 JRE_LNK=${jre_lnk}
1942 AC_SUBST(JRE_LNK)
1943
1944 SDK_LNK=${sdk_lnk}
1945 AC_SUBST(SDK_LNK)
1946
6eaf85d0 1947 SDK_BIN_DIR=${jvm_root_dir}/bin
c9db365d
JS
1948 AC_SUBST(SDK_BIN_DIR)
1949 AC_MSG_RESULT(SDK tools directory: ${SDK_BIN_DIR})
1950
6eaf85d0 1951 SDK_LIB_DIR=${jvm_root_dir}/lib
c9db365d
JS
1952 AC_SUBST(SDK_LIB_DIR)
1953 AC_MSG_RESULT(SDK jar directory: ${SDK_LIB_DIR})
1954
6eaf85d0 1955 SDK_INCLUDE_DIR=${jvm_root_dir}/include
c9db365d
JS
1956 AC_SUBST(SDK_INCLUDE_DIR)
1957 AC_MSG_RESULT(SDK include directory: ${SDK_INCLUDE_DIR})
1958
1959 JRE_BIN_DIR=${jvm_root_dir}/${jre_dir}/bin
1960 AC_SUBST(JRE_BIN_DIR)
1961 AC_MSG_RESULT(JRE tools directory: ${JRE_BIN_DIR})
1962
1963 JRE_LIB_DIR=${jvm_root_dir}/${jre_dir}/lib
1964 AC_SUBST(JRE_LIB_DIR)
1965 AC_MSG_RESULT(JRE lib directory: ${JRE_LIB_DIR})
1966
1967 # Find gcj prefix using gcj found in PATH.
1968 gcj_prefix=`which gcj${gcc_suffix} | sed "s%/bin/gcj${gcc_suffix}%%"`
1969
1970 # Where do the gcj binaries live?
1971 # For jhbuild based builds, they all live in a sibling of bin called
1972 # gcj-bin. Check for gcj-bin first, and use bin otherwise.
1973 GCJ_BIN_DIR=`if test -d ${gcj_prefix}/gcj-bin; then echo ${gcj_prefix}/gcj-bin; else echo ${gcj_prefix}/bin; fi`
1974 AC_SUBST(GCJ_BIN_DIR)
1975 AC_MSG_RESULT(GCJ tools directory: ${GCJ_BIN_DIR})
1976
6eaf85d0 1977 AC_MSG_RESULT(host is ${host})
c9db365d
JS
1978 if test "x${host_cpu}" = "x"
1979 then
1980 case ${host} in
1981 *-mingw* | *-cygwin*)
1982 host_cpu=x86;;
1983 i486-* | i586-* | i686-*)
1984 host_cpu=i386;;
6eaf85d0
AJH
1985 x86_64-*)
1986 host_cpu=amd64;;
c9db365d
JS
1987 *)
1988 host_cpu=${host_cpu};;
1989 esac
1990 fi
1991 AC_MSG_RESULT(arch directory: ${host_cpu})
1992 CPU=${host_cpu}
1993 AC_SUBST(CPU)
1994
1995 if test "x${host_os}" = "x"
1996 then
1997 case ${host} in
1998 *-mingw* | *-cygwin*)
1999 host_os=win32;;
2000 *-linux*)
2001 host_os=linux;;
2002 *)
2003 host_os=${host_os};;
2004 esac
2005 fi
2006 echo os directory: ${host_os}
2007 OS=${host_os}
2008 AC_SUBST(OS)
2009
2010 # make an expanded $libdir, for substituting into
2011 # scripts (and other non-Makefile things).
2012 LIBDIR=$libdir
2013 if test "x${exec_prefix}" = "xNONE"
2014 then
f3392d53 2015 lib_exec_prefix=$expanded_prefix
c9db365d
JS
2016 else
2017 lib_exec_prefix=$exec_prefix
2018 fi
2019 LIBDIR=`echo $libdir | sed "s:\\\${exec_prefix}:$lib_exec_prefix:g"`
2020 AC_SUBST(LIBDIR)
2021fi
2022
cad90591
MK
2023AC_CONFIG_FILES([
2024Makefile
2025libgcj.pc
2026libgcj.spec
2027libgcj-test.spec
cad90591
MK
2028gcj/Makefile
2029include/Makefile
2030testsuite/Makefile
c9db365d
JS
2031contrib/aotcompile.py
2032contrib/aot-compile
2033contrib/aot-compile-rpm
2a8428f8 2034contrib/generate-cacerts.pl
c9db365d 2035contrib/rebuild-gcj-db
cad90591
MK
2036])
2037
04e0cb88
L
2038if test ${multilib} = yes; then
2039 multilib_arg="--enable-multilib"
2040else
2041 multilib_arg=
2042fi
cad90591 2043
04e0cb88 2044AC_CONFIG_FILES([scripts/jar], [chmod +x scripts/jar])
cad90591 2045AC_OUTPUT