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