]>
Commit | Line | Data |
---|---|---|
ee9dd372 TT |
1 | dnl Process this with autoconf to create configure |
2 | AC_INIT(java/lang/System.java) | |
3 | ||
0d16618c | 4 | dnl Can't be done in LIBGCJ_CONFIGURE because that confuses automake. |
ee9dd372 TT |
5 | AC_CONFIG_AUX_DIR(..) |
6 | ||
7 | AC_CANONICAL_SYSTEM | |
8 | ||
9 | dnl We use these options to decide which functions to include. | |
10 | AC_ARG_WITH(target-subdir, | |
7941ceab AG |
11 | [ --with-target-subdir=SUBDIR |
12 | configuring in a subdirectory]) | |
ee9dd372 | 13 | AC_ARG_WITH(cross-host, |
7941ceab | 14 | [ --with-cross-host=HOST configuring with a cross compiler]) |
ee9dd372 TT |
15 | |
16 | LIBGCJ_CONFIGURE(.) | |
17 | ||
18 | AM_CONFIG_HEADER(include/config.h) | |
19 | ||
a3ffcff3 TT |
20 | AM_PROG_LIBTOOL |
21 | ||
ee9dd372 TT |
22 | if test -z "$with_target_subdir" || test "$with_target_subdir" = "."; then |
23 | COMPPATH=. | |
24 | else | |
25 | COMPPATH=.. | |
26 | fi | |
27 | AC_SUBST(COMPPATH) | |
28 | ||
29 | dnl The -no-testsuite modules omit the test subdir. | |
30 | AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite) | |
31 | ||
32 | dnl See whether the user prefers size or speed for Character. | |
33 | dnl The default is size. | |
34 | AC_ARG_ENABLE(fast-character, | |
7941ceab | 35 | [ --enable-fast-character prefer speed over size for Character], |
ee9dd372 TT |
36 | # Nothing |
37 | , AC_DEFINE(COMPACT_CHARACTER)) | |
38 | ||
39 | dnl See if the user has requested runtime debugging. | |
40 | AC_ARG_ENABLE(libgcj-debug, | |
7941ceab | 41 | [ --enable-libgcj-debug enable runtime debugging code], |
ee9dd372 TT |
42 | if test "$enable_libgcj_debug" = yes; then |
43 | AC_DEFINE(DEBUG) | |
44 | fi) | |
45 | ||
58eb6e7c AG |
46 | dnl See if the user has the enterpreter included. |
47 | AC_ARG_ENABLE(interpreter, | |
7941ceab | 48 | [ --enable-interpreter enable interpreter], |
58eb6e7c AG |
49 | if test "$enable_interpreter" = yes; then |
50 | AC_DEFINE(INTERPRETER) | |
51 | fi) | |
52 | ||
ee9dd372 TT |
53 | dnl If the target is an eCos system, use the appropriate eCos |
54 | dnl I/O routines. | |
55 | dnl FIXME: this should not be a local option but a global target | |
56 | dnl system; at present there is no eCos target. | |
57 | TARGET_ECOS="no" | |
58 | AC_ARG_WITH(ecos, | |
7941ceab | 59 | [ --with-ecos enable runtime eCos target support], |
ee9dd372 TT |
60 | TARGET_ECOS="$with_ecos" |
61 | ) | |
62 | ||
63 | case "$TARGET_ECOS" in | |
64 | no) | |
65 | FILE_DESCRIPTOR=natFileDescriptorPosix.cc | |
42962a48 | 66 | PROCESS=Posix |
ee9dd372 TT |
67 | ;; |
68 | *) | |
69 | FILE_DESCRIPTOR=natFileDescriptorEcos.cc | |
42962a48 | 70 | PROCESS=Ecos |
ee9dd372 TT |
71 | AC_DEFINE(ECOS) |
72 | ;; | |
73 | esac | |
74 | ||
0d16618c TT |
75 | AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED)) |
76 | AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED)) | |
77 | AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED)) | |
78 | AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED)) | |
79 | ||
ee9dd372 TT |
80 | |
81 | dnl These may not be defined in a non-ANS conformant embedded system. | |
82 | dnl FIXME: Should these case a runtime exception in that case? | |
83 | AC_EGREP_HEADER(mktime, time.h, AC_DEFINE(HAVE_MKTIME)) | |
84 | AC_EGREP_HEADER(localtime, time.h, AC_DEFINE(HAVE_LOCALTIME)) | |
85 | ||
86 | dnl Create the subdirectory for natFileDescriptor.cc, or the attempt | |
87 | dnl to create the link will fail. | |
88 | test -d java || mkdir java | |
89 | test -d java/io || mkdir java/io | |
90 | AC_LINK_FILES(java/io/$FILE_DESCRIPTOR, java/io/natFileDescriptor.cc) | |
91 | ||
42962a48 TT |
92 | dnl Likewise for ConcreteProcess.java and natConcreteProcess.cc. |
93 | test -d java/lang || mkdir java/lang | |
94 | AC_LINK_FILES(java/lang/${PROCESS}Process.java, java/lang/ConcreteProcess.java) | |
95 | AC_LINK_FILES(java/lang/nat${PROCESS}Process.cc, java/lang/natConcreteProcess.cc) | |
96 | ||
f994389b TT |
97 | SYSTEMSPEC= |
98 | AC_SUBST(SYSTEMSPEC) | |
99 | ||
100 | AC_ARG_WITH(system-zlib, | |
7941ceab | 101 | [ --with-system-zlib use installed libz]) |
f994389b TT |
102 | ZLIBSPEC= |
103 | AC_SUBST(ZLIBSPEC) | |
104 | ||
105 | dnl FIXME: this should be _libs on some hosts. | |
106 | libsubdir=.libs | |
107 | ||
ee9dd372 TT |
108 | dnl Allow the GC to be disabled. Can be useful when debugging. |
109 | AC_MSG_CHECKING([for garbage collector to use]) | |
110 | AC_ARG_ENABLE(java-gc, | |
111 | changequote(<<,>>)dnl | |
7941ceab | 112 | << --enable-java-gc=TYPE choose garbage collector [boehm]>>, |
ee9dd372 TT |
113 | changequote([,]) |
114 | GC=$enableval, | |
115 | GC=boehm) | |
116 | GCLIBS= | |
117 | GCINCS= | |
118 | GCDEPS= | |
119 | GCOBJS= | |
f994389b | 120 | GCSPEC= |
ee9dd372 TT |
121 | case "$GC" in |
122 | boehm) | |
123 | AC_MSG_RESULT(boehm) | |
a3ffcff3 | 124 | GCDEPS='$(top_builddir)/../boehm-gc/libgcjgc.la' |
f994389b TT |
125 | # We include the path to the boehm-gc build directory. |
126 | # See Makefile.am to understand why. | |
127 | GCLIBS="$GCDEPS -L\$(here)/../boehm-gc/$libsubdir" | |
ee9dd372 | 128 | GCINCS='-I$(top_srcdir)/../boehm-gc -I$(top_builddir)/../boehm-gc' |
f994389b | 129 | GCSPEC='-lgcjgc' |
ee9dd372 TT |
130 | dnl We also want to pick up some cpp flags required when including |
131 | dnl boehm-config.h. Yuck. | |
132 | GCINCS="$GCINCS `cat ../boehm-gc/boehm-cflags`" | |
a3ffcff3 | 133 | GCOBJS=boehm.lo |
ee9dd372 TT |
134 | GCHDR=boehm-gc.h |
135 | dnl The POSIX thread support needs to know this. | |
136 | AC_DEFINE(HAVE_BOEHM_GC) | |
137 | ;; | |
138 | no) | |
139 | AC_MSG_RESULT(none) | |
a3ffcff3 | 140 | GCOBJS=nogc.lo |
ee9dd372 TT |
141 | GCHDR=no-gc.h |
142 | ;; | |
143 | *) | |
144 | AC_MSG_ERROR(unrecognized collector \"$GC\") | |
145 | ;; | |
146 | esac | |
147 | AC_SUBST(GCLIBS) | |
148 | AC_SUBST(GCINCS) | |
149 | AC_SUBST(GCDEPS) | |
150 | AC_SUBST(GCOBJS) | |
f994389b | 151 | AC_SUBST(GCSPEC) |
ee9dd372 TT |
152 | AC_LINK_FILES(include/$GCHDR, include/java-gc.h) |
153 | ||
154 | ||
155 | dnl Note that this code is kept in sync with similar code in gcc/configure.in. | |
156 | dnl In particular both packages must make the same decision about which | |
157 | dnl thread package to use. | |
158 | AC_MSG_CHECKING([for threads package to use]) | |
7941ceab | 159 | AC_ARG_ENABLE(threads, [ --enable-threads=TYPE choose threading package], |
ee9dd372 TT |
160 | THREADS=$enableval, |
161 | dnl FIXME: figure out native threads to use here. | |
162 | THREADS=no) | |
163 | ||
164 | if test "$THREADS" = yes; then | |
165 | case "$host" in | |
166 | *-*-vxworks*) | |
167 | THREADS=vxworks | |
168 | ;; | |
169 | *-*-linux*) | |
170 | # FIXME: this isn't correct in all cases. | |
171 | THREADS=posix | |
172 | ;; | |
173 | *-*-win*) | |
174 | THREADS=win32 | |
175 | ;; | |
176 | *-*-irix*) | |
395e3bf9 GZ |
177 | # FIXME: for now, choose POSIX, because we implement that. |
178 | # Later, choose irix threads. | |
179 | THREADS=posix | |
ee9dd372 TT |
180 | ;; |
181 | *-*-solaris*) | |
182 | # FIXME: for now, choose POSIX, because we implement that. | |
183 | # Later, choose solaris threads. | |
184 | THREADS=posix | |
185 | ;; | |
186 | *) | |
187 | # For now. | |
188 | THREADS=none | |
189 | ;; | |
190 | esac | |
191 | fi | |
192 | ||
193 | case "$THREADS" in | |
194 | no | none | single) | |
195 | THREADS=none | |
196 | ;; | |
197 | posix | pthreads) | |
198 | THREADS=posix | |
199 | case "$host" in | |
200 | *-*-linux*) | |
201 | AC_DEFINE(LINUX_THREADS) | |
202 | ;; | |
203 | esac | |
204 | ;; | |
205 | qt) | |
206 | ;; | |
207 | decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks) | |
208 | AC_MSG_ERROR(thread package $THREADS not yet supported) | |
209 | ;; | |
210 | *) | |
211 | AC_MSG_ERROR($THREADS is an unknown thread package) | |
212 | ;; | |
213 | esac | |
214 | AC_MSG_RESULT($THREADS) | |
215 | ||
216 | THREADLIBS= | |
217 | THREADINCS= | |
218 | THREADDEPS= | |
219 | THREADOBJS= | |
220 | THREADH= | |
f994389b | 221 | THREADSPEC= |
ee9dd372 TT |
222 | case "$THREADS" in |
223 | posix) | |
224 | THREADLIBS=-lpthread | |
f994389b | 225 | THREADSPEC=-lpthread |
a3ffcff3 | 226 | THREADOBJS=posix-threads.lo |
ee9dd372 TT |
227 | THREADH=posix-threads.h |
228 | # MIT pthreads doesn't seem to have the mutexattr functions. | |
229 | # But for now we don't check for it. We just assume you aren't | |
230 | # using MIT pthreads. | |
231 | AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT) | |
232 | ;; | |
233 | ||
234 | qt) | |
a3ffcff3 | 235 | THREADDEPS='$(top_builddir)/../qthreads/libgcjcoop.la' |
f994389b TT |
236 | # We include the path to the qthreads build directory. |
237 | # See Makefile.am to understand why. | |
238 | THREADLIBS="$THREADDEPS -L\$(here)/../qthreads/$libsubdir" | |
239 | THREADSPEC='-lgcjcoop' | |
a3ffcff3 | 240 | THREADOBJS=quick-threads.lo |
ee9dd372 TT |
241 | THREADINCS='-I$(top_srcdir)/../qthreads' |
242 | THREADH=quick-threads.h | |
ee9dd372 TT |
243 | ;; |
244 | ||
245 | none) | |
a3ffcff3 | 246 | THREADOBJS=no-threads.lo |
ee9dd372 TT |
247 | THREADH=no-threads.h |
248 | ;; | |
249 | esac | |
250 | AC_LINK_FILES(include/$THREADH, include/java-threads.h) | |
251 | AC_SUBST(THREADLIBS) | |
252 | AC_SUBST(THREADINCS) | |
253 | AC_SUBST(THREADDEPS) | |
254 | AC_SUBST(THREADOBJS) | |
f994389b | 255 | AC_SUBST(THREADSPEC) |
ee9dd372 TT |
256 | |
257 | AM_CONDITIONAL(USING_GCC, test "$GCC" = yes) | |
258 | ||
259 | CANADIAN=no | |
260 | NULL_TARGET=no | |
261 | ||
262 | # Find eh-common.h and support headers. If we're in the tree with | |
263 | # gcc, then look there. Otherwise look in compat-include. If all else | |
264 | # fails, just hope the user has set things up somehow. | |
265 | if test -r $srcdir/../gcc/eh-common.h; then | |
266 | EH_COMMON_INCLUDE='-I$(top_srcdir)/../gcc -I$(top_srcdir)/../include' | |
267 | else | |
268 | if test -d $srcdir/../compat-include; then | |
269 | EH_COMMON_INCLUDE='-I$(top_srcdir)/../compat-include' | |
270 | else | |
271 | EH_COMMON_INCLUDE= | |
272 | fi | |
273 | fi | |
274 | ||
275 | if test -n "${with_cross_host}"; then | |
276 | # We are being configured with a cross compiler. AC_REPLACE_FUNCS | |
277 | # may not work correctly, because the compiler may not be able to | |
278 | # link executables. | |
279 | ||
280 | # We assume newlib. This lets us hard-code the functions we know | |
281 | # we'll have. | |
282 | AC_DEFINE(HAVE_MEMMOVE) | |
283 | AC_DEFINE(HAVE_MEMCPY) | |
284 | AC_DEFINE(HAVE_STRERROR) | |
285 | AC_DEFINE(HAVE_CTIME_R) | |
286 | AC_DEFINE(HAVE_GMTIME_R) | |
287 | AC_DEFINE(HAVE_LOCALTIME_R) | |
288 | dnl This is only for POSIX threads. | |
289 | AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_INIT) | |
290 | dnl We also assume we are using gcc, which provides alloca. | |
291 | AC_DEFINE(HAVE_ALLOCA) | |
292 | ||
f994389b TT |
293 | ZLIBSPEC=-lgcj |
294 | ||
ee9dd372 TT |
295 | # If Canadian cross, then don't pick up tools from the build |
296 | # directory. | |
297 | if test "$build" != "$with_cross_host"; then | |
298 | CANADIAN=yes | |
299 | EH_COMMON_INCLUDE= | |
01b02b11 TT |
300 | GCJ="${target_alias}/gcj" |
301 | else | |
302 | GCJ= | |
ee9dd372 TT |
303 | fi |
304 | else | |
1d189890 | 305 | AC_CHECK_FUNCS(strerror ioctl select fstat open fsync sleep) |
ee9dd372 TT |
306 | AC_CHECK_FUNCS(ctime_r ctime, break) |
307 | AC_CHECK_FUNCS(gmtime_r localtime_r readdir_r getpwuid_r) | |
308 | AC_CHECK_FUNCS(access stat mkdir rename rmdir unlink realpath) | |
309 | AC_CHECK_FUNCS(inet_aton inet_addr, break) | |
6130b0af | 310 | AC_CHECK_FUNCS(inet_pton uname inet_ntoa) |
ee9dd372 TT |
311 | |
312 | AC_CHECK_FUNCS(gethostbyname_r, [ | |
313 | AC_DEFINE(HAVE_GETHOSTBYNAME_R) | |
314 | # There are two different kinds of gethostbyname_r. | |
315 | # We look for the one that returns `int'. | |
316 | # Hopefully this check is robust enough. | |
317 | AC_EGREP_HEADER(int.*gethostbyname_r, netdb.h, [ | |
34c5c0e1 AO |
318 | AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT)]) |
319 | ||
320 | case " $GCINCS " in | |
321 | *" -D_REENTRANT "*) ;; | |
322 | *) | |
323 | dnl On DU4.0, gethostbyname_r is only declared with -D_REENTRANT | |
324 | AC_CACHE_CHECK([whether gethostbyname_r declaration requires -D_REENTRANT], | |
325 | [libjava_cv_gethostbyname_r_needs_reentrant], | |
326 | [ AC_LANG_SAVE | |
327 | AC_LANG_CPLUSPLUS | |
328 | AC_TRY_COMPILE([#include <netdb.h>], | |
329 | [gethostbyname_r("", 0, 0);], | |
330 | [libjava_cv_gethostbyname_r_needs_reentrant=no], [dnl | |
331 | CPPFLAGS_SAVE="$CPPFLAGS" | |
332 | CPPFLAGS="$CPPFLAGS -D_REENTRANT" | |
333 | AC_TRY_COMPILE([#include <netdb.h>], [gethostbyname_r("", 0, 0);], | |
334 | [libjava_cv_gethostbyname_r_needs_reentrant=yes], | |
335 | [libjava_cv_gethostbyname_r_needs_reentrant=fail]) | |
336 | CPPFLAGS="$CPPFLAGS_SAVE" | |
337 | ]) | |
338 | AC_LANG_RESTORE | |
339 | ]) | |
340 | if test "x$libjava_cv_gethostbyname_r_needs_reentrant" = xyes; then | |
341 | AC_DEFINE(GETHOSTBYNAME_R_NEEDS_REENTRANT, 1, [Define if gethostbyname_r is only declared if _REENTRANT is defined]) | |
342 | fi | |
343 | ;; | |
344 | esac | |
345 | ||
346 | AC_CACHE_CHECK([for struct hostent_data], | |
347 | [libjava_cv_struct_hostent_data], [dnl | |
348 | AC_TRY_COMPILE([ | |
349 | #if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT) | |
350 | # define _REENTRANT 1 | |
351 | #endif | |
352 | #include <netdb.h>], [struct hostent_data data;], | |
353 | [libjava_cv_struct_hostent_data=yes], | |
354 | [libjava_cv_struct_hostent_data=no])]) | |
355 | if test "x$libjava_cv_struct_hostent_data" = xyes; then | |
356 | AC_DEFINE(HAVE_STRUCT_HOSTENT_DATA, 1, | |
357 | [Define if struct hostent_data is defined in netdb.h]) | |
358 | fi | |
359 | ]) | |
ee9dd372 TT |
360 | |
361 | AC_CHECK_FUNCS(gethostbyaddr_r, [ | |
362 | AC_DEFINE(HAVE_GETHOSTBYADDR_R) | |
363 | # There are two different kinds of gethostbyaddr_r. | |
364 | # We look for the one that returns `int'. | |
365 | # Hopefully this check is robust enough. | |
366 | AC_EGREP_HEADER(int.*gethostbyaddr_r, netdb.h, [ | |
367 | AC_DEFINE(GETHOSTBYADDR_R_RETURNS_INT)])]) | |
368 | ||
369 | AC_CHECK_FUNCS(gethostname, [ | |
370 | AC_DEFINE(HAVE_GETHOSTNAME) | |
371 | AC_EGREP_HEADER(gethostname, unistd.h, [ | |
372 | AC_DEFINE(HAVE_GETHOSTNAME_DECL)])]) | |
373 | ||
bc5afba4 TT |
374 | # Look for these functions in the thread library, but only bother |
375 | # if using POSIX threads. | |
376 | if test "$THREADS" = posix; then | |
377 | save_LIBS="$LIBS" | |
378 | LIBS="$LIBS $THREADLIBS" | |
379 | # Some POSIX thread systems don't have pthread_mutexattr_settype. | |
380 | # E.g., Solaris. | |
381 | AC_CHECK_FUNCS(pthread_mutexattr_settype pthread_mutexattr_setkind_np) | |
382 | ||
383 | # Look for sched_yield. Up to Solaris 2.6, it is in libposix4, since | |
384 | # Solaris 7 the name librt is preferred. | |
385 | AC_CHECK_FUNCS(sched_yield, , [ | |
386 | AC_CHECK_LIB(rt, sched_yield, [ | |
387 | AC_DEFINE(HAVE_SCHED_YIELD) | |
388 | THREADLIBS="$THREADLIBS -lrt" | |
f1b856d9 | 389 | THREADSPEC="$THREADSPEC -lrt"], [ |
bc5afba4 TT |
390 | AC_CHECK_LIB(posix4, sched_yield, [ |
391 | AC_DEFINE(HAVE_SCHED_YIELD) | |
392 | THREADLIBS="$THREADLIBS -lposix4" | |
f1b856d9 | 393 | THREADSPEC="$THREADSPEC -lposix4"])])]) |
bc5afba4 TT |
394 | LIBS="$save_LIBS" |
395 | ||
396 | # We can save a little space at runtime if the mutex has m_count | |
397 | # or __m_count. This is a nice hack for Linux. | |
398 | AC_TRY_COMPILE([#include <pthread.h>], [ | |
399 | extern pthread_mutex_t *mutex; int q = mutex->m_count; | |
400 | ], AC_DEFINE(PTHREAD_MUTEX_HAVE_M_COUNT), [ | |
401 | AC_TRY_COMPILE([#include <pthread.h>], [ | |
402 | extern pthread_mutex_t *mutex; int q = mutex->__m_count; | |
403 | ], AC_DEFINE(PTHREAD_MUTEX_HAVE___M_COUNT))]) | |
404 | fi | |
ee9dd372 TT |
405 | |
406 | # We require a way to get the time. | |
407 | time_found=no | |
408 | AC_CHECK_FUNCS(gettimeofday time ftime, time_found=yes) | |
409 | if test "$time_found" = no; then | |
410 | AC_MSG_ERROR([no function found to get the time]) | |
411 | fi | |
412 | ||
138607df | 413 | AC_CHECK_FUNCS(memmove) |
ee9dd372 TT |
414 | |
415 | # We require memcpy. | |
416 | memcpy_found=no | |
417 | AC_CHECK_FUNCS(memcpy, memcpy_found=yes) | |
418 | if test "$memcpy_found" = no; then | |
419 | AC_MSG_ERROR([memcpy is required]) | |
420 | fi | |
421 | ||
f994389b TT |
422 | # Some library-finding code we stole from Tcl. |
423 | #-------------------------------------------------------------------- | |
424 | # Check for the existence of the -lsocket and -lnsl libraries. | |
425 | # The order here is important, so that they end up in the right | |
426 | # order in the command line generated by make. Here are some | |
427 | # special considerations: | |
428 | # 1. Use "connect" and "accept" to check for -lsocket, and | |
429 | # "gethostbyname" to check for -lnsl. | |
430 | # 2. Use each function name only once: can't redo a check because | |
431 | # autoconf caches the results of the last check and won't redo it. | |
432 | # 3. Use -lnsl and -lsocket only if they supply procedures that | |
433 | # aren't already present in the normal libraries. This is because | |
434 | # IRIX 5.2 has libraries, but they aren't needed and they're | |
435 | # bogus: they goof up name resolution if used. | |
436 | # 4. On some SVR4 systems, can't use -lsocket without -lnsl too. | |
437 | # To get around this problem, check for both libraries together | |
438 | # if -lsocket doesn't work by itself. | |
439 | #-------------------------------------------------------------------- | |
440 | ||
441 | AC_CACHE_CHECK([for socket libraries], gcj_cv_lib_sockets, | |
442 | [gcj_cv_lib_sockets= | |
443 | gcj_checkBoth=0 | |
444 | unset ac_cv_func_connect | |
445 | AC_CHECK_FUNC(connect, gcj_checkSocket=0, gcj_checkSocket=1) | |
446 | if test "$gcj_checkSocket" = 1; then | |
447 | unset ac_cv_func_connect | |
448 | AC_CHECK_LIB(socket, main, gcj_cv_lib_sockets="-lsocket", | |
449 | gcj_checkBoth=1) | |
450 | fi | |
451 | if test "$gcj_checkBoth" = 1; then | |
452 | gcj_oldLibs=$LIBS | |
453 | LIBS="$LIBS -lsocket -lnsl" | |
454 | unset ac_cv_func_accept | |
455 | AC_CHECK_FUNC(accept, | |
456 | [gcj_checkNsl=0 | |
457 | gcj_cv_lib_sockets="-lsocket -lnsl"]) | |
458 | unset ac_cv_func_accept | |
459 | LIBS=$gcj_oldLibs | |
460 | fi | |
461 | unset ac_cv_func_gethostbyname | |
462 | gcj_oldLibs=$LIBS | |
463 | LIBS="$LIBS $gcj_cv_lib_sockets" | |
464 | AC_CHECK_FUNC(gethostbyname, , | |
465 | [AC_CHECK_LIB(nsl, main, | |
466 | [gcj_cv_lib_sockets="$gcj_cv_lib_sockets -lnsl"])]) | |
467 | unset ac_cv_func_gethostbyname | |
468 | LIBS=$gcj_oldLIBS | |
469 | ]) | |
470 | SYSTEMSPEC="$SYSTEMSPEC $gcj_cv_lib_sockets" | |
471 | ||
472 | if test "$with_system_zlib" = yes; then | |
473 | AC_CHECK_LIB(z, deflate, ZLIBSPEC=-lz, ZLIBSPEC=-lzgcj) | |
474 | else | |
475 | ZLIBSPEC=-lzgcj | |
476 | fi | |
477 | ||
4b7f154f TT |
478 | # On Solaris, and maybe other architectures, the Boehm collector |
479 | # requires -ldl. | |
480 | if test "$GC" = boehm; then | |
481 | AC_CHECK_LIB(dl, main, SYSTEMSPEC="$SYSTEMSPEC -ldl") | |
482 | fi | |
483 | ||
01b02b11 TT |
484 | if test -d "$libgcj_basedir/../gcc/java"; then |
485 | GCJ= | |
486 | else | |
ee9dd372 TT |
487 | CANADIAN=yes |
488 | NULL_TARGET=yes | |
01b02b11 TT |
489 | GCJ=gcj |
490 | fi | |
ee9dd372 TT |
491 | fi |
492 | ||
f994389b TT |
493 | ZLIBS= |
494 | ZDEPS= | |
41e0e0cd | 495 | ZINCS= |
f994389b TT |
496 | if test "x$ZLIBSPEC" = "x-lzgcj"; then |
497 | # We include the path to the zlib build directory. | |
498 | # See Makefile.am to understand why. | |
499 | ZDEPS='$(top_builddir)/../zlib/libzgcj.la' | |
500 | ZLIBS="$ZDEPS -L\$(here)/../zlib/$libsubdir" | |
41e0e0cd | 501 | ZINCS='-I$(top_srcdir)/../zlib' |
f994389b TT |
502 | else |
503 | ZLIBS="$ZLIBSPEC" | |
504 | fi | |
505 | AC_SUBST(ZLIBS) | |
506 | AC_SUBST(ZDEPS) | |
41e0e0cd | 507 | AC_SUBST(ZINCS) |
67a60018 | 508 | AC_SUBST(DIVIDESPEC) |
f994389b | 509 | |
ee9dd372 TT |
510 | AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes) |
511 | AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes) | |
512 | AM_CONDITIONAL(NATIVE, test "$CANADIAN" = no || test "$NULL_TARGET" = yes) | |
b48ed568 | 513 | AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") |
ee9dd372 TT |
514 | AC_SUBST(EH_COMMON_INCLUDE) |
515 | ||
01b02b11 TT |
516 | # Determine gcj version number. |
517 | if test "$GCJ" = ""; then | |
518 | if test -z "${with_multisubdir}"; then | |
519 | builddotdot=. | |
520 | else | |
521 | builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'` | |
522 | fi | |
523 | dir="`cd ${builddotdot}/../../gcc && pwd`" | |
524 | GCJ="$dir/gcj -B$dir/" | |
525 | fi | |
526 | changequote(<<,>>) | |
527 | gcjvers="`$GCJ -v 2>&1 | sed -n 's/^.*version \([^ ]*\).*$/\1/p'`" | |
528 | changequote([,]) | |
529 | AC_DEFINE_UNQUOTED(GCJVERSION, "$gcjvers") | |
530 | ||
086920c3 TT |
531 | # See if gcj supports -fuse-divide-subroutine. gcc 2.95 does not, and |
532 | # we want to continue to support that version. | |
533 | cat > conftest.java << 'END' | |
534 | public class conftest { } | |
535 | END | |
536 | use_fuse=yes | |
8801244b TT |
537 | $GCJ -fuse-divide-subroutine -fsyntax-only conftest.java > /dev/null 2>&1 \ |
538 | || use_fuse=no | |
086920c3 TT |
539 | rm -f conftest.java |
540 | if test "$use_fuse" = no; then | |
541 | DIVIDESPEC= | |
542 | fi | |
543 | ||
ee9dd372 TT |
544 | AC_SUBST(AM_RUNTESTFLAGS) |
545 | ||
546 | dnl We check for sys/filio.h because Solaris 2.5 defines FIONREAD there. | |
547 | dnl On that system, sys/ioctl.h will not include sys/filio.h unless | |
548 | dnl BSD_COMP is defined; just including sys/filio.h is simpler. | |
130e63de | 549 | AC_CHECK_HEADERS(unistd.h bstring.h sys/time.h sys/types.h fcntl.h sys/ioctl.h sys/filio.h sys/stat.h sys/select.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pwd.h sys/config.h inttypes.h stdint.h) |
ee9dd372 TT |
550 | dnl We avoid AC_HEADER_DIRENT since we really only care about dirent.h |
551 | dnl for now. If you change this, you also must update natFile.cc. | |
552 | AC_CHECK_HEADERS(dirent.h) | |
553 | ||
a3e174ea | 554 | AC_CHECK_TYPE([ssize_t], [int]) |
ccfe7e46 AO |
555 | |
556 | AC_MSG_CHECKING([for in_addr_t]) | |
557 | AC_TRY_COMPILE([#include <sys/types.h> | |
558 | #if STDC_HEADERS | |
559 | #include <stdlib.h> | |
560 | #include <stddef.h> | |
561 | #endif | |
562 | #if HAVE_NETINET_IN_H | |
563 | #include <netinet/in.h> | |
564 | #endif], [in_addr_t foo;], | |
565 | [AC_DEFINE([HAVE_IN_ADDR_T]) | |
566 | AC_MSG_RESULT(yes)], | |
567 | [AC_MSG_RESULT(no)]) | |
568 | ||
569 | AC_MSG_CHECKING([whether struct ip_mreq is in netinet/in.h]) | |
570 | AC_TRY_COMPILE([#include <netinet/in.h>], [struct ip_mreq mreq;], | |
571 | [AC_DEFINE(HAVE_STRUCT_IP_MREQ) | |
572 | AC_MSG_RESULT(yes)], | |
573 | [AC_MSG_RESULT(no)]) | |
a3e174ea | 574 | |
ee9dd372 TT |
575 | AC_MSG_CHECKING([whether struct sockaddr_in6 is in netinet/in.h]) |
576 | AC_TRY_COMPILE([#include <netinet/in.h>], [struct sockaddr_in6 addr6;], | |
577 | [AC_DEFINE(HAVE_INET6) | |
578 | AC_MSG_RESULT(yes)], | |
579 | [AC_MSG_RESULT(no)]) | |
580 | ||
581 | AC_MSG_CHECKING([for socklen_t in sys/socket.h]) | |
582 | AC_TRY_COMPILE([#include <sys/socket.h>], [socklen_t x = 5;], | |
583 | [AC_DEFINE(HAVE_SOCKLEN_T) | |
584 | AC_MSG_RESULT(yes)], | |
585 | [AC_MSG_RESULT(no)]) | |
586 | ||
587 | AC_MSG_CHECKING([for tm_gmtoff in struct tm]) | |
588 | AC_TRY_COMPILE([#include <time.h>], [struct tm tim; tim.tm_gmtoff = 0;], | |
589 | [AC_DEFINE(STRUCT_TM_HAS_GMTOFF) | |
590 | AC_MSG_RESULT(yes)], | |
591 | [AC_MSG_RESULT(no) | |
592 | AC_MSG_CHECKING([for global timezone variable]) | |
593 | dnl FIXME: we don't want a link check here because that won't work | |
594 | dnl when cross-compiling. So instead we make an assumption that | |
595 | dnl the header file will mention timezone if it exists. | |
596 | AC_TRY_COMPILE([#include <time.h>], [long z2 = timezone;], | |
597 | [AC_DEFINE(HAVE_TIMEZONE) | |
598 | AC_MSG_RESULT(yes)], | |
599 | [AC_MSG_RESULT(no)])]) | |
600 | ||
601 | AC_FUNC_ALLOCA | |
602 | ||
603 | AC_CHECK_PROGS(PERL, perl, false) | |
604 | ||
a4e44caa AH |
605 | case "${host}" in |
606 | i?86-*-linux*) | |
607 | SIGNAL_HANDLER=include/i386-signal.h | |
608 | ;; | |
01f78a02 AH |
609 | sparc-sun-solaris*) |
610 | SIGNAL_HANDLER=include/sparc-signal.h | |
611 | ;; | |
a4e44caa AH |
612 | *) |
613 | SIGNAL_HANDLER=include/default-signal.h | |
614 | ;; | |
615 | esac | |
616 | ||
617 | AC_LINK_FILES($SIGNAL_HANDLER, include/java-signal.h) | |
618 | ||
ee9dd372 TT |
619 | if test "${multilib}" = "yes"; then |
620 | multilib_arg="--enable-multilib" | |
621 | else | |
622 | multilib_arg= | |
623 | fi | |
624 | ||
625 | here=`pwd` | |
626 | AC_SUBST(here) | |
627 | ||
27e934d8 | 628 | AC_OUTPUT(Makefile libgcj.spec gcj/Makefile include/Makefile testsuite/Makefile, |
ee9dd372 TT |
629 | [if test -n "$CONFIG_FILES"; then |
630 | ac_file=Makefile . ${libgcj_basedir}/../config-ml.in | |
631 | fi], | |
632 | srcdir=${srcdir} | |
633 | host=${host} | |
634 | target=${target} | |
635 | with_multisubdir=${with_multisubdir} | |
636 | ac_configure_args="${multilib_arg} ${ac_configure_args}" | |
637 | CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} | |
638 | libgcj_basedir=${libgcj_basedir} | |
639 | CC="${CC}" | |
640 | CXX="${CXX}" | |
641 | ) |