2001-11-04 Stefan Jahn <stefan@lkcc.org>
[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 if test "$MINGW32" = "yes" ; then
232 AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCK2_H], 1,
233 [Define if you have the <winsock2.h> header file.])])
234 AC_CHECK_LIB(ws2_32, main)
235 LIBOBJS="$LIBOBJS win32-uname.o win32-dirent.o"
236 if test $enable_shared = yes ; then
237 EXTRA_DEFS="-DSCM_IMPORT"
238 AC_DEFINE(USE_DLL_IMPORT, 1,
239 [Define if you need additional CPP macros on Win32 platforms.])
240 fi
241 fi
242 AC_SUBST(EXTRA_DEFS)
243
244 dnl Check for dynamic linking
245
246 use_modules=yes
247 AC_ARG_WITH(modules,
248 [ --with-modules[=FILES] Add support for dynamic modules],
249 use_modules="$withval")
250 test -z "$use_modules" && use_modules=yes
251 DLPREOPEN=
252 if test "$use_modules" != no; then
253 AC_DEFINE(DYNAMIC_LINKING)
254 if test "$use_modules" = yes; then
255 DLPREOPEN="-dlpreopen force"
256 else
257 DLPREOPEN="-export-dynamic"
258 for module in $use_modules; do
259 DLPREOPEN="$DLPREOPEN -dlopen $module"
260 done
261 fi
262 fi
263 AC_SUBST(INCLTDL)
264 AC_SUBST(LIBLTDL)
265 AC_SUBST(DLPREOPEN)
266
267 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)
268
269 AC_CHECK_HEADERS(crypt.h sys/resource.h sys/file.h)
270 AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
271 AC_CHECK_LIB(crypt, crypt)
272
273 ### Some systems don't declare some functions. On such systems, we
274 ### need to at least provide our own K&R-style declarations.
275
276 ### GUILE_FUNC_DECLARED(function, headerfile)
277
278 ### Check for a declaration of FUNCTION in HEADERFILE; if it is
279 ### not there, #define MISSING_FUNCTION_DECL.
280 AC_DEFUN(GUILE_FUNC_DECLARED, [
281 AC_CACHE_CHECK(for $1 declaration, guile_cv_func_$1_declared,
282 AC_EGREP_HEADER($1, $2,
283 guile_cv_func_$1_declared=yes,
284 guile_cv_func_$1_declared=no))
285 if test [x$guile_cv_func_]$1[_declared] = xno; then
286 AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL])
287 fi
288 ])
289
290 GUILE_FUNC_DECLARED(strptime, time.h)
291 GUILE_FUNC_DECLARED(sleep, unistd.h)
292 GUILE_FUNC_DECLARED(usleep, unistd.h)
293
294 ### On some systems usleep has no return value. If it does have one,
295 ### we'd like to return it; otherwise, we'll fake it.
296 AC_CACHE_CHECK([return type of usleep], guile_cv_func_usleep_return_type,
297 [AC_EGREP_HEADER(changequote(<, >)<void[ ]+usleep>changequote([, ]),
298 unistd.h,
299 [guile_cv_func_usleep_return_type=void],
300 [guile_cv_func_usleep_return_type=int])])
301 case "$guile_cv_func_usleep_return_type" in
302 "void" )
303 AC_DEFINE(USLEEP_RETURNS_VOID)
304 ;;
305 esac
306
307 AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1)
308 if test -n "$have_sys_un_h" ; then
309 AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS)
310 fi
311
312 AC_CHECK_FUNCS(socketpair getgroups setpwent pause tzset)
313
314 AC_CHECK_FUNCS(sethostent gethostent endhostent dnl
315 setnetent getnetent endnetent dnl
316 setprotoent getprotoent endprotoent dnl
317 setservent getservent endservent dnl
318 getnetbyaddr getnetbyname dnl
319 inet_lnaof inet_makeaddr inet_netof hstrerror dnl
320 inet_pton inet_ntop)
321
322 dnl Some systems do not declare this. Some systems do declare it, as a
323 dnl macro. With cygwin it may be in a DLL.
324
325 AC_MSG_CHECKING(whether netdb.h declares h_errno)
326 AC_CACHE_VAL(guile_cv_have_h_errno,
327 [AC_TRY_COMPILE([#include <netdb.h>],
328 [int a = h_errno;],
329 guile_cv_have_h_errno=yes, guile_cv_have_h_errno=no)])
330 AC_MSG_RESULT($guile_cv_have_h_errno)
331 if test $guile_cv_have_h_errno = yes; then
332 AC_DEFINE(HAVE_H_ERRNO)
333 fi
334
335 AC_MSG_CHECKING(whether uint32_t is defined)
336 AC_CACHE_VAL(guile_cv_have_uint32_t,
337 [AC_TRY_COMPILE([#include <sys/types.h>
338 #include <netdb.h>],
339 [uint32_t a;],
340 guile_cv_have_uint32_t=yes, guile_cv_have_uint32_t=no)])
341 AC_MSG_RESULT($guile_cv_have_uint32_t)
342 if test $guile_cv_have_uint32_t = yes; then
343 AC_DEFINE(HAVE_UINT32_T)
344 fi
345
346 AC_MSG_CHECKING(for working IPv6 support)
347 AC_CACHE_VAL(guile_cv_have_ipv6,
348 [AC_TRY_COMPILE([#include <netinet/in.h>
349 #include <sys/socket.h>],
350 [struct sockaddr_in6 a; a.sin6_family = AF_INET6;],
351 guile_cv_have_ipv6=yes, guile_cv_have_ipv6=no)])
352 AC_MSG_RESULT($guile_cv_have_ipv6)
353 if test $guile_cv_have_ipv6 = yes; then
354 AC_DEFINE(HAVE_IPV6)
355 fi
356
357 # included in rfc2553 but not in older implementations, e.g., glibc 2.1.3.
358 AC_MSG_CHECKING(whether sockaddr_in6 has sin6_scope_id)
359 AC_CACHE_VAL(guile_cv_have_sin6_scope_id,
360 [AC_TRY_COMPILE([#include <netinet/in.h>],
361 [struct sockaddr_in6 sok; sok.sin6_scope_id = 0;],
362 guile_cv_have_sin6_scope_id=yes, guile_cv_have_sin6_scope_id=no)])
363 AC_MSG_RESULT($guile_cv_have_sin6_scope_id)
364 if test $guile_cv_have_sin6_scope_id = yes; then
365 AC_DEFINE(HAVE_SIN6_SCOPE_ID)
366 fi
367
368 AC_MSG_CHECKING(whether localtime caches TZ)
369 AC_CACHE_VAL(guile_cv_localtime_cache,
370 [if test x$ac_cv_func_tzset = xyes; then
371 AC_TRY_RUN([#include <time.h>
372 #if STDC_HEADERS
373 # include <stdlib.h>
374 #endif
375 extern char **environ;
376 unset_TZ ()
377 {
378 char **from, **to;
379 for (to = from = environ; (*to = *from); from++)
380 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
381 to++;
382 }
383 char TZ_GMT0[] = "TZ=GMT0";
384 char TZ_PST8[] = "TZ=PST8";
385 main()
386 {
387 time_t now = time ((time_t *) 0);
388 int hour_GMT0, hour_unset;
389 if (putenv (TZ_GMT0) != 0)
390 exit (1);
391 hour_GMT0 = localtime (&now)->tm_hour;
392 unset_TZ ();
393 hour_unset = localtime (&now)->tm_hour;
394 if (putenv (TZ_PST8) != 0)
395 exit (1);
396 if (localtime (&now)->tm_hour == hour_GMT0)
397 exit (1);
398 unset_TZ ();
399 if (localtime (&now)->tm_hour != hour_unset)
400 exit (1);
401 exit (0);
402 }], guile_cv_localtime_cache=no, guile_cv_localtime_cache=yes,
403 [# If we have tzset, assume the worst when cross-compiling.
404 guile_cv_localtime_cache=yes])
405 else
406 # If we lack tzset, report that localtime does not cache TZ,
407 # since we can't invalidate the cache if we don't have tzset.
408 guile_cv_localtime_cache=no
409 fi])dnl
410 AC_MSG_RESULT($guile_cv_localtime_cache)
411 if test $guile_cv_localtime_cache = yes; then
412 AC_DEFINE(LOCALTIME_CACHE)
413 fi
414
415 dnl Test whether system calls are restartable by default on the
416 dnl current system. If they are not, we put a loop around every system
417 dnl call to check for EINTR (see SCM_SYSCALL) and do not attempt to
418 dnl change from the default behaviour. On the other hand, if signals
419 dnl are restartable then the loop is not installed and when libguile
420 dnl initialises it also resets the behaviour of each signal to cause a
421 dnl restart (in case a different runtime had a different default
422 dnl behaviour for some reason: e.g., different versions of linux seem
423 dnl to behave differently.)
424
425 AC_SYS_RESTARTABLE_SYSCALLS
426
427 if test "$enable_regex" = yes; then
428 if test "$ac_cv_header_regex_h" = yes ||
429 test "$ac_cv_header_rxposix_h" = yes ||
430 test "$ac_cv_header_rx_rxposix_h" = yes; then
431 GUILE_NAMED_CHECK_FUNC(regcomp, norx, [LIBOBJS="regex-posix.o $LIBOBJS"],
432 [AC_CHECK_LIB(rx, main)
433 GUILE_NAMED_CHECK_FUNC(regcomp, rx, [LIBOBJS="regex-posix.o $LIBOBJS"],
434 [AC_CHECK_LIB(regex, main)
435 GUILE_NAMED_CHECK_FUNC(regcomp, regex, [LIBOBJS="regex-posix.o $LIBOBJS"])])]
436 )
437 dnl The following should not be necessary, but for some reason
438 dnl autoheader misses it if we don't include it!
439 if test "$ac_cv_func_regcomp_norx" = yes ||
440 test "$ac_cv_func_regcomp_regex" = yes ||
441 test "$ac_cv_func_regcomp_rx" = yes; then
442 AC_DEFINE(HAVE_REGCOMP)
443 fi
444 fi
445 fi
446
447 AC_REPLACE_FUNCS(inet_aton putenv strerror memmove mkstemp)
448
449 # When testing for the presence of alloca, we need to add alloca.o
450 # explicitly to LIBOBJS to make sure that it is translated to
451 # `alloca.lo' for libtool later on. This can and should be done more cleanly.
452 AC_FUNC_ALLOCA
453 if test "$ALLOCA" = "alloca.o"; then LIBOBJS="alloca.o $LIBOBJS"; fi
454
455 AC_CHECK_MEMBERS([struct stat.st_rdev])
456 AC_CHECK_MEMBERS([struct stat.st_blksize])
457
458 AC_STRUCT_ST_BLOCKS
459
460 AC_CACHE_CHECK([for S_ISLNK in sys/stat.h], ac_cv_macro_S_ISLNK,
461 [AC_TRY_CPP([#include <sys/stat.h>
462 #ifndef S_ISLNK
463 #error no S_ISLNK
464 #endif],
465 ac_cv_macro_S_ISLNK=yes,
466 ac_cv_macro_S_ISLNK=no)])
467 if test $ac_cv_macro_S_ISLNK = yes; then
468 AC_DEFINE(HAVE_S_ISLNK)
469 fi
470
471 AC_STRUCT_TIMEZONE
472 GUILE_STRUCT_UTIMBUF
473
474 #--------------------------------------------------------------------
475 #
476 # Which way does the stack grow?
477 #
478 #--------------------------------------------------------------------
479
480 AC_TRY_RUN(aux (l) unsigned long l;
481 { int x; exit (l >= ((unsigned long)&x)); }
482 main () { int q; aux((unsigned long)&q); },
483 AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
484
485 AC_CACHE_CHECK([whether floats fit in longs], guile_cv_type_float_fits_long,
486 [AC_TRY_RUN([main () { exit (sizeof(float) > sizeof(long)); }],
487 [guile_cv_type_float_fits_long=yes],
488 [guile_cv_type_float_fits_long=no],
489 [guile_cv_type_float_fits_long=guess-yes])])
490 case $guile_cv_type_float_fits_long in
491 "yes" )
492 AC_DEFINE(SCM_SINGLES)
493 ;;
494 "guess-yes" )
495 AC_DEFINE(SCM_SINGLES)
496 AC_MSG_WARN([guessing that sizeof(long) == sizeof(float)])
497 AC_MSG_WARN([see SCM_SINGLES in scmconfig.h.in])
498 ;;
499 esac
500
501
502 AC_MSG_CHECKING(for struct linger)
503 AC_CACHE_VAL(scm_cv_struct_linger,
504 AC_TRY_COMPILE([
505 #include <sys/types.h>
506 #include <sys/socket.h>],
507 [struct linger lgr; lgr.l_linger = 100],
508 scm_cv_struct_linger="yes",
509 scm_cv_struct_linger="no"))
510 AC_MSG_RESULT($scm_cv_struct_linger)
511 if test $scm_cv_struct_linger = yes; then
512 AC_DEFINE(HAVE_STRUCT_LINGER)
513 fi
514
515
516 AC_MSG_CHECKING(for struct timespec)
517 AC_CACHE_VAL(scm_cv_struct_timespec,
518 AC_TRY_COMPILE([
519 #include <time.h>],
520 [struct timespec t; t.tv_nsec = 100],
521 scm_cv_struct_timespec="yes",
522 scm_cv_struct_timespec="no"))
523 AC_MSG_RESULT($scm_cv_struct_timespec)
524 if test $scm_cv_struct_timespec = yes; then
525 AC_DEFINE(HAVE_STRUCT_TIMESPEC)
526 fi
527
528 #--------------------------------------------------------------------
529 #
530 # Flags for thread support
531 #
532 #--------------------------------------------------------------------
533
534 ### What thread package has the user asked for?
535 AC_ARG_WITH(threads, [ --with-threads thread interface],
536 , with_threads=no)
537
538 ### Turn $with_threads into either the name of a threads package, like
539 ### `qt', or `no', meaning that threads should not be supported.
540 AC_MSG_CHECKING(whether to support threads)
541 case "$with_threads" in
542 "yes" | "qt" | "coop" | "")
543 with_threads=qt
544 ;;
545 "no" )
546 ;;
547 * )
548 AC_MSG_ERROR(invalid value for --with-threads: $with_threads)
549 ;;
550 esac
551 AC_MSG_RESULT($with_threads)
552
553 ## Make sure the threads package we've chosen is actually supported on
554 ## the present platform.
555 case "${with_threads}" in
556 "qt" )
557 ## This configures the QuickThreads package, and sets or clears
558 ## the THREAD_PACKAGE variable if qthreads don't configure
559 ## correctly.
560 QTHREADS_CONFIGURE
561 ;;
562 esac
563
564 ## If we're using threads, bring in some other parts of Guile which
565 ## work with them.
566 if test "${THREAD_PACKAGE}" != "" ; then
567 AC_DEFINE(USE_THREADS, 1)
568
569 ## Include the Guile thread interface in the library...
570 LIBOBJS="$LIBOBJS threads.o"
571
572 ## ... and tell it which package to talk to.
573 case "${THREAD_PACKAGE}" in
574 "QT" )
575 AC_DEFINE(USE_COOP_THREADS, 1)
576 ;;
577 * )
578 AC_MSG_ERROR(invalid value for THREAD_PACKAGE: ${THREAD_PACKAGE})
579 ;;
580 esac
581
582 ## Bring in scm_internal_select, if appropriate.
583 if test $ac_cv_func_gettimeofday = yes &&
584 test $ac_cv_func_select = yes; then
585 AC_DEFINE(GUILE_ISELECT, 1)
586 fi
587
588 AC_ARG_ENABLE(linuxthreads,
589 [ --disable-linuxthreads disable linuxthreads workaround],,
590 enable_linuxthreads=yes)
591
592 ## Workaround for linuxthreads (optionally disabled)
593 if test $host_os = linux-gnu -a "$enable_linuxthreads" = yes; then
594 AC_DEFINE(GUILE_PTHREAD_COMPAT, 1)
595 AC_CHECK_LIB(pthread, main)
596 fi
597 fi
598 AC_SUBST(LIBGUILEQTHREADS_INTERFACE_CURRENT)
599 AC_SUBST(LIBGUILEQTHREADS_INTERFACE_REVISION)
600 AC_SUBST(LIBGUILEQTHREADS_INTERFACE_AGE)
601 AC_SUBST(LIBGUILEQTHREADS_INTERFACE)
602
603 ## If we're using GCC, ask for aggressive warnings.
604 case "$GCC" in
605 yes )
606 ## We had -Wstrict-prototypes in here for a bit, but Guile does too
607 ## much stuff with generic function pointers for that to really be
608 ## less than exasperating.
609 ## -Wpointer-arith was here too, but something changed in gcc/glibc
610 ## and it became equally exasperating (gcc 2.95 and/or glibc 2.1.2).
611 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes" ;;
612 esac
613
614 AC_PROG_AWK
615
616 ## Remove fileblocks.o from the object list. This file gets added by
617 ## the Autoconf macro AC_STRUCT_ST_BLOCKS. But there is no need.
618 LIBOBJS="`echo ${LIBOBJS} | sed 's/fileblocks\.o//g'`"
619
620 ## If we're creating a shared library (using libtool!), then we'll
621 ## need to generate a list of .lo files corresponding to the .o files
622 ## given in LIBOBJS. We'll call it LIBLOBJS.
623 LIBLOBJS="`echo ${LIBOBJS} | sed 's/\.o/.lo/g'`"
624
625 ## We also need to create corresponding .doc and .x files
626 EXTRA_DOT_DOC_FILES="`echo ${LIBOBJS} | sed 's/\.o/.doc/g'`"
627 EXTRA_DOT_X_FILES="`echo ${LIBOBJS} | sed 's/\.o/.x/g'`"
628
629 AC_SUBST(GUILE_MAJOR_VERSION)
630 AC_SUBST(GUILE_MINOR_VERSION)
631 AC_SUBST(GUILE_MICRO_VERSION)
632 AC_SUBST(GUILE_VERSION)
633
634 AC_SUBST(LIBGUILE_INTERFACE_CURRENT)
635 AC_SUBST(LIBGUILE_INTERFACE_REVISION)
636 AC_SUBST(LIBGUILE_INTERFACE_AGE)
637 AC_SUBST(LIBGUILE_INTERFACE)
638
639 dnl Tell guile-config what flags guile users should link against.
640 GUILE_LIBS="$LDFLAGS $THREAD_LIBS_INSTALLED $LIBS"
641 AC_SUBST(GUILE_LIBS)
642
643 AC_SUBST(AWK)
644 AC_SUBST(LIBLOBJS)
645 AC_SUBST(EXTRA_DOT_DOC_FILES)
646 AC_SUBST(EXTRA_DOT_X_FILES)
647
648 AC_CONFIG_FILES([
649 Makefile
650 libguile/Makefile
651 libguile/guile-snarf
652 libguile/guile-doc-snarf
653 libguile/guile-func-name-check
654 libguile/guile-snarf-docs
655 libguile/guile-snarf-docs-texi
656 libguile/version.h
657 ice-9/Makefile
658 oop/Makefile
659 oop/goops/Makefile
660 scripts/Makefile
661 srfi/Makefile
662 qt/Makefile
663 qt/qt.h
664 qt/md/Makefile
665 qt/time/Makefile
666 guile-config/Makefile
667 doc/Makefile
668 doc/ref/Makefile
669 doc/tutorial/Makefile
670 doc/goops/Makefile
671 doc/r5rs/Makefile
672 examples/Makefile
673 examples/scripts/Makefile
674 examples/box/Makefile
675 examples/box-module/Makefile
676 examples/box-dynamic/Makefile
677 examples/box-dynamic-module/Makefile
678 examples/modules/Makefile
679 examples/safe/Makefile
680 test-suite/Makefile
681 check-guile
682 guile-tools])
683
684 AC_CONFIG_COMMANDS(default,
685 [ chmod +x libguile/guile-snarf \
686 libguile/guile-doc-snarf \
687 libguile/guile-func-name-check \
688 libguile/guile-snarf-docs \
689 libguile/guile-snarf-docs-texi \
690 check-guile \
691 guile-tools])
692
693 AC_OUTPUT
694
695 dnl Local Variables:
696 dnl comment-start: "dnl "
697 dnl comment-end: ""
698 dnl comment-start-skip: "\\bdnl\\b\\s *"
699 dnl End: