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