*** empty log message ***
[bpt/guile.git] / configure.in
1 dnl configuration script for Guile
2 dnl Process this file with autoconf to produce configure.
3 dnl
4 dnl Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
5 dnl
6 dnl This file is part of GUILE
7 dnl
8 dnl GUILE is free software; you can redistribute it and/or modify it
9 dnl under the terms of the GNU General Public License as published by
10 dnl the Free Software Foundation; either version 2, or (at your
11 dnl option) any later version.
12 dnl
13 dnl GUILE is distributed in the hope that it will be useful, but
14 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
15 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 dnl General Public License for more details.
17 dnl
18 dnl You should have received a copy of the GNU General Public License
19 dnl along with GUILE; see the file COPYING. If not, write to the
20 dnl Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 dnl Boston, MA 02111-1307, USA.
22
23 AC_PREREQ(2.50)
24
25 AC_INIT
26 AC_CONFIG_SRCDIR([Makefile.in])
27 . $srcdir/GUILE-VERSION
28 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
29 AM_MAINTAINER_MODE
30 AM_CONFIG_HEADER(libguile/scmconfig.h)
31
32 #--------------------------------------------------------------------
33 #
34 # Independent Subdirectories
35 #
36 #--------------------------------------------------------------------
37
38 AC_CONFIG_SUBDIRS(guile-readline)
39
40 #--------------------------------------------------------------------
41 #
42 # User options
43 #
44 #--------------------------------------------------------------------
45
46 AC_ARG_ENABLE(error-on-warning,
47 [ --enable-error-on-warning treat compile warnings as errors],
48 [case "${enableval}" in
49 yes | y) CFLAGS="${CFLAGS} -Werror"; enable_compile_warnings=no ;;
50 no | n) ;;
51 *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
52 esac])
53
54 AC_ARG_ENABLE(debug-freelist,
55 [ --enable-debug-freelist include garbage collector freelist debugging code],
56 if test "$enable_debug_freelist" = y || test "$enable_debug_freelist" = yes; then
57 AC_DEFINE(GUILE_DEBUG_FREELIST)
58 fi)
59
60 AC_ARG_ENABLE(debug-malloc,
61 [ --enable-debug-malloc include malloc debugging code],
62 if test "$enable_debug_malloc" = y || test "$enable_debug_malloc" = yes; then
63 AC_DEFINE(GUILE_DEBUG_MALLOC)
64 fi)
65
66 AC_ARG_ENABLE(guile-debug,
67 [ --enable-guile-debug include internal debugging functions],
68 if test "$enable_guile_debug" = y || test "$enable_guile_debug" = yes; then
69 AC_DEFINE(GUILE_DEBUG)
70 fi)
71
72 AC_ARG_ENABLE(arrays,
73 [ --disable-arrays omit array and uniform array support],,
74 enable_arrays=yes)
75
76 AC_ARG_ENABLE(posix,
77 [ --disable-posix omit posix interfaces],,
78 enable_posix=yes)
79
80 AC_ARG_ENABLE(networking,
81 [ --disable-networking omit networking interfaces],,
82 enable_networking=yes)
83
84 AC_ARG_ENABLE(regex,
85 [ --disable-regex omit regular expression interfaces],,
86 enable_regex=yes)
87
88 AC_ARG_ENABLE(htmldoc,
89 [ --enable-htmldoc build HTML documentation as well as Info],
90 [if test "$enable_htmldoc" = "" || test "$enable_htmldoc" = y || test "$enable_htmldoc" = yes; then
91 htmldoc_enabled=yes
92 AC_PATH_PROG(TEXI2HTML, texi2html, not found)
93 if test "$TEXI2HTML" = "not found"; then
94 echo
95 echo Building HTML documentation requires the \`texi2html\' program,
96 echo which appears not to be present on your machine.
97 echo
98 echo \`texi2html\' is available from
99 echo 'http://www.mathematik.uni-kl.de/~obachman/Texi2html/.'
100 echo
101 echo In the meantime, to build the guile-doc distribution
102 echo without HTML enabled, please rerun \`./configure\' without
103 echo the \`--enable-htmldoc\' option.
104 exit -1
105 fi
106 fi])
107
108 AM_CONDITIONAL(HTMLDOC, test x$htmldoc_enabled = xyes)
109
110 AC_ARG_ENABLE(deprecated,
111 [ --disable-deprecated omit deprecated features [no]])
112
113 if test "$enable_deprecated" = no; then
114 AC_DEFINE(SCM_ENABLE_DEPRECATED, 0)
115 else
116 if test "$enable_deprecated" = yes || test "$enable_deprecated" = ""; then
117 warn_default=summary
118 elif test "$enable_deprecated" = shutup; then
119 warn_default=no
120 else
121 warn_default=$enable_deprecated
122 fi
123 AC_DEFINE(SCM_ENABLE_DEPRECATED, 1)
124 AC_DEFINE_UNQUOTED(SCM_WARN_DEPRECATED_DEFAULT, "$warn_default")
125 fi
126
127 dnl The --disable-debug used to control these two. But now they are
128 dnl a required part of the distribution.
129 AC_DEFINE(DEBUG_EXTENSIONS)
130 AC_DEFINE(READER_EXTENSIONS)
131
132 dnl files which are destined for separate modules.
133
134 if test "$enable_arrays" = yes; then
135 LIBOBJS="$LIBOBJS ramap.o unif.o"
136 AC_DEFINE(HAVE_ARRAYS)
137 fi
138
139 if test "$enable_posix" = yes; then
140 LIBOBJS="$LIBOBJS filesys.o posix.o"
141 AC_DEFINE(HAVE_POSIX)
142 fi
143
144 if test "$enable_networking" = yes; then
145 LIBOBJS="$LIBOBJS net_db.o socket.o"
146 AC_DEFINE(HAVE_NETWORKING)
147 fi
148
149 if test "$enable_debug_malloc" = yes; then
150 LIBOBJS="$LIBOBJS debug-malloc.o"
151 fi
152
153 #--------------------------------------------------------------------
154
155 dnl Some more checks for Win32
156 AC_CYGWIN
157 AC_MINGW32
158 AC_LIBTOOL_WIN32_DLL
159
160 AC_LIBLTDL_CONVENIENCE
161 AC_CONFIG_SUBDIRS(libltdl)
162
163 AC_PROG_INSTALL
164 AC_PROG_CC
165 AC_PROG_CPP
166 AC_LIBTOOL_DLOPEN
167
168 AC_AIX
169 AC_ISC_POSIX
170 AC_MINIX
171
172 AM_PROG_CC_STDC
173 AM_PROG_LIBTOOL
174
175 AC_C_CONST
176 AC_C_INLINE
177 AC_C_BIGENDIAN
178
179 AC_CHECK_SIZEOF(int)
180 AC_CHECK_SIZEOF(long)
181
182 dnl Check for integral types that can represent the range of pointers.
183 dnl If these types don't exist on this platform, they are replaced by
184 dnl "unsigned long" and "long", respectively.
185
186 AC_CHECK_HEADERS(stdint.h)
187 AC_CHECK_HEADERS(inttypes.h)
188 AC_CHECK_TYPES([uintptr_t, ptrdiff_t])
189
190 AC_CACHE_CHECK([for long longs], scm_cv_long_longs,
191 AC_TRY_COMPILE(,
192 [long long a],
193 scm_cv_long_longs=yes,
194 scm_cv_long_longs=no))
195 if test "$scm_cv_long_longs" = yes; then
196 AC_DEFINE(HAVE_LONG_LONGS)
197 AC_CHECK_SIZEOF(long long)
198 fi
199
200 AC_CHECK_SIZEOF(void *)
201
202 if test "$ac_cv_sizeof_long" -ne "$ac_cv_sizeof_void_p"; then
203 AC_MSG_ERROR(sizes of long and void* are not identical)
204 fi
205
206 AC_HEADER_STDC
207 AC_HEADER_DIRENT
208 AC_HEADER_TIME
209 AC_HEADER_SYS_WAIT
210 AC_CHECK_HEADERS(io.h libc.h limits.h malloc.h memory.h string.h regex.h rxposix.h rx/rxposix.h sys/ioctl.h sys/select.h sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h sys/utime.h time.h unistd.h utime.h pwd.h grp.h sys/utsname.h direct.h)
211 GUILE_HEADER_LIBC_WITH_UNISTD
212
213 AC_TYPE_GETGROUPS
214 AC_TYPE_SIGNAL
215 AC_TYPE_MODE_T
216
217 AC_CHECK_LIB(m, main)
218 AC_CHECK_FUNCS(gethostbyname)
219 if test $ac_cv_func_gethostbyname = no; then
220 AC_CHECK_LIB(nsl, gethostbyname)
221 fi
222 AC_CHECK_FUNCS(connect)
223 if test $ac_cv_func_connect = no; then
224 AC_CHECK_LIB(socket, connect)
225 fi
226
227 dnl
228 dnl Check for Winsock and other functionality on Win32 (*not* CygWin)
229 dnl
230 EXTRA_DEFS=""
231 EXTRA_LIB_DEFS=""
232 if test "$MINGW32" = "yes" ; then
233 AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCK2_H], 1,
234 [Define if you have the <winsock2.h> header file.])])
235 AC_CHECK_LIB(ws2_32, main)
236 LIBOBJS="$LIBOBJS uname.o dirent.o"
237 if test $enable_shared = yes ; then
238 EXTRA_DEFS="-D__SCM_IMPORT__ -D__REGEX_IMPORT__ -D__CRYPT_IMPORT__"
239 EXTRA_LIB_DEFS="-D__REGEX_IMPORT__ -D__CRYPT_IMPORT__"
240 fi
241 fi
242 AC_SUBST(EXTRA_DEFS)
243 AC_SUBST(EXTRA_LIB_DEFS)
244
245 dnl Check for dynamic linking
246
247 use_modules=yes
248 AC_ARG_WITH(modules,
249 [ --with-modules[=FILES] Add support for dynamic modules],
250 use_modules="$withval")
251 test -z "$use_modules" && use_modules=yes
252 DLPREOPEN=
253 if test "$use_modules" != no; then
254 AC_DEFINE(DYNAMIC_LINKING)
255 if test "$use_modules" = yes; then
256 DLPREOPEN="-dlpreopen force"
257 else
258 DLPREOPEN="-export-dynamic"
259 for module in $use_modules; do
260 DLPREOPEN="$DLPREOPEN -dlopen $module"
261 done
262 fi
263 fi
264 AC_SUBST(INCLTDL)
265 AC_SUBST(LIBLTDL)
266 AC_SUBST(DLPREOPEN)
267
268 AC_CHECK_FUNCS(ctermid ftime fchown getcwd geteuid gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork setitimer getitimer)
269
270 AC_CHECK_HEADERS(crypt.h sys/resource.h sys/file.h)
271 AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
272 AC_CHECK_LIB(crypt, crypt)
273
274 ### Some systems don't declare some functions. On such systems, we
275 ### need to at least provide our own K&R-style declarations.
276
277 ### GUILE_FUNC_DECLARED(function, headerfile)
278
279 ### Check for a declaration of FUNCTION in HEADERFILE; if it is
280 ### not there, #define MISSING_FUNCTION_DECL.
281 AC_DEFUN(GUILE_FUNC_DECLARED, [
282 AC_CACHE_CHECK(for $1 declaration, guile_cv_func_$1_declared,
283 AC_EGREP_HEADER($1, $2,
284 guile_cv_func_$1_declared=yes,
285 guile_cv_func_$1_declared=no))
286 if test [x$guile_cv_func_]$1[_declared] = xno; then
287 AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL])
288 fi
289 ])
290
291 GUILE_FUNC_DECLARED(strptime, time.h)
292 GUILE_FUNC_DECLARED(sleep, unistd.h)
293 GUILE_FUNC_DECLARED(usleep, unistd.h)
294
295 ### On some systems usleep has no return value. If it does have one,
296 ### we'd like to return it; otherwise, we'll fake it.
297 AC_CACHE_CHECK([return type of usleep], guile_cv_func_usleep_return_type,
298 [AC_EGREP_HEADER(changequote(<, >)<void[ ]+usleep>changequote([, ]),
299 unistd.h,
300 [guile_cv_func_usleep_return_type=void],
301 [guile_cv_func_usleep_return_type=int])])
302 case "$guile_cv_func_usleep_return_type" in
303 "void" )
304 AC_DEFINE(USLEEP_RETURNS_VOID)
305 ;;
306 esac
307
308 AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1)
309 if test -n "$have_sys_un_h" ; then
310 AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS)
311 fi
312
313 AC_CHECK_FUNCS(socketpair getgroups setpwent pause tzset)
314
315 AC_CHECK_FUNCS(sethostent gethostent endhostent dnl
316 setnetent getnetent endnetent dnl
317 setprotoent getprotoent endprotoent dnl
318 setservent getservent endservent dnl
319 getnetbyaddr getnetbyname dnl
320 inet_lnaof inet_makeaddr inet_netof hstrerror dnl
321 inet_pton inet_ntop)
322
323 dnl Some systems do not declare this. Some systems do declare it, as a
324 dnl macro. With cygwin it may be in a DLL.
325
326 AC_MSG_CHECKING(whether netdb.h declares h_errno)
327 AC_CACHE_VAL(guile_cv_have_h_errno,
328 [AC_TRY_COMPILE([#include <netdb.h>],
329 [int a = h_errno;],
330 guile_cv_have_h_errno=yes, guile_cv_have_h_errno=no)])
331 AC_MSG_RESULT($guile_cv_have_h_errno)
332 if test $guile_cv_have_h_errno = yes; then
333 AC_DEFINE(HAVE_H_ERRNO)
334 fi
335
336 AC_MSG_CHECKING(whether uint32_t is defined)
337 AC_CACHE_VAL(guile_cv_have_uint32_t,
338 [AC_TRY_COMPILE([#include <sys/types.h>
339 #include <netdb.h>],
340 [uint32_t a;],
341 guile_cv_have_uint32_t=yes, guile_cv_have_uint32_t=no)])
342 AC_MSG_RESULT($guile_cv_have_uint32_t)
343 if test $guile_cv_have_uint32_t = yes; then
344 AC_DEFINE(HAVE_UINT32_T)
345 fi
346
347 AC_MSG_CHECKING(for working IPv6 support)
348 AC_CACHE_VAL(guile_cv_have_ipv6,
349 [AC_TRY_COMPILE([#include <netinet/in.h>
350 #include <sys/socket.h>],
351 [struct sockaddr_in6 a; a.sin6_family = AF_INET6;],
352 guile_cv_have_ipv6=yes, guile_cv_have_ipv6=no)])
353 AC_MSG_RESULT($guile_cv_have_ipv6)
354 if test $guile_cv_have_ipv6 = yes; then
355 AC_DEFINE(HAVE_IPV6)
356 fi
357
358 # included in rfc2553 but not in older implementations, e.g., glibc 2.1.3.
359 AC_MSG_CHECKING(whether sockaddr_in6 has sin6_scope_id)
360 AC_CACHE_VAL(guile_cv_have_sin6_scope_id,
361 [AC_TRY_COMPILE([#include <netinet/in.h>],
362 [struct sockaddr_in6 sok; sok.sin6_scope_id = 0;],
363 guile_cv_have_sin6_scope_id=yes, guile_cv_have_sin6_scope_id=no)])
364 AC_MSG_RESULT($guile_cv_have_sin6_scope_id)
365 if test $guile_cv_have_sin6_scope_id = yes; then
366 AC_DEFINE(HAVE_SIN6_SCOPE_ID)
367 fi
368
369 AC_MSG_CHECKING(whether localtime caches TZ)
370 AC_CACHE_VAL(guile_cv_localtime_cache,
371 [if test x$ac_cv_func_tzset = xyes; then
372 AC_TRY_RUN([#include <time.h>
373 #if STDC_HEADERS
374 # include <stdlib.h>
375 #endif
376 extern char **environ;
377 unset_TZ ()
378 {
379 char **from, **to;
380 for (to = from = environ; (*to = *from); from++)
381 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
382 to++;
383 }
384 char TZ_GMT0[] = "TZ=GMT0";
385 char TZ_PST8[] = "TZ=PST8";
386 main()
387 {
388 time_t now = time ((time_t *) 0);
389 int hour_GMT0, hour_unset;
390 if (putenv (TZ_GMT0) != 0)
391 exit (1);
392 hour_GMT0 = localtime (&now)->tm_hour;
393 unset_TZ ();
394 hour_unset = localtime (&now)->tm_hour;
395 if (putenv (TZ_PST8) != 0)
396 exit (1);
397 if (localtime (&now)->tm_hour == hour_GMT0)
398 exit (1);
399 unset_TZ ();
400 if (localtime (&now)->tm_hour != hour_unset)
401 exit (1);
402 exit (0);
403 }], guile_cv_localtime_cache=no, guile_cv_localtime_cache=yes,
404 [# If we have tzset, assume the worst when cross-compiling.
405 guile_cv_localtime_cache=yes])
406 else
407 # If we lack tzset, report that localtime does not cache TZ,
408 # since we can't invalidate the cache if we don't have tzset.
409 guile_cv_localtime_cache=no
410 fi])dnl
411 AC_MSG_RESULT($guile_cv_localtime_cache)
412 if test $guile_cv_localtime_cache = yes; then
413 AC_DEFINE(LOCALTIME_CACHE)
414 fi
415
416 dnl Test whether system calls are restartable by default on the
417 dnl current system. If they are not, we put a loop around every system
418 dnl call to check for EINTR (see SCM_SYSCALL) and do not attempt to
419 dnl change from the default behaviour. On the other hand, if signals
420 dnl are restartable then the loop is not installed and when libguile
421 dnl initialises it also resets the behaviour of each signal to cause a
422 dnl restart (in case a different runtime had a different default
423 dnl behaviour for some reason: e.g., different versions of linux seem
424 dnl to behave differently.)
425
426 AC_SYS_RESTARTABLE_SYSCALLS
427
428 if test "$enable_regex" = yes; then
429 if test "$ac_cv_header_regex_h" = yes ||
430 test "$ac_cv_header_rxposix_h" = yes ||
431 test "$ac_cv_header_rx_rxposix_h" = yes; then
432 GUILE_NAMED_CHECK_FUNC(regcomp, norx, [LIBOBJS="regex-posix.o $LIBOBJS"],
433 [AC_CHECK_LIB(rx, main)
434 GUILE_NAMED_CHECK_FUNC(regcomp, rx, [LIBOBJS="regex-posix.o $LIBOBJS"],
435 [AC_CHECK_LIB(regex, main)
436 GUILE_NAMED_CHECK_FUNC(regcomp, regex, [LIBOBJS="regex-posix.o $LIBOBJS"])])]
437 )
438 dnl The following should not be necessary, but for some reason
439 dnl autoheader misses it if we don't include it!
440 if test "$ac_cv_func_regcomp_norx" = yes ||
441 test "$ac_cv_func_regcomp_regex" = yes ||
442 test "$ac_cv_func_regcomp_rx" = yes; then
443 AC_DEFINE(HAVE_REGCOMP)
444 fi
445 fi
446 fi
447
448 AC_REPLACE_FUNCS(inet_aton putenv strerror memmove mkstemp)
449
450 # When testing for the presence of alloca, we need to add alloca.o
451 # explicitly to LIBOBJS to make sure that it is translated to
452 # `alloca.lo' for libtool later on. This can and should be done more cleanly.
453 AC_FUNC_ALLOCA
454 if test "$ALLOCA" = "alloca.o"; then LIBOBJS="alloca.o $LIBOBJS"; fi
455
456 AC_CHECK_MEMBERS([struct stat.st_rdev])
457 AC_CHECK_MEMBERS([struct stat.st_blksize])
458
459 AC_STRUCT_ST_BLOCKS
460
461 AC_CACHE_CHECK([for S_ISLNK in sys/stat.h], ac_cv_macro_S_ISLNK,
462 [AC_TRY_CPP([#include <sys/stat.h>
463 #ifndef S_ISLNK
464 #error no S_ISLNK
465 #endif],
466 ac_cv_macro_S_ISLNK=yes,
467 ac_cv_macro_S_ISLNK=no)])
468 if test $ac_cv_macro_S_ISLNK = yes; then
469 AC_DEFINE(HAVE_S_ISLNK)
470 fi
471
472 AC_STRUCT_TIMEZONE
473 GUILE_STRUCT_UTIMBUF
474
475 #--------------------------------------------------------------------
476 #
477 # Which way does the stack grow?
478 #
479 #--------------------------------------------------------------------
480
481 AC_TRY_RUN(aux (l) unsigned long l;
482 { int x; exit (l >= ((unsigned long)&x)); }
483 main () { int q; aux((unsigned long)&q); },
484 AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
485
486 AC_CACHE_CHECK([whether floats fit in longs], guile_cv_type_float_fits_long,
487 [AC_TRY_RUN([main () { exit (sizeof(float) > sizeof(long)); }],
488 [guile_cv_type_float_fits_long=yes],
489 [guile_cv_type_float_fits_long=no],
490 [guile_cv_type_float_fits_long=guess-yes])])
491 case $guile_cv_type_float_fits_long in
492 "yes" )
493 AC_DEFINE(SCM_SINGLES)
494 ;;
495 "guess-yes" )
496 AC_DEFINE(SCM_SINGLES)
497 AC_MSG_WARN([guessing that sizeof(long) == sizeof(float)])
498 AC_MSG_WARN([see SCM_SINGLES in scmconfig.h.in])
499 ;;
500 esac
501
502
503 AC_MSG_CHECKING(for struct linger)
504 AC_CACHE_VAL(scm_cv_struct_linger,
505 AC_TRY_COMPILE([
506 #include <sys/types.h>
507 #include <sys/socket.h>],
508 [struct linger lgr; lgr.l_linger = 100],
509 scm_cv_struct_linger="yes",
510 scm_cv_struct_linger="no"))
511 AC_MSG_RESULT($scm_cv_struct_linger)
512 if test $scm_cv_struct_linger = yes; then
513 AC_DEFINE(HAVE_STRUCT_LINGER)
514 fi
515
516
517 AC_MSG_CHECKING(for struct timespec)
518 AC_CACHE_VAL(scm_cv_struct_timespec,
519 AC_TRY_COMPILE([
520 #include <time.h>],
521 [struct timespec t; t.tv_nsec = 100],
522 scm_cv_struct_timespec="yes",
523 scm_cv_struct_timespec="no"))
524 AC_MSG_RESULT($scm_cv_struct_timespec)
525 if test $scm_cv_struct_timespec = yes; then
526 AC_DEFINE(HAVE_STRUCT_TIMESPEC)
527 fi
528
529 #--------------------------------------------------------------------
530 #
531 # Flags for thread support
532 #
533 #--------------------------------------------------------------------
534
535 ### What thread package has the user asked for?
536 AC_ARG_WITH(threads, [ --with-threads thread interface],
537 , with_threads=no)
538
539 ### Turn $with_threads into either the name of a threads package, like
540 ### `qt', or `no', meaning that threads should not be supported.
541 AC_MSG_CHECKING(whether to support threads)
542 case "$with_threads" in
543 "yes" | "qt" | "coop" | "")
544 with_threads=qt
545 ;;
546 "no" )
547 ;;
548 * )
549 AC_MSG_ERROR(invalid value for --with-threads: $with_threads)
550 ;;
551 esac
552 AC_MSG_RESULT($with_threads)
553
554 ## Make sure the threads package we've chosen is actually supported on
555 ## the present platform.
556 case "${with_threads}" in
557 "qt" )
558 ## This configures the QuickThreads package, and sets or clears
559 ## the THREAD_PACKAGE variable if qthreads don't configure
560 ## correctly.
561 QTHREADS_CONFIGURE
562 ;;
563 esac
564
565 ## If we're using threads, bring in some other parts of Guile which
566 ## work with them.
567 if test "${THREAD_PACKAGE}" != "" ; then
568 AC_DEFINE(USE_THREADS, 1)
569
570 ## Include the Guile thread interface in the library...
571 LIBOBJS="$LIBOBJS threads.o"
572
573 ## ... and tell it which package to talk to.
574 case "${THREAD_PACKAGE}" in
575 "QT" )
576 AC_DEFINE(USE_COOP_THREADS, 1)
577 ;;
578 * )
579 AC_MSG_ERROR(invalid value for THREAD_PACKAGE: ${THREAD_PACKAGE})
580 ;;
581 esac
582
583 ## Bring in scm_internal_select, if appropriate.
584 if test $ac_cv_func_gettimeofday = yes &&
585 test $ac_cv_func_select = yes; then
586 AC_DEFINE(GUILE_ISELECT, 1)
587 fi
588
589 AC_ARG_ENABLE(linuxthreads,
590 [ --disable-linuxthreads disable linuxthreads workaround],,
591 enable_linuxthreads=yes)
592
593 ## Workaround for linuxthreads (optionally disabled)
594 if test $host_os = linux-gnu -a "$enable_linuxthreads" = yes; then
595 AC_DEFINE(GUILE_PTHREAD_COMPAT, 1)
596 AC_CHECK_LIB(pthread, main)
597 fi
598 fi
599 AC_SUBST(LIBGUILEQTHREADS_INTERFACE_CURRENT)
600 AC_SUBST(LIBGUILEQTHREADS_INTERFACE_REVISION)
601 AC_SUBST(LIBGUILEQTHREADS_INTERFACE_AGE)
602 AC_SUBST(LIBGUILEQTHREADS_INTERFACE)
603
604 ## If we're using GCC, ask for aggressive warnings.
605 case "$GCC" in
606 yes )
607 ## We had -Wstrict-prototypes in here for a bit, but Guile does too
608 ## much stuff with generic function pointers for that to really be
609 ## less than exasperating.
610 ## -Wpointer-arith was here too, but something changed in gcc/glibc
611 ## and it became equally exasperating (gcc 2.95 and/or glibc 2.1.2).
612 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes" ;;
613 esac
614
615 AC_PROG_AWK
616
617 ## If we're creating a shared library (using libtool!), then we'll
618 ## need to generate a list of .lo files corresponding to the .o files
619 ## given in LIBOBJS. We'll call it LIBLOBJS.
620 LIBLOBJS="`echo ${LIBOBJS} | sed 's/\.o/.lo/g'`"
621
622 ## We also need to create corresponding .doc and .x files
623 EXTRA_DOT_DOC_FILES="`echo ${LIBOBJS} | sed 's/\.o/.doc/g'`"
624 EXTRA_DOT_X_FILES="`echo ${LIBOBJS} | sed 's/\.o/.x/g'`"
625
626 AC_SUBST(GUILE_MAJOR_VERSION)
627 AC_SUBST(GUILE_MINOR_VERSION)
628 AC_SUBST(GUILE_MICRO_VERSION)
629 AC_SUBST(GUILE_VERSION)
630
631 AC_SUBST(LIBGUILE_INTERFACE_CURRENT)
632 AC_SUBST(LIBGUILE_INTERFACE_REVISION)
633 AC_SUBST(LIBGUILE_INTERFACE_AGE)
634 AC_SUBST(LIBGUILE_INTERFACE)
635
636 dnl Tell guile-config what flags guile users should link against.
637 GUILE_LIBS="$LDFLAGS $THREAD_LIBS_INSTALLED $LIBS"
638 AC_SUBST(GUILE_LIBS)
639
640 AC_SUBST(AWK)
641 AC_SUBST(LIBLOBJS)
642 AC_SUBST(EXTRA_DOT_DOC_FILES)
643 AC_SUBST(EXTRA_DOT_X_FILES)
644
645 AC_CONFIG_FILES([
646 Makefile
647 libguile/Makefile
648 libguile/guile-snarf
649 libguile/guile-doc-snarf
650 libguile/guile-func-name-check
651 libguile/guile-snarf-docs
652 libguile/guile-snarf-docs-texi
653 libguile/version.h
654 ice-9/Makefile
655 oop/Makefile
656 oop/goops/Makefile
657 scripts/Makefile
658 srfi/Makefile
659 qt/Makefile
660 qt/qt.h
661 qt/md/Makefile
662 qt/time/Makefile
663 guile-config/Makefile
664 doc/Makefile
665 doc/ref/Makefile
666 doc/tutorial/Makefile
667 doc/goops/Makefile
668 doc/r5rs/Makefile
669 examples/Makefile
670 examples/scripts/Makefile
671 examples/box/Makefile
672 examples/box-module/Makefile
673 examples/box-dynamic/Makefile
674 examples/box-dynamic-module/Makefile
675 examples/modules/Makefile
676 examples/safe/Makefile
677 test-suite/Makefile
678 check-guile
679 guile-tools])
680
681 AC_CONFIG_COMMANDS(default,
682 [ chmod +x libguile/guile-snarf \
683 libguile/guile-doc-snarf \
684 libguile/guile-func-name-check \
685 libguile/guile-snarf-docs \
686 libguile/guile-snarf-docs-texi \
687 check-guile \
688 guile-tools])
689
690 AC_OUTPUT
691
692 dnl Local Variables:
693 dnl comment-start: "dnl "
694 dnl comment-end: ""
695 dnl comment-start-skip: "\\bdnl\\b\\s *"
696 dnl End: