Fix autoconf underquoting warnings
[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, 2002, 2003 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.53)
24
25 AC_INIT
26 AC_CONFIG_SRCDIR([GUILE-VERSION])
27 . $srcdir/GUILE-VERSION
28 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
29 AM_MAINTAINER_MODE
30 AM_CONFIG_HEADER([config.h])
31
32 #--------------------------------------------------------------------
33 #
34 # Independent Subdirectories
35 #
36 #--------------------------------------------------------------------
37
38 AC_CONFIG_SUBDIRS(guile-readline)
39
40 #--------------------------------------------------------------------
41
42 dnl Some more checks for Win32
43 AC_CYGWIN
44 AC_MINGW32
45 AC_LIBTOOL_WIN32_DLL
46
47 AC_PROG_INSTALL
48 AC_PROG_CC
49 AC_PROG_CPP
50 AC_PROG_AWK
51
52 AC_AIX
53 AC_ISC_POSIX
54 AC_MINIX
55
56 AM_PROG_CC_STDC
57
58 AC_LIBTOOL_DLOPEN
59 AM_PROG_LIBTOOL
60 AC_LIB_LTDL
61
62 AC_CHECK_PROG(have_makeinfo, makeinfo, yes, no)
63 AM_CONDITIONAL(HAVE_MAKEINFO, test "$have_makeinfo" = yes)
64
65 AM_PATH_LISPDIR
66
67 #--------------------------------------------------------------------
68 #
69 # User options (after above tests that may set default CFLAGS etc.)
70 #
71 #--------------------------------------------------------------------
72
73 GUILE_ERROR_ON_WARNING="yes"
74
75 AC_ARG_ENABLE(error-on-warning,
76 [ --enable-error-on-warning treat compile warnings as errors],
77 [case "${enableval}" in
78 yes | y) GUILE_ERROR_ON_WARNING="yes" ;;
79 no | n) GUILE_ERROR_ON_WARNING="no" ;;
80 *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
81 esac])
82
83 SCM_I_GSC_GUILE_DEBUG_FREELIST=0
84 AC_ARG_ENABLE(debug-freelist,
85 [ --enable-debug-freelist include garbage collector freelist debugging code],
86 if test "$enable_debug_freelist" = y \
87 || test "$enable_debug_freelist" = yes; then
88 SCM_I_GSC_GUILE_DEBUG_FREELIST=1
89 fi)
90
91 AC_ARG_ENABLE(debug-malloc,
92 [ --enable-debug-malloc include malloc debugging code],
93 if test "$enable_debug_malloc" = y || test "$enable_debug_malloc" = yes; then
94 AC_DEFINE(GUILE_DEBUG_MALLOC, 1,
95 [Define this if you want to debug scm_must_malloc/realloc/free calls.])
96 fi)
97
98 SCM_I_GSC_GUILE_DEBUG=0
99 AC_ARG_ENABLE(guile-debug,
100 [AC_HELP_STRING([--enable-guile-debug],
101 [include internal debugging functions])],
102 if test "$enable_guile_debug" = y || test "$enable_guile_debug" = yes; then
103 SCM_I_GSC_GUILE_DEBUG=1
104 fi)
105
106 AC_ARG_ENABLE(arrays,
107 [AC_HELP_STRING([--disable-arrays],[omit array and uniform array support])],
108 ,
109 enable_arrays=yes)
110
111 AC_ARG_ENABLE(posix,
112 [ --disable-posix omit posix interfaces],,
113 enable_posix=yes)
114
115 AC_ARG_ENABLE(networking,
116 [ --disable-networking omit networking interfaces],,
117 enable_networking=yes)
118
119 AC_ARG_ENABLE(regex,
120 [ --disable-regex omit regular expression interfaces],,
121 enable_regex=yes)
122
123 AC_ARG_ENABLE(htmldoc,
124 [ --enable-htmldoc build HTML documentation as well as Info],
125 [if test "$enable_htmldoc" = "" || test "$enable_htmldoc" = y || test "$enable_htmldoc" = yes; then
126 htmldoc_enabled=yes
127 AC_PATH_PROG(TEXI2HTML, texi2html, not found)
128 if test "$TEXI2HTML" = "not found"; then
129 echo
130 echo Building HTML documentation requires the \`texi2html\' program,
131 echo which appears not to be present on your machine.
132 echo
133 echo \`texi2html\' is available from
134 echo 'http://www.mathematik.uni-kl.de/~obachman/Texi2html/.'
135 echo
136 echo In the meantime, to build the guile-doc distribution
137 echo without HTML enabled, please rerun \`./configure\' without
138 echo the \`--enable-htmldoc\' option.
139 exit -1
140 fi
141 fi])
142
143 AM_CONDITIONAL(HTMLDOC, test x$htmldoc_enabled = xyes)
144
145 AC_ARG_ENABLE([deprecated],
146 AC_HELP_STRING([--disable-deprecated],[omit deprecated features]))
147
148 if test "$enable_deprecated" = no; then
149 SCM_I_GSC_ENABLE_DEPRECATED=0
150 else
151 if test "$enable_deprecated" = yes || test "$enable_deprecated" = ""; then
152 warn_default=summary
153 elif test "$enable_deprecated" = shutup; then
154 warn_default=no
155 else
156 warn_default=$enable_deprecated
157 fi
158 SCM_I_GSC_ENABLE_DEPRECATED=1
159 AC_DEFINE_UNQUOTED(SCM_WARN_DEPRECATED_DEFAULT, "$warn_default",
160 [Define this to control the default warning level for deprecated features.])
161 fi
162
163 AC_ARG_ENABLE(elisp,
164 [ --disable-elisp omit Emacs Lisp support],,
165 enable_elisp=yes)
166
167 #--------------------------------------------------------------------
168
169 dnl Check for dynamic linking
170
171 use_modules=yes
172 AC_ARG_WITH(modules,
173 [ --with-modules[=FILES] Add support for dynamic modules],
174 use_modules="$withval")
175 test -z "$use_modules" && use_modules=yes
176 DLPREOPEN=
177 if test "$use_modules" != no; then
178 if test "$use_modules" = yes; then
179 DLPREOPEN="-dlpreopen force"
180 else
181 DLPREOPEN="-export-dynamic"
182 for module in $use_modules; do
183 DLPREOPEN="$DLPREOPEN -dlopen $module"
184 done
185 fi
186 fi
187
188 dnl files which are destined for separate modules.
189
190 if test "$use_modules" != no; then
191 AC_LIBOBJ([dynl])
192 fi
193
194 SCM_I_GSC_HAVE_ARRAYS=0
195 if test "$enable_arrays" = yes; then
196 AC_LIBOBJ([ramap])
197 AC_LIBOBJ([unif])
198 SCM_I_GSC_HAVE_ARRAYS=1
199 fi
200
201 if test "$enable_posix" = yes; then
202 AC_LIBOBJ([filesys])
203 AC_LIBOBJ([posix])
204 AC_DEFINE(HAVE_POSIX, 1,
205 [Define this if you want support for POSIX system calls in Guile.])
206 fi
207
208 if test "$enable_networking" = yes; then
209 AC_LIBOBJ([net_db])
210 AC_LIBOBJ([socket])
211 AC_DEFINE(HAVE_NETWORKING, 1,
212 [Define this if you want support for networking in Guile.])
213 fi
214
215 if test "$enable_debug_malloc" = yes; then
216 AC_LIBOBJ([debug-malloc])
217 fi
218
219 if test "$enable_elisp" = yes; then
220 SCM_I_GSC_ENABLE_ELISP=1
221 else
222 SCM_I_GSC_ENABLE_ELISP=0
223 fi
224
225 AC_C_CONST
226
227 AC_C_INLINE
228 if test "$ac_cv_c_inline" != no; then
229 SCM_I_GSC_C_INLINE="\"${ac_cv_c_inline}\""
230 else
231 SCM_I_GSC_C_INLINE=NULL
232 fi
233
234 AC_C_BIGENDIAN
235
236 AC_CHECK_SIZEOF(char)
237 AC_CHECK_SIZEOF(unsigned char)
238 AC_CHECK_SIZEOF(short)
239 AC_CHECK_SIZEOF(unsigned short)
240 AC_CHECK_SIZEOF(int)
241 AC_CHECK_SIZEOF(unsigned int)
242 AC_CHECK_SIZEOF(long)
243 AC_CHECK_SIZEOF(unsigned long)
244 AC_CHECK_SIZEOF(size_t)
245 AC_CHECK_SIZEOF(long long)
246 AC_CHECK_SIZEOF(unsigned long long)
247 AC_CHECK_SIZEOF(__int64)
248 AC_CHECK_SIZEOF(unsigned __int64)
249 AC_CHECK_SIZEOF(void *)
250 AC_CHECK_SIZEOF(intptr_t)
251 AC_CHECK_SIZEOF(uintptr_t)
252 AC_CHECK_SIZEOF(ptrdiff_t)
253
254 if test "$ac_cv_sizeof_long" -ne "$ac_cv_sizeof_void_p"; then
255 AC_MSG_ERROR(sizes of long and void* are not identical)
256 fi
257
258 if test "$ac_cv_sizeof_ptrdiff_t" -eq 0; then
259 SCM_I_GSC_T_PTRDIFF='"ptrdiff_t"'
260 else
261 SCM_I_GSC_T_PTRDIFF='"long"'
262 fi
263 AC_SUBST([SCM_I_GSC_T_PTRDIFF])
264
265 AC_CHECK_HEADERS([stdint.h])
266 AC_CHECK_HEADERS([inttypes.h])
267
268 SCM_I_GSC_NEEDS_STDINT_H=0
269 SCM_I_GSC_NEEDS_INTTYPES_H=0
270
271 ### intptr and uintptr (try not to use inttypes if we don't have to)
272 if test "$ac_cv_header_inttypes_h" = yes; then
273 if test "$ac_cv_sizeof_intptr_t" -eq 0; then
274 AC_CHECK_SIZEOF([intptr_t],,[#include <inttypes.h>
275 #include <stdio.h>])
276 if test "$ac_cv_sizeof_intptr_t" -ne 0; then
277 SCM_I_GSC_NEEDS_INTTYPES_H=1
278 fi
279 fi
280 if test "$ac_cv_sizeof_uintptr_t" -eq 0; then
281 AC_CHECK_SIZEOF([uintptr_t],,[#include <inttypes.h>
282 #include <stdio.h>])
283 if test "$ac_cv_sizeof_uintptr_t" -ne 0; then
284 SCM_I_GSC_NEEDS_INTTYPES_H=1
285 fi
286 fi
287 fi
288
289 ### See what's provided by stdint.h
290 if test "$ac_cv_header_stdint_h" = yes; then
291 AC_CHECK_TYPE([int8_t],[scm_stdint_has_int8=1],,[#include <stdint.h>])
292 AC_CHECK_TYPE([uint8_t],[scm_stdint_has_uint8=1],,[#include <stdint.h>])
293 AC_CHECK_TYPE([int16_t],[scm_stdint_has_int16=1],,[#include <stdint.h>])
294 AC_CHECK_TYPE([uint16_t],[scm_stdint_has_uint16=1],,[#include <stdint.h>])
295 AC_CHECK_TYPE([int32_t],[scm_stdint_has_int32=1],,[#include <stdint.h>])
296 AC_CHECK_TYPE([uint32_t],[scm_stdint_has_uint32=1],,[#include <stdint.h>])
297 AC_CHECK_TYPE([int64_t],[scm_stdint_has_int64=1],,[#include <stdint.h>])
298 AC_CHECK_TYPE([uint64_t],[scm_stdint_has_uint64=1],,[#include <stdint.h>])
299 AC_CHECK_TYPE([intmax_t],[scm_stdint_has_intmax=1],,[#include <stdint.h>])
300 AC_CHECK_TYPE([uintmax_t],[scm_stdint_has_uintmax=1],,[#include <stdint.h>])
301 fi
302
303 # so we don't get confused by the cache (wish there was a better way
304 # to check particular headers for the same type...)
305
306 unset ac_cv_type_int8_t
307 unset ac_cv_type_uint8_t
308 unset ac_cv_type_int16_t
309 unset ac_cv_type_uint16_t
310 unset ac_cv_type_int32_t
311 unset ac_cv_type_uint32_t
312 unset ac_cv_type_int64_t
313 unset ac_cv_type_uint64_t
314 unset ac_cv_type_intmax_t
315 unset ac_cv_type_uintmax_t
316
317 ### See what's provided by inttypes.h
318 if test "$ac_cv_header_inttypes_h" = yes; then
319 AC_CHECK_TYPE([int8_t],[scm_inttypes_has_int8=1],,[#include <inttypes.h>])
320 AC_CHECK_TYPE([uint8_t],[scm_inttypes_has_uint8=1],,[#include <inttypes.h>])
321 AC_CHECK_TYPE([int16_t],[scm_inttypes_has_int16=1],,[#include <inttypes.h>])
322 AC_CHECK_TYPE([uint16_t],[scm_inttypes_has_uint16=1],,[#include <inttypes.h>])
323 AC_CHECK_TYPE([int32_t],[scm_inttypes_has_int32=1],,[#include <inttypes.h>])
324 AC_CHECK_TYPE([uint32_t],[scm_inttypes_has_uint32=1],,[#include <inttypes.h>])
325 AC_CHECK_TYPE([int64_t],[scm_inttypes_has_int64=1],,[#include <inttypes.h>])
326 AC_CHECK_TYPE([uint64_t],[scm_inttypes_has_uint64=1],,[#include <inttypes.h>])
327 AC_CHECK_TYPE([intmax_t],[scm_inttypes_has_intmax=1],,[#include <inttypes.h>])
328 AC_CHECK_TYPE([uintmax_t],[scm_inttypes_has_uintmax=1],,[#include <inttypes.h>])
329 fi
330
331 # Try hard to find definitions for some required scm_t_*int* types.
332
333 ### Required type scm_t_int8
334 if test "$ac_cv_sizeof_char" -eq 1; then
335 SCM_I_GSC_T_INT8='"char"'
336 elif test "$scm_stdint_has_int8"; then
337 SCM_I_GSC_T_INT8='"int8_t"'
338 SCM_I_GSC_NEEDS_STDINT_H=1
339 elif test "$scm_inttypes_has_int8"; then
340 SCM_I_GSC_T_INT8='"int8_t"'
341 SCM_I_GSC_NEEDS_INTTYPES_H=1
342 else
343 AC_MSG_ERROR([Can't find appropriate type for scm_t_int8.])
344 fi
345 AC_SUBST([SCM_I_GSC_T_INT8])
346
347 ### Required type scm_t_uint8
348 if test "$ac_cv_sizeof_unsigned_char" -eq 1; then
349 SCM_I_GSC_T_UINT8='"unsigned char"'
350 elif test "$scm_stdint_has_uint8"; then
351 SCM_I_GSC_T_UINT8='"uint8_t"'
352 SCM_I_GSC_NEEDS_STDINT_H=1
353 elif test "$scm_inttypes_has_uint8"; then
354 SCM_I_GSC_T_UINT8='"uint8_t"'
355 SCM_I_GSC_NEEDS_INTTYPES_H=1
356 else
357 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint8.])
358 fi
359 AC_SUBST([SCM_I_GSC_T_UINT8])
360
361
362 ### Required type scm_t_int16 (ANSI C says int or short might work)
363 if test "$ac_cv_sizeof_int" -eq 2; then
364 SCM_I_GSC_T_INT16='"int"'
365 elif test "$ac_cv_sizeof_short" -eq 2; then
366 SCM_I_GSC_T_INT16='"short"'
367 elif test "$scm_stdint_has_int16"; then
368 SCM_I_GSC_T_INT16='"int16_t"'
369 SCM_I_GSC_NEEDS_STDINT_H=1
370 elif test "$scm_inttypes_has_int16"; then
371 SCM_I_GSC_T_INT16='"int16_t"'
372 SCM_I_GSC_NEEDS_INTTYPES_H=1
373 else
374 AC_MSG_ERROR([Can't find appropriate type for scm_t_int16.])
375 fi
376 AC_SUBST([SCM_I_GSC_T_INT16])
377
378 ### Required type scm_t_uint16 (ANSI C says int or short might work)
379 if test "$ac_cv_sizeof_unsigned_int" -eq 2; then
380 SCM_I_GSC_T_UINT16='"unsigned int"'
381 elif test "$ac_cv_sizeof_unsigned_short" -eq 2; then
382 SCM_I_GSC_T_UINT16='"unsigned short"'
383 elif test "$scm_stdint_has_uint16"; then
384 SCM_I_GSC_T_UINT16='"uint16_t"'
385 SCM_I_GSC_NEEDS_STDINT_H=1
386 elif test "$scm_inttypes_has_uint16"; then
387 SCM_I_GSC_T_UINT16='"uint16_t"'
388 SCM_I_GSC_NEEDS_INTTYPES_H=1
389 else
390 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint16.])
391 fi
392 AC_SUBST([SCM_I_GSC_T_UINT16])
393
394
395 ### Required type scm_t_int32 (ANSI C says int, short, or long might work)
396 if test "$ac_cv_sizeof_int" -eq 4; then
397 SCM_I_GSC_T_INT32='"int"'
398 elif test "$ac_cv_sizeof_long" -eq 4; then
399 SCM_I_GSC_T_INT32='"long"'
400 elif test "$ac_cv_sizeof_short" -eq 4; then
401 SCM_I_GSC_T_INT32='"short"'
402 elif test "$scm_stdint_has_int32"; then
403 SCM_I_GSC_T_INT32='"int32_t"'
404 SCM_I_GSC_NEEDS_STDINT_H=1
405 elif test "$scm_inttypes_has_int32"; then
406 SCM_I_GSC_T_INT32='"int32_t"'
407 SCM_I_GSC_NEEDS_INTTYPES_H=1
408 else
409 AC_MSG_ERROR([Can't find appropriate type for scm_t_int32.])
410 fi
411 AC_SUBST([SCM_I_GSC_T_INT32])
412
413 ### Required type scm_t_uint32 (ANSI C says int, short, or long might work)
414 if test "$ac_cv_sizeof_unsigned_int" -eq 4; then
415 SCM_I_GSC_T_UINT32='"unsigned int"'
416 elif test "$ac_cv_sizeof_unsigned_long" -eq 4; then
417 SCM_I_GSC_T_UINT32='"unsigned long"'
418 elif test "$ac_cv_sizeof_unsigned_short" -eq 4; then
419 SCM_I_GSC_T_UINT32='"unsigned short"'
420 elif test "$scm_stdint_has_uint32"; then
421 SCM_I_GSC_T_UINT32='"uint32_t"'
422 SCM_I_GSC_NEEDS_STDINT_H=1
423 elif test "$scm_inttypes_has_uint32"; then
424 SCM_I_GSC_T_UINT32='"uint32_t"'
425 SCM_I_GSC_NEEDS_INTTYPES_H=1
426 else
427 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint32.])
428 fi
429 AC_SUBST([SCM_I_GSC_T_UINT32])
430
431 ### Optional type scm_t_int64 (ANSI C says int, short, or long might work)
432 ### Also try 'long long' and '__int64' if we have it.
433 SCM_I_GSC_T_INT64=0
434 if test "$ac_cv_sizeof_int" -eq 8; then
435 SCM_I_GSC_T_INT64='"int"'
436 elif test "$ac_cv_sizeof_long" -eq 8; then
437 SCM_I_GSC_T_INT64='"long"'
438 elif test "$ac_cv_sizeof_short" -eq 8; then
439 SCM_I_GSC_T_INT64='"short"'
440 elif test "$ac_cv_sizeof_long_long" -eq 8; then
441 SCM_I_GSC_T_INT64='"long long"'
442 elif test "$ac_cv_sizeof___int64" -eq 8; then
443 SCM_I_GSC_T_INT64='"__int64"'
444 elif test "$scm_stdint_has_int64"; then
445 SCM_I_GSC_T_INT64='"int64_t"'
446 SCM_I_GSC_NEEDS_STDINT_H=1
447 elif test "$scm_inttypes_has_int64"; then
448 SCM_I_GSC_T_INT64='"int64_t"'
449 SCM_I_GSC_NEEDS_INTTYPES_H=1
450 else
451 AC_MSG_ERROR([Can't find appropriate type for scm_t_int64.])
452 fi
453 AC_SUBST([SCM_I_GSC_T_INT64])
454
455 ### Optional type scm_t_uint64 (ANSI C says int, short, or long might work)
456 ### Also try 'long long' and '__int64' if we have it.
457 SCM_I_GSC_T_UINT64=0
458 if test "$ac_cv_sizeof_unsigned_int" -eq 8; then
459 SCM_I_GSC_T_UINT64='"unsigned int"'
460 elif test "$ac_cv_sizeof_unsigned_long" -eq 8; then
461 SCM_I_GSC_T_UINT64='"unsigned long"'
462 elif test "$ac_cv_sizeof_unsigned_short" -eq 8; then
463 SCM_I_GSC_T_UINT64='"unsigned short"'
464 elif test "$ac_cv_sizeof_unsigned_long_long" -eq 8; then
465 SCM_I_GSC_T_UINT64='"unsigned long long"'
466 elif test "$ac_cv_sizeof_unsigned___int64" -eq 8; then
467 SCM_I_GSC_T_UINT64='"unsigned __int64"'
468 elif test "$scm_stdint_has_uint64"; then
469 SCM_I_GSC_T_UINT64='"uint64_t"'
470 SCM_I_GSC_NEEDS_STDINT_H=1
471 elif test "$scm_inttypes_has_uint64"; then
472 SCM_I_GSC_T_UINT64='"uint64_t"'
473 SCM_I_GSC_NEEDS_INTTYPES_H=1
474 else
475 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint64.])
476 fi
477 AC_SUBST([SCM_I_GSC_T_UINT64])
478
479 ### Required type scm_t_intmax
480 ###
481 ### We try 'intmax_t', '__int64', 'long long' in this order. When
482 ### none of them is available, we use 'long'.
483 ###
484 SCM_I_GSC_T_INTMAX=0
485 if test "$scm_stdint_has_intmax"; then
486 SCM_I_GSC_T_INTMAX='"intmax_t"'
487 SCM_I_GSC_NEEDS_STDINT_H=1
488 elif test "$scm_inttypes_has_intmax"; then
489 SCM_I_GSC_T_INTMAX='"intmax_t"'
490 SCM_I_GSC_NEEDS_INTTYPES_H=1
491 elif test "$ac_cv_sizeof___int64" -ne 0; then
492 SCM_I_GSC_T_INTMAX='"__int64"'
493 elif test "$ac_cv_sizeof_long_long" -ne 0; then
494 SCM_I_GSC_T_INTMAX='"long long"'
495 else
496 SCM_I_GSC_T_INTMAX='"long"'
497 fi
498 AC_SUBST([SCM_I_GSC_T_INTMAX])
499
500 ### Required type scm_t_uintmax
501 ###
502 ### We try 'uintmax_t', 'unsigned __int64', 'unsigned long long' in
503 ### this order. When none of them is available, we use 'unsigned long'.
504 ###
505 SCM_I_GSC_T_UINTMAX=0
506 if test "$scm_stdint_has_uintmax"; then
507 SCM_I_GSC_T_UINTMAX='"uintmax_t"'
508 SCM_I_GSC_NEEDS_STDINT_H=1
509 elif test "$scm_inttypes_has_uintmax"; then
510 SCM_I_GSC_T_UINTMAX='"uintmax_t"'
511 SCM_I_GSC_NEEDS_INTTYPES_H=1
512 elif test "$ac_cv_sizeof_unsigned___int64" -ne 0; then
513 SCM_I_GSC_T_UINTMAX='"unsigned __int64"'
514 elif test "$ac_cv_sizeof_unsigned_long_long" -ne 0; then
515 SCM_I_GSC_T_UINTMAX='"unsigned long long"'
516 else
517 SCM_I_GSC_T_UINTMAX='"unsigned long"'
518 fi
519 AC_SUBST([SCM_I_GSC_T_UINTMAX])
520
521
522 AC_SUBST([SCM_I_GSC_NEEDS_STDINT_H])
523 AC_SUBST([SCM_I_GSC_NEEDS_INTTYPES_H])
524
525 AC_HEADER_STDC
526 AC_HEADER_DIRENT
527 AC_HEADER_TIME
528 AC_HEADER_SYS_WAIT
529
530 AC_CHECK_HEADERS([io.h libc.h limits.h malloc.h memory.h string.h \
531 regex.h rxposix.h rx/rxposix.h sys/dir.h sys/ioctl.h sys/select.h \
532 sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h \
533 sys/utime.h time.h unistd.h utime.h pwd.h grp.h sys/utsname.h \
534 direct.h])
535
536 GUILE_HEADER_LIBC_WITH_UNISTD
537
538 AC_TYPE_GETGROUPS
539 AC_TYPE_SIGNAL
540 AC_TYPE_MODE_T
541
542 if test $MINGW32 = no; then
543 AC_CHECK_LIB(m, main)
544 fi
545 AC_CHECK_FUNCS(gethostbyname)
546 if test $ac_cv_func_gethostbyname = no; then
547 AC_CHECK_LIB(nsl, gethostbyname)
548 fi
549
550 AC_CHECK_FUNCS(connect)
551 if test $ac_cv_func_connect = no; then
552 AC_CHECK_LIB(socket, connect)
553 fi
554
555 dnl
556 dnl Check for Winsock and other functionality on Win32 (*not* CygWin)
557 dnl
558 EXTRA_DEFS=""
559 if test "$MINGW32" = "yes" ; then
560 AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCK2_H], 1,
561 [Define if you have the <winsock2.h> header file.])])
562 AC_CHECK_LIB(ws2_32, main)
563 AC_LIBOBJ([win32-uname])
564 AC_LIBOBJ([win32-dirent])
565 if test "$enable_networking" = yes ; then
566 AC_LIBOBJ([win32-socket])
567 fi
568 if test "$enable_shared" = yes ; then
569 EXTRA_DEFS="-DSCM_IMPORT"
570 AC_DEFINE(USE_DLL_IMPORT, 1,
571 [Define if you need additional CPP macros on Win32 platforms.])
572 fi
573 if test x"$enable_ltdl_install" = x"yes" ; then
574 INCLTDL="-DLIBLTDL_DLL_IMPORT $INCLTDL"
575 fi
576 fi
577 AC_SUBST(EXTRA_DEFS)
578
579 # FIXME: check to see if we still need these.
580 #AC_SUBST(INCLTDL)
581 #AC_SUBST(LIBLTDL)
582
583 AC_SUBST(DLPREOPEN)
584
585 AC_CHECK_HEADERS([assert.h])
586
587 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 strchr strcmp index bcopy memcpy rindex unsetenv])
588
589 AC_CHECK_HEADERS(crypt.h sys/resource.h sys/file.h)
590 AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
591 AC_CHECK_LIB(crypt, crypt)
592
593 dnl GMP tests
594 AC_CHECK_LIB([gmp], [__gmpz_init], ,
595 [AC_MSG_ERROR([GNU MP not found, see http://swox.com/gmp])])
596
597 # mpz_import is a macro so we need to include <gmp.h>
598 AC_TRY_LINK([#include <gmp.h>],
599 [mpz_import (0, 0, 0, 0, 0, 0, 0);] , ,
600 [AC_MSG_ERROR([At least GNU MP 4.1 is required, see http://swox.com/gmp])])
601
602 ### Some systems don't declare some functions. On such systems, we
603 ### need to at least provide our own K&R-style declarations.
604
605 ### GUILE_FUNC_DECLARED(function, headerfile)
606
607 ### Check for a declaration of FUNCTION in HEADERFILE; if it is
608 ### not there, #define MISSING_FUNCTION_DECL.
609 AC_DEFUN([GUILE_FUNC_DECLARED], [
610 AC_CACHE_CHECK(for $1 declaration, guile_cv_func_$1_declared,
611 AC_EGREP_HEADER($1, $2,
612 guile_cv_func_$1_declared=yes,
613 guile_cv_func_$1_declared=no))
614 if test [x$guile_cv_func_]$1[_declared] = xno; then
615 AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL], 1,
616 [Define if the operating system supplies $1 without declaring it.])
617 fi
618 ])
619
620 GUILE_FUNC_DECLARED(strptime, time.h)
621 GUILE_FUNC_DECLARED(sleep, unistd.h)
622 GUILE_FUNC_DECLARED(usleep, unistd.h)
623
624 ### On some systems usleep has no return value. If it does have one,
625 ### we'd like to return it; otherwise, we'll fake it.
626 AC_CACHE_CHECK([return type of usleep], guile_cv_func_usleep_return_type,
627 [AC_EGREP_HEADER(changequote(<, >)<void[ ]+usleep>changequote([, ]),
628 unistd.h,
629 [guile_cv_func_usleep_return_type=void],
630 [guile_cv_func_usleep_return_type=int])])
631 case "$guile_cv_func_usleep_return_type" in
632 "void" )
633 AC_DEFINE(USLEEP_RETURNS_VOID, 1,
634 [Define if the system headers declare usleep to return void.])
635 ;;
636 esac
637
638 AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1)
639 if test -n "$have_sys_un_h" ; then
640 AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS, 1,
641 [Define if the system supports Unix-domain (file-domain) sockets.])
642 fi
643
644 AC_CHECK_FUNCS(socketpair getgroups setgroups setpwent pause tzset)
645
646 AC_CHECK_FUNCS(sethostent gethostent endhostent dnl
647 setnetent getnetent endnetent dnl
648 setprotoent getprotoent endprotoent dnl
649 setservent getservent endservent dnl
650 getnetbyaddr getnetbyname dnl
651 inet_lnaof inet_makeaddr inet_netof hstrerror dnl
652 inet_pton inet_ntop)
653
654 AC_MSG_CHECKING(for __libc_stack_end)
655 AC_CACHE_VAL(guile_cv_have_libc_stack_end,
656 [AC_TRY_LINK([#include <stdio.h>
657 extern char *__libc_stack_end;],
658 [printf("%p", (char*) __libc_stack_end);],
659 guile_cv_have_libc_stack_end=yes,
660 guile_cv_have_libc_stack_end=no)])
661 AC_MSG_RESULT($guile_cv_have_libc_stack_end)
662
663 if test $guile_cv_have_libc_stack_end = yes; then
664 AC_DEFINE(HAVE_LIBC_STACK_END, 1,
665 [Define if you have the __libc_stack_end variable.])
666 fi
667
668 dnl Some systems do not declare this. Some systems do declare it, as a
669 dnl macro. With cygwin it may be in a DLL.
670
671 AC_MSG_CHECKING(whether netdb.h declares h_errno)
672 AC_CACHE_VAL(guile_cv_have_h_errno,
673 [AC_TRY_COMPILE([#include <netdb.h>],
674 [int a = h_errno;],
675 guile_cv_have_h_errno=yes, guile_cv_have_h_errno=no)])
676 AC_MSG_RESULT($guile_cv_have_h_errno)
677 if test $guile_cv_have_h_errno = yes; then
678 AC_DEFINE(HAVE_H_ERRNO, 1, [Define if h_errno is declared in netdb.h.])
679 fi
680
681 AC_MSG_CHECKING(whether uint32_t is defined)
682 AC_CACHE_VAL(guile_cv_have_uint32_t,
683 [AC_TRY_COMPILE([#include <sys/types.h>
684 #if HAVE_STDINT_H
685 #include <stdint.h>
686 #endif
687 #ifndef __MINGW32__
688 #include <netdb.h>
689 #endif],
690 [uint32_t a;],
691 guile_cv_have_uint32_t=yes, guile_cv_have_uint32_t=no)])
692 AC_MSG_RESULT($guile_cv_have_uint32_t)
693 if test $guile_cv_have_uint32_t = yes; then
694 AC_DEFINE(HAVE_UINT32_T, 1,
695 [Define if uint32_t typedef is defined when netdb.h is include.])
696 fi
697
698 AC_MSG_CHECKING(for working IPv6 support)
699 AC_CACHE_VAL(guile_cv_have_ipv6,
700 [AC_TRY_COMPILE([
701 #ifdef HAVE_SYS_TYPES_H
702 #include <sys/types.h>
703 #endif
704 #include <netinet/in.h>
705 #include <sys/socket.h>],
706 [struct sockaddr_in6 a; a.sin6_family = AF_INET6;],
707 guile_cv_have_ipv6=yes, guile_cv_have_ipv6=no)])
708 AC_MSG_RESULT($guile_cv_have_ipv6)
709 if test $guile_cv_have_ipv6 = yes; then
710 AC_DEFINE(HAVE_IPV6, 1, [Define if you want support for IPv6.])
711 fi
712
713 # included in rfc2553 but not in older implementations, e.g., glibc 2.1.3.
714 AC_MSG_CHECKING(whether sockaddr_in6 has sin6_scope_id)
715 AC_CACHE_VAL(guile_cv_have_sin6_scope_id,
716 [AC_TRY_COMPILE([
717 #ifdef HAVE_SYS_TYPES_H
718 #include <sys/types.h>
719 #endif
720 #include <netinet/in.h>],
721 [struct sockaddr_in6 sok; sok.sin6_scope_id = 0;],
722 guile_cv_have_sin6_scope_id=yes, guile_cv_have_sin6_scope_id=no)])
723 AC_MSG_RESULT($guile_cv_have_sin6_scope_id)
724 if test $guile_cv_have_sin6_scope_id = yes; then
725 AC_DEFINE(HAVE_SIN6_SCOPE_ID, 1,
726 [Define this if your IPv6 has sin6_scope_id in sockaddr_in6 struct.])
727 fi
728
729 AC_MSG_CHECKING(whether localtime caches TZ)
730 AC_CACHE_VAL(guile_cv_localtime_cache,
731 [if test x$ac_cv_func_tzset = xyes; then
732 AC_TRY_RUN([#include <time.h>
733 #if STDC_HEADERS
734 # include <stdlib.h>
735 #endif
736 extern char **environ;
737 unset_TZ ()
738 {
739 char **from, **to;
740 for (to = from = environ; (*to = *from); from++)
741 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
742 to++;
743 }
744 char TZ_GMT0[] = "TZ=GMT0";
745 char TZ_PST8[] = "TZ=PST8";
746 main()
747 {
748 time_t now = time ((time_t *) 0);
749 int hour_GMT0, hour_unset;
750 if (putenv (TZ_GMT0) != 0)
751 exit (1);
752 hour_GMT0 = localtime (&now)->tm_hour;
753 unset_TZ ();
754 hour_unset = localtime (&now)->tm_hour;
755 if (putenv (TZ_PST8) != 0)
756 exit (1);
757 if (localtime (&now)->tm_hour == hour_GMT0)
758 exit (1);
759 unset_TZ ();
760 if (localtime (&now)->tm_hour != hour_unset)
761 exit (1);
762 exit (0);
763 }], guile_cv_localtime_cache=no, guile_cv_localtime_cache=yes,
764 [# If we have tzset, assume the worst when cross-compiling.
765 guile_cv_localtime_cache=yes])
766 else
767 # If we lack tzset, report that localtime does not cache TZ,
768 # since we can't invalidate the cache if we don't have tzset.
769 guile_cv_localtime_cache=no
770 fi])dnl
771 AC_MSG_RESULT($guile_cv_localtime_cache)
772 if test $guile_cv_localtime_cache = yes; then
773 AC_DEFINE(LOCALTIME_CACHE, 1, [Define if localtime caches the TZ setting.])
774 fi
775
776 dnl Test whether system calls are restartable by default on the
777 dnl current system. If they are not, we put a loop around every system
778 dnl call to check for EINTR (see SCM_SYSCALL) and do not attempt to
779 dnl change from the default behaviour. On the other hand, if signals
780 dnl are restartable then the loop is not installed and when libguile
781 dnl initialises it also resets the behaviour of each signal to cause a
782 dnl restart (in case a different runtime had a different default
783 dnl behaviour for some reason: e.g., different versions of linux seem
784 dnl to behave differently.)
785
786 AC_SYS_RESTARTABLE_SYSCALLS
787
788 if test "$enable_regex" = yes; then
789 if test "$ac_cv_header_regex_h" = yes ||
790 test "$ac_cv_header_rxposix_h" = yes ||
791 test "$ac_cv_header_rx_rxposix_h" = yes; then
792 GUILE_NAMED_CHECK_FUNC(regcomp, norx, [AC_LIBOBJ([regex-posix])],
793 [AC_CHECK_LIB(rx, main)
794 GUILE_NAMED_CHECK_FUNC(regcomp, rx, [AC_LIBOBJ([regex-posix])],
795 [AC_CHECK_LIB(regex, main)
796 GUILE_NAMED_CHECK_FUNC(regcomp, regex, [AC_LIBOBJ([regex-posix])])])]
797 )
798 dnl The following should not be necessary, but for some reason
799 dnl autoheader misses it if we don't include it!
800 if test "$ac_cv_func_regcomp_norx" = yes ||
801 test "$ac_cv_func_regcomp_regex" = yes ||
802 test "$ac_cv_func_regcomp_rx" = yes; then
803 AC_DEFINE(HAVE_REGCOMP, 1,
804 [This is included as part of a workaround for a autoheader bug.])
805 fi
806 fi
807 fi
808
809 AC_REPLACE_FUNCS(inet_aton putenv strerror memmove mkstemp)
810
811 AC_CHECK_HEADERS(floatingpoint.h ieeefp.h nan.h)
812
813 # Reasons for testing:
814 # asinh, acosh, atanh, trunc - C99 standard, generally not available on
815 # older systems
816 # sincos - GLIBC extension
817 #
818 AC_CHECK_FUNCS(asinh acosh atanh copysign finite isinf isnan sincos trunc)
819
820 # When testing for the presence of alloca, we need to add alloca.o
821 # explicitly to LIBOBJS to make sure that it is translated to
822 # `alloca.lo' for libtool later on. This can and should be done more cleanly.
823 AC_FUNC_ALLOCA
824 if test "$ALLOCA" = "alloca.o"
825 then
826 AC_LIBOBJ([alloca])
827 fi
828
829 AC_CHECK_MEMBERS([struct stat.st_rdev])
830 AC_CHECK_MEMBERS([struct stat.st_blksize])
831
832 AC_STRUCT_ST_BLOCKS
833
834 AC_CACHE_CHECK([for S_ISLNK in sys/stat.h], ac_cv_macro_S_ISLNK,
835 [AC_TRY_CPP([#include <sys/stat.h>
836 #ifndef S_ISLNK
837 #error no S_ISLNK
838 #endif],
839 ac_cv_macro_S_ISLNK=yes,
840 ac_cv_macro_S_ISLNK=no)])
841 if test $ac_cv_macro_S_ISLNK = yes; then
842 AC_DEFINE(HAVE_S_ISLNK, 1,
843 [Define this if your system defines S_ISLNK in sys/stat.h.])
844 fi
845
846 AC_STRUCT_TIMEZONE
847 GUILE_STRUCT_UTIMBUF
848
849 #--------------------------------------------------------------------
850 #
851 # Which way does the stack grow?
852 #
853 #--------------------------------------------------------------------
854
855 SCM_I_GSC_STACK_GROWS_UP=0
856 AC_TRY_RUN(aux (l) unsigned long l;
857 { int x; exit (l >= ((unsigned long)&x)); }
858 main () { int q; aux((unsigned long)&q); },
859 [SCM_I_GSC_STACK_GROWS_UP=1],
860 [],
861 [AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h)])
862
863 AC_CHECK_SIZEOF(float)
864 if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then
865 AC_DEFINE(SCM_SINGLES, 1,
866 [Define this if floats are the same size as longs.])
867 fi
868
869 AC_MSG_CHECKING(for struct linger)
870 AC_CACHE_VAL(scm_cv_struct_linger,
871 AC_TRY_COMPILE([
872 #include <sys/types.h>
873 #include <sys/socket.h>],
874 [struct linger lgr; lgr.l_linger = 100],
875 scm_cv_struct_linger="yes",
876 scm_cv_struct_linger="no"))
877 AC_MSG_RESULT($scm_cv_struct_linger)
878 if test $scm_cv_struct_linger = yes; then
879 AC_DEFINE(HAVE_STRUCT_LINGER, 1,
880 [Define this if your system defines struct linger, for use with the
881 getsockopt and setsockopt system calls.])
882 fi
883
884
885 AC_MSG_CHECKING(for struct timespec)
886 AC_CACHE_VAL(scm_cv_struct_timespec,
887 AC_TRY_COMPILE([
888 #include <time.h>],
889 [struct timespec t; t.tv_nsec = 100],
890 scm_cv_struct_timespec="yes",
891 scm_cv_struct_timespec="no"))
892 AC_MSG_RESULT($scm_cv_struct_timespec)
893 if test $scm_cv_struct_timespec = yes; then
894 AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
895 [Define this if your system defines struct timespec via <time.h>.])
896 fi
897
898 #--------------------------------------------------------------------
899 #
900 # Flags for thread support
901 #
902 #--------------------------------------------------------------------
903
904 SCM_I_GSC_USE_PTHREAD_THREADS=0
905 SCM_I_GSC_USE_NULL_THREADS=0
906 SCM_I_GSC_USE_COOP_THREADS=0
907 AC_SUBST([SCM_I_GSC_USE_PTHREAD_THREADS])
908 AC_SUBST([SCM_I_GSC_USE_NULL_THREADS])
909 AC_SUBST([SCM_I_GSC_USE_COOP_THREADS])
910
911 ### What thread package has the user asked for?
912 AC_ARG_WITH(threads, [ --with-threads thread interface],
913 , with_threads=yes)
914
915 case "$with_threads" in
916 "yes" | "pthread" | "pthreads" | "pthread-threads" | "")
917 AC_CHECK_LIB(pthread, main,
918 LIBS="-lpthread $LIBS"
919 SCM_I_GSC_USE_PTHREAD_THREADS=1
920 with_threads="pthreads",
921 with_threads="null")
922
923 if test $GCC = yes; then
924 AC_DEFINE(_THREAD_SAFE, 1,
925 [Use thread safe versions of GNU Libc functions.])
926 fi
927
928 AC_MSG_CHECKING(if pthread_mutexattr_settype is declared)
929 AC_CACHE_VAL(guile_cv_mutexattr_settype_declared,
930 [AC_TRY_COMPILE([#include <pthread.h>],
931 [int pthread_mutexattr_settype (int, int);],
932 guile_cv_mutexattr_settype_declared=no,
933 guile_cv_mutexattr_settype_declared=yes)])
934 AC_MSG_RESULT($guile_cv_mutexattr_settype_declared)
935 if test $guile_cv_mutexattr_settype_declared = yes; then
936 AC_DEFINE(SCM_MUTEXATTR_SETTYPE_DECLARED, 1,
937 [Define if pthread.h declares pthread_mutexattr_settype.])
938 fi
939
940 AC_MSG_CHECKING(how to get a fast mutex)
941 AC_CACHE_VAL(guile_cv_have_mutex_fast,
942 [AC_TRY_COMPILE([#include <pthread.h>],
943 [int a = PTHREAD_MUTEX_ADAPTIVE_NP;],
944 guile_cv_have_mutex_fast=PTHREAD_MUTEX_ADAPTIVE_NP,
945 guile_cv_have_mutex_fast=none)])
946 AC_MSG_RESULT($guile_cv_have_mutex_fast)
947 if test ! $guile_cv_have_mutex_fast = none; then
948 AC_DEFINE_UNQUOTED(SCM_MUTEX_FAST, $guile_cv_have_mutex_fast,
949 [The mutex kind enum for fast mutexes.])
950 fi
951
952 AC_MSG_CHECKING(how to get a recursive mutex)
953 AC_CACHE_VAL(guile_cv_have_mutex_recursive,
954 [AC_TRY_COMPILE([#include <pthread.h>],
955 [int a = PTHREAD_MUTEX_RECURSIVE_NP;],
956 guile_cv_have_mutex_recursive=PTHREAD_MUTEX_RECURSIVE_NP)
957 if test -z "$guile_cv_have_mutex_recursive"; then
958 AC_TRY_COMPILE([#include <pthread.h>],
959 [int a = PTHREAD_MUTEX_RECURSIVE;],
960 guile_cv_have_mutex_recursive=PTHREAD_MUTEX_RECURSIVE,
961 guile_cv_have_mutex_recursive=none)
962 fi])
963 AC_MSG_RESULT($guile_cv_have_mutex_recursive)
964 if test ! $guile_cv_have_mutex_recursive = none; then
965 AC_DEFINE_UNQUOTED(SCM_MUTEX_RECURSIVE, $guile_cv_have_mutex_recursive,
966 [The mutex kind enum for recursive mutexes.])
967 fi
968
969 # On Solaris, sched_yield lives in -lrt.
970 AC_SEARCH_LIBS(sched_yield, rt)
971
972 ;;
973 esac
974
975 case "$with_threads" in
976 "pthreads")
977 ;;
978 "no" | "null")
979 SCM_I_GSC_USE_NULL_THREADS=1
980 with_threads="null-threads"
981 ;;
982 * )
983 AC_MSG_ERROR(invalid value for --with-threads: $with_threads)
984 ;;
985 esac
986
987 AC_MSG_CHECKING(what kind of threads to support)
988 AC_MSG_RESULT($with_threads)
989
990 ## Cross building
991 if test "$cross_compiling" = "yes"; then
992 AC_MSG_CHECKING(cc for build)
993 ## /usr/bin/cc still uses wrong assembler
994 ## CC_FOR_BUILD="${CC_FOR_BUILD-/usr/bincc}"
995 CC_FOR_BUILD="${CC_FOR_BUILD-PATH=/usr/bin:$PATH cc}"
996 else
997 CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
998 fi
999
1000 ## AC_MSG_CHECKING("if we are cross compiling")
1001 ## AC_MSG_RESULT($cross_compiling)
1002 if test "$cross_compiling" = "yes"; then
1003 AC_MSG_RESULT($CC_FOR_BUILD)
1004 fi
1005
1006 ## No need as yet to be more elaborate
1007 CCLD_FOR_BUILD="$CC_FOR_BUILD"
1008
1009 AC_SUBST(cross_compiling)
1010 AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
1011 AC_SUBST(CCLD_FOR_BUILD)
1012
1013 ## libtool erroneously calls CC_FOR_BUILD HOST_CC;
1014 ## --HOST is the platform that PACKAGE is compiled for.
1015 HOST_CC="$CC_FOR_BUILD"
1016 AC_SUBST(HOST_CC)
1017
1018 if test "$cross_compiling" = "yes"; then
1019 AC_MSG_CHECKING(guile for build)
1020 GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
1021 else
1022 GUILE_FOR_BUILD='$(preinstguile)'
1023 fi
1024
1025 ## AC_MSG_CHECKING("if we are cross compiling")
1026 ## AC_MSG_RESULT($cross_compiling)
1027 if test "$cross_compiling" = "yes"; then
1028 AC_MSG_RESULT($GUILE_FOR_BUILD)
1029 fi
1030 AC_ARG_VAR(GUILE_FOR_BUILD,[guile for build system])
1031 AC_SUBST(GUILE_FOR_BUILD)
1032
1033 ## If we're using GCC, ask for aggressive warnings.
1034 case "$GCC" in
1035 yes )
1036 ## We had -Wstrict-prototypes in here for a bit, but Guile does too
1037 ## much stuff with generic function pointers for that to really be
1038 ## less than exasperating.
1039 ## -Wpointer-arith was here too, but something changed in gcc/glibc
1040 ## and it became equally exasperating (gcc 2.95 and/or glibc 2.1.2).
1041 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes"
1042 # Do this here so we don't screw up any of the tests above that might
1043 # not be "warning free"
1044 if test "${GUILE_ERROR_ON_WARNING}" = yes
1045 then
1046 CFLAGS="${CFLAGS} -Werror"
1047 enable_compile_warnings=no
1048 fi
1049 ;;
1050 esac
1051
1052 ## NOTE the code below sets LIBOBJS directly and so is now forbidden
1053 ## -- I'm disabling it for now in the hopes that the newer autoconf
1054 ## will DTRT -- if not, we need to fix up the sed command to match the
1055 ## others...
1056 ##
1057 ## Remove fileblocks.o from the object list. This file gets added by
1058 ## the Autoconf macro AC_STRUCT_ST_BLOCKS. But there is no need.
1059 #LIBOBJS="`echo ${LIBOBJS} | sed 's/fileblocks\.o//g'`"
1060
1061 ## If we're creating a shared library (using libtool!), then we'll
1062 ## need to generate a list of .lo files corresponding to the .o files
1063 ## given in LIBOBJS. We'll call it LIBLOBJS.
1064 LIBLOBJS="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`"
1065
1066 ## We also need to create corresponding .doc and .x files
1067 EXTRA_DOT_DOC_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.doc ,g;s,\.[[^.]]*$,.doc,'`"
1068 EXTRA_DOT_X_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.x ,g;s,\.[[^.]]*$,.x,'`"
1069
1070 AC_SUBST(GUILE_MAJOR_VERSION)
1071 AC_SUBST(GUILE_MINOR_VERSION)
1072 AC_SUBST(GUILE_MICRO_VERSION)
1073 AC_SUBST(GUILE_EFFECTIVE_VERSION)
1074 AC_SUBST(GUILE_VERSION)
1075
1076 #######################################################################
1077 # library versioning
1078
1079 AC_SUBST(LIBQTHREADS_INTERFACE_CURRENT)
1080 AC_SUBST(LIBQTHREADS_INTERFACE_REVISION)
1081 AC_SUBST(LIBQTHREADS_INTERFACE_AGE)
1082 AC_SUBST(LIBQTHREADS_INTERFACE)
1083
1084 AC_SUBST(LIBGUILE_INTERFACE_CURRENT)
1085 AC_SUBST(LIBGUILE_INTERFACE_REVISION)
1086 AC_SUBST(LIBGUILE_INTERFACE_AGE)
1087 AC_SUBST(LIBGUILE_INTERFACE)
1088
1089 AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_CURRENT)
1090 AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION)
1091 AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE)
1092 AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE)
1093
1094 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT)
1095 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION)
1096 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE)
1097 AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE)
1098
1099 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT)
1100 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION)
1101 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE)
1102 AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE)
1103
1104 #######################################################################
1105
1106 dnl Tell guile-config what flags guile users should link against.
1107 GUILE_LIBS="$LDFLAGS $THREAD_LIBS_INSTALLED $LIBS"
1108 AC_SUBST(GUILE_LIBS)
1109
1110 AC_SUBST(AWK)
1111 AC_SUBST(LIBLOBJS)
1112 AC_SUBST(EXTRA_DOT_DOC_FILES)
1113 AC_SUBST(EXTRA_DOT_X_FILES)
1114
1115 dnl See also top_builddir in info node: (libtool)AC_PROG_LIBTOOL
1116 top_builddir_absolute=`pwd`
1117 AC_SUBST(top_builddir_absolute)
1118 top_srcdir_absolute=`(cd $srcdir && pwd)`
1119 AC_SUBST(top_srcdir_absolute)
1120
1121 # Additional SCM_I_GSC definitions are above.
1122 AC_SUBST([SCM_I_GSC_GUILE_DEBUG])
1123 AC_SUBST([SCM_I_GSC_GUILE_DEBUG_FREELIST])
1124 AC_SUBST([SCM_I_GSC_ENABLE_DEPRECATED])
1125 AC_SUBST([SCM_I_GSC_ENABLE_ELISP])
1126 AC_SUBST([SCM_I_GSC_HAVE_ARRAYS])
1127 AC_SUBST([SCM_I_GSC_STACK_GROWS_UP])
1128 AC_SUBST([SCM_I_GSC_C_INLINE])
1129 AC_CONFIG_FILES([libguile/gen-scmconfig.h])
1130
1131 AC_CONFIG_FILES([
1132 Makefile
1133 am/Makefile
1134 benchmark-suite/Makefile
1135 doc/Makefile
1136 doc/goops/Makefile
1137 doc/r5rs/Makefile
1138 doc/ref/Makefile
1139 doc/tutorial/Makefile
1140 emacs/Makefile
1141 examples/Makefile
1142 examples/box-dynamic-module/Makefile
1143 examples/box-dynamic/Makefile
1144 examples/box-module/Makefile
1145 examples/box/Makefile
1146 examples/modules/Makefile
1147 examples/safe/Makefile
1148 examples/scripts/Makefile
1149 guile-config/Makefile
1150 ice-9/Makefile
1151 ice-9/debugger/Makefile
1152 ice-9/debugger/breakpoints/Makefile
1153 lang/Makefile
1154 lang/elisp/Makefile
1155 lang/elisp/internals/Makefile
1156 lang/elisp/primitives/Makefile
1157 libguile-ltdl/Makefile
1158 libguile-ltdl/upstream/Makefile
1159 libguile/Makefile
1160 oop/Makefile
1161 oop/goops/Makefile
1162 scripts/Makefile
1163 srfi/Makefile
1164 test-suite/Makefile
1165 test-suite/standalone/Makefile
1166 ])
1167
1168 AC_CONFIG_FILES([check-guile], [chmod +x check-guile])
1169 AC_CONFIG_FILES([benchmark-guile], [chmod +x benchmark-guile])
1170 AC_CONFIG_FILES([guile-tools], [chmod +x guile-tools])
1171 AC_CONFIG_FILES([pre-inst-guile], [chmod +x pre-inst-guile])
1172 AC_CONFIG_FILES([pre-inst-guile-env], [chmod +x pre-inst-guile-env])
1173 AC_CONFIG_FILES([libguile/guile-snarf],
1174 [chmod +x libguile/guile-snarf])
1175 AC_CONFIG_FILES([libguile/guile-doc-snarf],
1176 [chmod +x libguile/guile-doc-snarf])
1177 AC_CONFIG_FILES([libguile/guile-func-name-check],
1178 [chmod +x libguile/guile-func-name-check])
1179 AC_CONFIG_FILES([libguile/guile-snarf-docs],
1180 [chmod +x libguile/guile-snarf-docs])
1181
1182 AC_OUTPUT
1183
1184 dnl Local Variables:
1185 dnl comment-start: "dnl "
1186 dnl comment-end: ""
1187 dnl comment-start-skip: "\\bdnl\\b\\s *"
1188 dnl End: