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