Fix type-checking of SRFI-1 `partition'.
[bpt/guile.git] / configure.in
CommitLineData
777b022a
JB
1dnl configuration script for Guile
2dnl Process this file with autoconf to produce configure.
50848747 3dnl
a73256d0
KR
4
5define(GUILE_CONFIGURE_COPYRIGHT,[[
6
b226295a 7Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
a73256d0
KR
8
9This file is part of GUILE
10
11GUILE is free software; you can redistribute it and/or modify it
12under the terms of the GNU General Public License as published by
13the Free Software Foundation; either version 2, or (at your
14option) any later version.
15
16GUILE is distributed in the hope that it will be useful, but
17WITHOUT ANY WARRANTY; without even the implied warranty of
18MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19General Public License for more details.
20
21You should have received a copy of the GNU General Public License
22along with GUILE; see the file COPYING. If not, write to the
92205699
MV
23Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24Boston, MA 02110-1301, USA.
a73256d0
KR
25
26]])
50848747 27
6caac03c 28AC_PREREQ(2.59)
237b3247 29
b3aa4626
KR
30dnl `patsubst' here deletes the newline which "echo" prints. We can't use
31dnl "echo -n" since -n is not portable (see autoconf manual "Limitations of
32dnl Builtins"), in particular on solaris it results in a literal "-n" in
33dnl the output.
34dnl
35AC_INIT(patsubst(m4_esyscmd(. ./GUILE-VERSION && echo ${PACKAGE}),[
36]),
37 patsubst(m4_esyscmd(. ./GUILE-VERSION && echo ${GUILE_VERSION}),[
38]),
2039f7be 39 [bug-guile@gnu.org])
f6b4d9b4
LC
40AC_CONFIG_AUX_DIR([build-aux])
41AC_CONFIG_MACRO_DIR([m4])
5ae51dad 42AC_CONFIG_SRCDIR(GUILE-VERSION)
f6b4d9b4
LC
43
44AM_INIT_AUTOMAKE([gnu no-define check-news])
5ae51dad 45
a73256d0 46AC_COPYRIGHT(GUILE_CONFIGURE_COPYRIGHT)
8907576f 47AC_CONFIG_SRCDIR([GUILE-VERSION])
5ae51dad 48
2d26def0 49. $srcdir/GUILE-VERSION
5ae51dad 50
15ae1bee 51AM_MAINTAINER_MODE
9a52bc2a 52AM_CONFIG_HEADER([config.h])
a73256d0 53AH_TOP(/*GUILE_CONFIGURE_COPYRIGHT*/)
2d26def0 54
3a629497 55#--------------------------------------------------------------------
0e8a8468
MV
56#
57# Independent Subdirectories
58#
59#--------------------------------------------------------------------
60
61AC_CONFIG_SUBDIRS(guile-readline)
62
a6be66ed
RB
63#--------------------------------------------------------------------
64
65dnl Some more checks for Win32
66AC_CYGWIN
a6be66ed
RB
67AC_LIBTOOL_WIN32_DLL
68
69AC_PROG_INSTALL
70AC_PROG_CC
6caac03c 71gl_EARLY
a6be66ed
RB
72AC_PROG_CPP
73AC_PROG_AWK
74
6caac03c
LC
75dnl Gnulib.
76gl_INIT
a6be66ed
RB
77
78AM_PROG_CC_STDC
45c0ff10
KR
79# for per-target cflags in the libguile subdir
80AM_PROG_CC_C_O
a6be66ed
RB
81
82AC_LIBTOOL_DLOPEN
c78a96e0 83AC_PROG_LIBTOOL
a98dbc87
MV
84AC_CHECK_LIB([ltdl], [lt_dlinit], ,
85 [AC_MSG_ERROR([libltdl not found. See README.])])
c62a2bb9
MV
86
87AC_SUBST(DLPREOPEN)
a6be66ed
RB
88
89AC_CHECK_PROG(have_makeinfo, makeinfo, yes, no)
90AM_CONDITIONAL(HAVE_MAKEINFO, test "$have_makeinfo" = yes)
91
d995da7f
NJ
92AM_PATH_LISPDIR
93
0e8a8468 94#--------------------------------------------------------------------
3a629497 95#
a6be66ed 96# User options (after above tests that may set default CFLAGS etc.)
3a629497
JB
97#
98#--------------------------------------------------------------------
86789f9b 99
bdcccc18
RB
100GUILE_ERROR_ON_WARNING="yes"
101
8afd1a2a
RB
102AC_ARG_ENABLE(error-on-warning,
103 [ --enable-error-on-warning treat compile warnings as errors],
104 [case "${enableval}" in
bdcccc18
RB
105 yes | y) GUILE_ERROR_ON_WARNING="yes" ;;
106 no | n) GUILE_ERROR_ON_WARNING="no" ;;
8afd1a2a
RB
107 *) AC_MSG_ERROR(bad value ${enableval} for --enable-error-on-warning) ;;
108 esac])
109
9a52bc2a 110SCM_I_GSC_GUILE_DEBUG_FREELIST=0
52b3923a 111AC_ARG_ENABLE(debug-freelist,
e73dd549 112 [ --enable-debug-freelist include garbage collector freelist debugging code],
9a52bc2a
RB
113 if test "$enable_debug_freelist" = y \
114 || test "$enable_debug_freelist" = yes; then
115 SCM_I_GSC_GUILE_DEBUG_FREELIST=1
52b3923a
GB
116 fi)
117
cf890744 118AC_ARG_ENABLE(debug-malloc,
e73dd549 119 [ --enable-debug-malloc include malloc debugging code],
cf890744 120 if test "$enable_debug_malloc" = y || test "$enable_debug_malloc" = yes; then
eede3dbc
RB
121 AC_DEFINE(GUILE_DEBUG_MALLOC, 1,
122 [Define this if you want to debug scm_must_malloc/realloc/free calls.])
cf890744
MD
123 fi)
124
9a52bc2a 125SCM_I_GSC_GUILE_DEBUG=0
62002dcb 126AC_ARG_ENABLE(guile-debug,
9a52bc2a
RB
127 [AC_HELP_STRING([--enable-guile-debug],
128 [include internal debugging functions])],
62002dcb 129 if test "$enable_guile_debug" = y || test "$enable_guile_debug" = yes; then
9a52bc2a 130 SCM_I_GSC_GUILE_DEBUG=1
62002dcb
MD
131 fi)
132
52cfc69b
GH
133AC_ARG_ENABLE(posix,
134 [ --disable-posix omit posix interfaces],,
135 enable_posix=yes)
136
137AC_ARG_ENABLE(networking,
dc914156 138 [ --disable-networking omit networking interfaces],,
52cfc69b
GH
139 enable_networking=yes)
140
141AC_ARG_ENABLE(regex,
142 [ --disable-regex omit regular expression interfaces],,
143 enable_regex=yes)
144
f5922e27
MV
145AC_ARG_ENABLE([discouraged],
146 AC_HELP_STRING([--disable-discouraged],[omit discouraged features]))
147
148if test "$enable_discouraged" = no; then
149 SCM_I_GSC_ENABLE_DISCOURAGED=0
150else
151 SCM_I_GSC_ENABLE_DISCOURAGED=1
152fi
153
9a52bc2a
RB
154AC_ARG_ENABLE([deprecated],
155 AC_HELP_STRING([--disable-deprecated],[omit deprecated features]))
eede3dbc 156
e73dd549 157if test "$enable_deprecated" = no; then
9a52bc2a 158 SCM_I_GSC_ENABLE_DEPRECATED=0
e73dd549
MV
159else
160 if test "$enable_deprecated" = yes || test "$enable_deprecated" = ""; then
94a0d885
MV
161 warn_default=summary
162 elif test "$enable_deprecated" = shutup; then
163 warn_default=no
164 else
165 warn_default=$enable_deprecated
e73dd549 166 fi
9a52bc2a 167 SCM_I_GSC_ENABLE_DEPRECATED=1
eede3dbc
RB
168 AC_DEFINE_UNQUOTED(SCM_WARN_DEPRECATED_DEFAULT, "$warn_default",
169 [Define this to control the default warning level for deprecated features.])
e73dd549
MV
170fi
171
3d1a89b9
NJ
172AC_ARG_ENABLE(elisp,
173 [ --disable-elisp omit Emacs Lisp support],,
174 enable_elisp=yes)
175
d05bcb2e
NJ
176dnl Added the following configure option in January 2008 following
177dnl investigation of problems with "64" system and library calls on
178dnl Darwin (MacOS X). The libguile code (_scm.h) assumes that if a
179dnl system has stat64, it will have all the other 64 APIs too; but on
180dnl Darwin, stat64 is there but other APIs are missing.
181dnl
182dnl It also appears, from the Darwin docs, that most system call APIs
183dnl there (i.e. the traditional ones _without_ "64" in their names) have
184dnl been 64-bit-capable for a long time now, so it isn't necessary to
185dnl use "64" versions anyway. For example, Darwin's off_t is 64-bit.
186dnl
187dnl A similar problem has been reported for HP-UX:
188dnl http://www.nabble.com/Building-guile-1.8.2-on-hpux-td13106681.html
189dnl
190dnl Therefore, and also because a Guile without LARGEFILE64 support is
191dnl better than no Guile at all, we provide this option to suppress
192dnl trying to use "64" calls.
193dnl
194dnl It may be that for some 64-bit function on Darwin/HP-UX we do need
195dnl to use a "64" call, and hence that by using --without-64-calls we're
196dnl missing out on that. If so, someone can work on that in the future.
197dnl For now, --without-64-calls allows Guile to build on OSs where it
198dnl wasn't building before.
4b26c03e 199AC_MSG_CHECKING([whether to use system and library "64" calls])
d05bcb2e
NJ
200AC_ARG_WITH([64-calls],
201 AC_HELP_STRING([--without-64-calls],
202 [don't attempt to use system and library calls with "64" in their names]),
203 [use_64_calls=$withval],
204 [use_64_calls=yes
205 case $host in
206 *-apple-darwin* )
207 use_64_calls=no
208 ;;
32b164aa
NJ
209 powerpc-ibm-aix* )
210 use_64_calls=no
211 ;;
d05bcb2e 212 esac])
4b26c03e 213AC_MSG_RESULT($use_64_calls)
d05bcb2e
NJ
214case "$use_64_calls" in
215 y* )
216 AC_DEFINE(GUILE_USE_64_CALLS, 1,
217 [Define to 1 in order to try to use "64" versions of system and library calls.])
218 ;;
219esac
220
a44e61ac
MV
221#--------------------------------------------------------------------
222
4f6f9ae3
GH
223dnl Check for dynamic linking
224
225use_modules=yes
226AC_ARG_WITH(modules,
227[ --with-modules[=FILES] Add support for dynamic modules],
228use_modules="$withval")
229test -z "$use_modules" && use_modules=yes
230DLPREOPEN=
231if test "$use_modules" != no; then
4f6f9ae3
GH
232 if test "$use_modules" = yes; then
233 DLPREOPEN="-dlpreopen force"
234 else
235 DLPREOPEN="-export-dynamic"
236 for module in $use_modules; do
237 DLPREOPEN="$DLPREOPEN -dlopen $module"
238 done
239 fi
240fi
241
52cfc69b
GH
242dnl files which are destined for separate modules.
243
4f6f9ae3
GH
244if test "$use_modules" != no; then
245 AC_LIBOBJ([dynl])
246fi
247
52cfc69b 248if test "$enable_posix" = yes; then
eede3dbc
RB
249 AC_LIBOBJ([filesys])
250 AC_LIBOBJ([posix])
251 AC_DEFINE(HAVE_POSIX, 1,
252 [Define this if you want support for POSIX system calls in Guile.])
52cfc69b
GH
253fi
254
255if test "$enable_networking" = yes; then
eede3dbc
RB
256 AC_LIBOBJ([net_db])
257 AC_LIBOBJ([socket])
258 AC_DEFINE(HAVE_NETWORKING, 1,
259 [Define this if you want support for networking in Guile.])
52cfc69b
GH
260fi
261
cf890744 262if test "$enable_debug_malloc" = yes; then
eede3dbc 263 AC_LIBOBJ([debug-malloc])
cf890744
MD
264fi
265
3d1a89b9 266if test "$enable_elisp" = yes; then
9a52bc2a
RB
267 SCM_I_GSC_ENABLE_ELISP=1
268else
269 SCM_I_GSC_ENABLE_ELISP=0
3d1a89b9 270fi
9a5fa6e9 271AC_CHECK_LIB(uca, __uc_get_ar_bsp)
3d1a89b9 272
3a629497 273AC_C_CONST
5b079b46 274
b3aa4626
KR
275# "volatile" is used in a couple of tests below.
276AC_C_VOLATILE
277
9a52bc2a 278AC_C_INLINE
5bd732c9 279if test "$ac_cv_c_inline" != no; then
9a52bc2a
RB
280 SCM_I_GSC_C_INLINE="\"${ac_cv_c_inline}\""
281else
282 SCM_I_GSC_C_INLINE=NULL
5bd732c9 283fi
9a5fa6e9 284AC_CHECK_LIB(uca, __uc_get_ar_bsp)
5bd732c9 285
9a52bc2a
RB
286AC_C_BIGENDIAN
287
288AC_CHECK_SIZEOF(char)
289AC_CHECK_SIZEOF(unsigned char)
813b3dd4 290AC_CHECK_SIZEOF(short)
9a52bc2a 291AC_CHECK_SIZEOF(unsigned short)
9dec9737 292AC_CHECK_SIZEOF(int)
9a52bc2a 293AC_CHECK_SIZEOF(unsigned int)
9dec9737 294AC_CHECK_SIZEOF(long)
9a52bc2a 295AC_CHECK_SIZEOF(unsigned long)
813b3dd4 296AC_CHECK_SIZEOF(size_t)
813b3dd4 297AC_CHECK_SIZEOF(long long)
9a52bc2a 298AC_CHECK_SIZEOF(unsigned long long)
fcc5d734
SJ
299AC_CHECK_SIZEOF(__int64)
300AC_CHECK_SIZEOF(unsigned __int64)
1be6b49c 301AC_CHECK_SIZEOF(void *)
9a52bc2a
RB
302AC_CHECK_SIZEOF(intptr_t)
303AC_CHECK_SIZEOF(uintptr_t)
304AC_CHECK_SIZEOF(ptrdiff_t)
d20008c0 305AC_CHECK_SIZEOF(size_t)
4f416616 306AC_CHECK_SIZEOF(off_t)
1be6b49c 307
f3f70257
ML
308if test "$ac_cv_sizeof_long" -ne "$ac_cv_sizeof_void_p"; then
309 AC_MSG_ERROR(sizes of long and void* are not identical)
9dec9737 310fi
3a629497 311
c134fe9d 312if test "$ac_cv_sizeof_ptrdiff_t" -ne 0; then
9a52bc2a
RB
313 SCM_I_GSC_T_PTRDIFF='"ptrdiff_t"'
314else
315 SCM_I_GSC_T_PTRDIFF='"long"'
316fi
317AC_SUBST([SCM_I_GSC_T_PTRDIFF])
318
319AC_CHECK_HEADERS([stdint.h])
320AC_CHECK_HEADERS([inttypes.h])
321
d20008c0
MV
322AC_CHECK_SIZEOF(intmax_t)
323
9a52bc2a
RB
324SCM_I_GSC_NEEDS_STDINT_H=0
325SCM_I_GSC_NEEDS_INTTYPES_H=0
326
327### intptr and uintptr (try not to use inttypes if we don't have to)
328if test "$ac_cv_header_inttypes_h" = yes; then
329 if test "$ac_cv_sizeof_intptr_t" -eq 0; then
330 AC_CHECK_SIZEOF([intptr_t],,[#include <inttypes.h>
331#include <stdio.h>])
332 if test "$ac_cv_sizeof_intptr_t" -ne 0; then
333 SCM_I_GSC_NEEDS_INTTYPES_H=1
334 fi
335 fi
336 if test "$ac_cv_sizeof_uintptr_t" -eq 0; then
337 AC_CHECK_SIZEOF([uintptr_t],,[#include <inttypes.h>
338#include <stdio.h>])
339 if test "$ac_cv_sizeof_uintptr_t" -ne 0; then
340 SCM_I_GSC_NEEDS_INTTYPES_H=1
341 fi
342 fi
343fi
344
345### See what's provided by stdint.h
346if test "$ac_cv_header_stdint_h" = yes; then
347 AC_CHECK_TYPE([int8_t],[scm_stdint_has_int8=1],,[#include <stdint.h>])
348 AC_CHECK_TYPE([uint8_t],[scm_stdint_has_uint8=1],,[#include <stdint.h>])
349 AC_CHECK_TYPE([int16_t],[scm_stdint_has_int16=1],,[#include <stdint.h>])
350 AC_CHECK_TYPE([uint16_t],[scm_stdint_has_uint16=1],,[#include <stdint.h>])
351 AC_CHECK_TYPE([int32_t],[scm_stdint_has_int32=1],,[#include <stdint.h>])
352 AC_CHECK_TYPE([uint32_t],[scm_stdint_has_uint32=1],,[#include <stdint.h>])
353 AC_CHECK_TYPE([int64_t],[scm_stdint_has_int64=1],,[#include <stdint.h>])
354 AC_CHECK_TYPE([uint64_t],[scm_stdint_has_uint64=1],,[#include <stdint.h>])
eb1f89f6
MV
355 AC_CHECK_TYPE([intmax_t],[scm_stdint_has_intmax=1],,[#include <stdint.h>])
356 AC_CHECK_TYPE([uintmax_t],[scm_stdint_has_uintmax=1],,[#include <stdint.h>])
9a52bc2a
RB
357fi
358
359# so we don't get confused by the cache (wish there was a better way
360# to check particular headers for the same type...)
361
362unset ac_cv_type_int8_t
363unset ac_cv_type_uint8_t
364unset ac_cv_type_int16_t
365unset ac_cv_type_uint16_t
366unset ac_cv_type_int32_t
367unset ac_cv_type_uint32_t
368unset ac_cv_type_int64_t
369unset ac_cv_type_uint64_t
eb1f89f6
MV
370unset ac_cv_type_intmax_t
371unset ac_cv_type_uintmax_t
9a52bc2a
RB
372
373### See what's provided by inttypes.h
374if test "$ac_cv_header_inttypes_h" = yes; then
375 AC_CHECK_TYPE([int8_t],[scm_inttypes_has_int8=1],,[#include <inttypes.h>])
376 AC_CHECK_TYPE([uint8_t],[scm_inttypes_has_uint8=1],,[#include <inttypes.h>])
377 AC_CHECK_TYPE([int16_t],[scm_inttypes_has_int16=1],,[#include <inttypes.h>])
378 AC_CHECK_TYPE([uint16_t],[scm_inttypes_has_uint16=1],,[#include <inttypes.h>])
379 AC_CHECK_TYPE([int32_t],[scm_inttypes_has_int32=1],,[#include <inttypes.h>])
380 AC_CHECK_TYPE([uint32_t],[scm_inttypes_has_uint32=1],,[#include <inttypes.h>])
381 AC_CHECK_TYPE([int64_t],[scm_inttypes_has_int64=1],,[#include <inttypes.h>])
382 AC_CHECK_TYPE([uint64_t],[scm_inttypes_has_uint64=1],,[#include <inttypes.h>])
eb1f89f6
MV
383 AC_CHECK_TYPE([intmax_t],[scm_inttypes_has_intmax=1],,[#include <inttypes.h>])
384 AC_CHECK_TYPE([uintmax_t],[scm_inttypes_has_uintmax=1],,[#include <inttypes.h>])
9a52bc2a
RB
385fi
386
387# Try hard to find definitions for some required scm_t_*int* types.
388
389### Required type scm_t_int8
6aa84fdd 390if test "$scm_stdint_has_int8"; then
9a52bc2a
RB
391 SCM_I_GSC_T_INT8='"int8_t"'
392 SCM_I_GSC_NEEDS_STDINT_H=1
393elif test "$scm_inttypes_has_int8"; then
394 SCM_I_GSC_T_INT8='"int8_t"'
395 SCM_I_GSC_NEEDS_INTTYPES_H=1
6aa84fdd
MV
396elif test "$ac_cv_sizeof_char" -eq 1; then
397 SCM_I_GSC_T_INT8='"signed char"'
9a52bc2a
RB
398else
399 AC_MSG_ERROR([Can't find appropriate type for scm_t_int8.])
400fi
401AC_SUBST([SCM_I_GSC_T_INT8])
402
403### Required type scm_t_uint8
6aa84fdd 404if test "$scm_stdint_has_uint8"; then
9a52bc2a
RB
405 SCM_I_GSC_T_UINT8='"uint8_t"'
406 SCM_I_GSC_NEEDS_STDINT_H=1
407elif test "$scm_inttypes_has_uint8"; then
408 SCM_I_GSC_T_UINT8='"uint8_t"'
409 SCM_I_GSC_NEEDS_INTTYPES_H=1
6aa84fdd
MV
410elif test "$ac_cv_sizeof_unsigned_char" -eq 1; then
411 SCM_I_GSC_T_UINT8='"unsigned char"'
9a52bc2a
RB
412else
413 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint8.])
414fi
415AC_SUBST([SCM_I_GSC_T_UINT8])
9a52bc2a
RB
416
417### Required type scm_t_int16 (ANSI C says int or short might work)
6aa84fdd 418if test "$scm_stdint_has_int16"; then
9a52bc2a
RB
419 SCM_I_GSC_T_INT16='"int16_t"'
420 SCM_I_GSC_NEEDS_STDINT_H=1
421elif test "$scm_inttypes_has_int16"; then
422 SCM_I_GSC_T_INT16='"int16_t"'
423 SCM_I_GSC_NEEDS_INTTYPES_H=1
6aa84fdd
MV
424elif test "$ac_cv_sizeof_int" -eq 2; then
425 SCM_I_GSC_T_INT16='"int"'
6aa84fdd
MV
426elif test "$ac_cv_sizeof_short" -eq 2; then
427 SCM_I_GSC_T_INT16='"short"'
9a52bc2a
RB
428else
429 AC_MSG_ERROR([Can't find appropriate type for scm_t_int16.])
430fi
431AC_SUBST([SCM_I_GSC_T_INT16])
432
433### Required type scm_t_uint16 (ANSI C says int or short might work)
6aa84fdd 434if test "$scm_stdint_has_uint16"; then
9a52bc2a
RB
435 SCM_I_GSC_T_UINT16='"uint16_t"'
436 SCM_I_GSC_NEEDS_STDINT_H=1
437elif test "$scm_inttypes_has_uint16"; then
438 SCM_I_GSC_T_UINT16='"uint16_t"'
439 SCM_I_GSC_NEEDS_INTTYPES_H=1
6aa84fdd
MV
440elif test "$ac_cv_sizeof_unsigned_int" -eq 2; then
441 SCM_I_GSC_T_UINT16='"unsigned int"'
6aa84fdd
MV
442elif test "$ac_cv_sizeof_unsigned_short" -eq 2; then
443 SCM_I_GSC_T_UINT16='"unsigned short"'
9a52bc2a
RB
444else
445 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint16.])
446fi
447AC_SUBST([SCM_I_GSC_T_UINT16])
448
449
450### Required type scm_t_int32 (ANSI C says int, short, or long might work)
6aa84fdd 451if test "$scm_stdint_has_int32"; then
9a52bc2a
RB
452 SCM_I_GSC_T_INT32='"int32_t"'
453 SCM_I_GSC_NEEDS_STDINT_H=1
454elif test "$scm_inttypes_has_int32"; then
455 SCM_I_GSC_T_INT32='"int32_t"'
456 SCM_I_GSC_NEEDS_INTTYPES_H=1
6aa84fdd
MV
457elif test "$ac_cv_sizeof_int" -eq 4; then
458 SCM_I_GSC_T_INT32='"int"'
6aa84fdd
MV
459elif test "$ac_cv_sizeof_long" -eq 4; then
460 SCM_I_GSC_T_INT32='"long"'
6aa84fdd
MV
461elif test "$ac_cv_sizeof_short" -eq 4; then
462 SCM_I_GSC_T_INT32='"short"'
9a52bc2a
RB
463else
464 AC_MSG_ERROR([Can't find appropriate type for scm_t_int32.])
465fi
466AC_SUBST([SCM_I_GSC_T_INT32])
467
468### Required type scm_t_uint32 (ANSI C says int, short, or long might work)
6aa84fdd 469if test "$scm_stdint_has_uint32"; then
9a52bc2a
RB
470 SCM_I_GSC_T_UINT32='"uint32_t"'
471 SCM_I_GSC_NEEDS_STDINT_H=1
472elif test "$scm_inttypes_has_uint32"; then
473 SCM_I_GSC_T_UINT32='"uint32_t"'
474 SCM_I_GSC_NEEDS_INTTYPES_H=1
6aa84fdd
MV
475elif test "$ac_cv_sizeof_unsigned_int" -eq 4; then
476 SCM_I_GSC_T_UINT32='"unsigned int"'
6aa84fdd
MV
477elif test "$ac_cv_sizeof_unsigned_long" -eq 4; then
478 SCM_I_GSC_T_UINT32='"unsigned long"'
6aa84fdd
MV
479elif test "$ac_cv_sizeof_unsigned_short" -eq 4; then
480 SCM_I_GSC_T_UINT32='"unsigned short"'
9a52bc2a
RB
481else
482 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint32.])
483fi
484AC_SUBST([SCM_I_GSC_T_UINT32])
485
a6be66ed 486### Optional type scm_t_int64 (ANSI C says int, short, or long might work)
fcc5d734 487### Also try 'long long' and '__int64' if we have it.
9a52bc2a 488SCM_I_GSC_T_INT64=0
6aa84fdd
MV
489if test "$scm_stdint_has_int64"; then
490 SCM_I_GSC_T_INT64='"int64_t"'
6aa84fdd
MV
491 SCM_I_GSC_NEEDS_STDINT_H=1
492elif test "$scm_inttypes_has_int64"; then
493 SCM_I_GSC_T_INT64='"int64_t"'
6aa84fdd
MV
494 SCM_I_GSC_NEEDS_INTTYPES_H=1
495elif test "$ac_cv_sizeof_int" -eq 8; then
9a52bc2a
RB
496 SCM_I_GSC_T_INT64='"int"'
497elif test "$ac_cv_sizeof_long" -eq 8; then
498 SCM_I_GSC_T_INT64='"long"'
499elif test "$ac_cv_sizeof_short" -eq 8; then
500 SCM_I_GSC_T_INT64='"short"'
501elif test "$ac_cv_sizeof_long_long" -eq 8; then
502 SCM_I_GSC_T_INT64='"long long"'
fcc5d734
SJ
503elif test "$ac_cv_sizeof___int64" -eq 8; then
504 SCM_I_GSC_T_INT64='"__int64"'
9a52bc2a
RB
505else
506 AC_MSG_ERROR([Can't find appropriate type for scm_t_int64.])
507fi
508AC_SUBST([SCM_I_GSC_T_INT64])
6aa84fdd 509
9a52bc2a 510
a6be66ed 511### Optional type scm_t_uint64 (ANSI C says int, short, or long might work)
fcc5d734 512### Also try 'long long' and '__int64' if we have it.
9a52bc2a 513SCM_I_GSC_T_UINT64=0
6aa84fdd
MV
514if test "$scm_stdint_has_uint64"; then
515 SCM_I_GSC_T_UINT64='"uint64_t"'
6aa84fdd
MV
516 SCM_I_GSC_NEEDS_STDINT_H=1
517elif test "$scm_inttypes_has_uint64"; then
518 SCM_I_GSC_T_UINT64='"uint64_t"'
6aa84fdd
MV
519 SCM_I_GSC_NEEDS_INTTYPES_H=1
520elif test "$ac_cv_sizeof_unsigned_int" -eq 8; then
9a52bc2a
RB
521 SCM_I_GSC_T_UINT64='"unsigned int"'
522elif test "$ac_cv_sizeof_unsigned_long" -eq 8; then
523 SCM_I_GSC_T_UINT64='"unsigned long"'
524elif test "$ac_cv_sizeof_unsigned_short" -eq 8; then
525 SCM_I_GSC_T_UINT64='"unsigned short"'
526elif test "$ac_cv_sizeof_unsigned_long_long" -eq 8; then
527 SCM_I_GSC_T_UINT64='"unsigned long long"'
fcc5d734
SJ
528elif test "$ac_cv_sizeof_unsigned___int64" -eq 8; then
529 SCM_I_GSC_T_UINT64='"unsigned __int64"'
9a52bc2a
RB
530else
531 AC_MSG_ERROR([Can't find appropriate type for scm_t_uint64.])
532fi
533AC_SUBST([SCM_I_GSC_T_UINT64])
534
eb1f89f6
MV
535### Required type scm_t_intmax
536###
537### We try 'intmax_t', '__int64', 'long long' in this order. When
538### none of them is available, we use 'long'.
539###
540SCM_I_GSC_T_INTMAX=0
541if test "$scm_stdint_has_intmax"; then
542 SCM_I_GSC_T_INTMAX='"intmax_t"'
543 SCM_I_GSC_NEEDS_STDINT_H=1
544elif test "$scm_inttypes_has_intmax"; then
545 SCM_I_GSC_T_INTMAX='"intmax_t"'
546 SCM_I_GSC_NEEDS_INTTYPES_H=1
547elif test "$ac_cv_sizeof___int64" -ne 0; then
548 SCM_I_GSC_T_INTMAX='"__int64"'
549elif test "$ac_cv_sizeof_long_long" -ne 0; then
550 SCM_I_GSC_T_INTMAX='"long long"'
551else
552 SCM_I_GSC_T_INTMAX='"long"'
553fi
554AC_SUBST([SCM_I_GSC_T_INTMAX])
555
556### Required type scm_t_uintmax
557###
558### We try 'uintmax_t', 'unsigned __int64', 'unsigned long long' in
559### this order. When none of them is available, we use 'unsigned long'.
560###
561SCM_I_GSC_T_UINTMAX=0
562if test "$scm_stdint_has_uintmax"; then
563 SCM_I_GSC_T_UINTMAX='"uintmax_t"'
564 SCM_I_GSC_NEEDS_STDINT_H=1
565elif test "$scm_inttypes_has_uintmax"; then
566 SCM_I_GSC_T_UINTMAX='"uintmax_t"'
567 SCM_I_GSC_NEEDS_INTTYPES_H=1
568elif test "$ac_cv_sizeof_unsigned___int64" -ne 0; then
569 SCM_I_GSC_T_UINTMAX='"unsigned __int64"'
570elif test "$ac_cv_sizeof_unsigned_long_long" -ne 0; then
571 SCM_I_GSC_T_UINTMAX='"unsigned long long"'
572else
573 SCM_I_GSC_T_UINTMAX='"unsigned long"'
574fi
575AC_SUBST([SCM_I_GSC_T_UINTMAX])
576
9a52bc2a
RB
577
578AC_SUBST([SCM_I_GSC_NEEDS_STDINT_H])
579AC_SUBST([SCM_I_GSC_NEEDS_INTTYPES_H])
580
3a629497
JB
581AC_HEADER_STDC
582AC_HEADER_DIRENT
583AC_HEADER_TIME
584AC_HEADER_SYS_WAIT
bdcccc18 585
63177e46 586# Reasons for testing:
8ab3d8a0 587# complex.h - new in C99
63177e46 588# fenv.h - available in C99, but not older systems
45c0ff10 589# process.h - mingw specific
a2f00b9b 590# langinfo.h, nl_types.h - SuS v2
63177e46 591#
45c0ff10 592AC_CHECK_HEADERS([complex.h fenv.h io.h libc.h limits.h malloc.h memory.h process.h string.h \
bdcccc18
RB
593regex.h rxposix.h rx/rxposix.h sys/dir.h sys/ioctl.h sys/select.h \
594sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h \
595sys/utime.h time.h unistd.h utime.h pwd.h grp.h sys/utsname.h \
6caac03c 596direct.h langinfo.h nl_types.h])
bdcccc18 597
8ab3d8a0
KR
598# "complex double" is new in C99, and "complex" is only a keyword if
599# <complex.h> is included
600AC_CHECK_TYPES(complex double,,,
601[#if HAVE_COMPLEX_H
602#include <complex.h>
603#endif])
604
4f416616
KR
605# On MacOS X <sys/socklen.h> contains socklen_t, so must include that
606# when testing.
607AC_CHECK_TYPE(socklen_t, ,
608 [AC_DEFINE_UNQUOTED(socklen_t, int,
609 [Define to `int' if <sys/socket.h> does not define.])],
610 [#if HAVE_SYS_TYPES_H
611#include <sys/types.h>
612#endif
613#include <sys/socket.h>
614])
615AC_CHECK_TYPE(struct ip_mreq)
616
3a629497
JB
617GUILE_HEADER_LIBC_WITH_UNISTD
618
619AC_TYPE_GETGROUPS
620AC_TYPE_SIGNAL
621AC_TYPE_MODE_T
622
45c0ff10
KR
623# On mingw -lm is empty, so this test is unnecessary, but it's
624# harmless so we don't hard-code to suppress it.
625#
626AC_CHECK_LIB(m, cos)
627
4c787b52 628AC_CHECK_FUNCS(gethostbyname)
5852c051
JB
629if test $ac_cv_func_gethostbyname = no; then
630 AC_CHECK_LIB(nsl, gethostbyname)
631fi
39e8f371 632
4c787b52 633AC_CHECK_FUNCS(connect)
5852c051
JB
634if test $ac_cv_func_connect = no; then
635 AC_CHECK_LIB(socket, connect)
636fi
5ee74cec 637
f9e5e096
MV
638dnl
639dnl Check for Winsock and other functionality on Win32 (*not* CygWin)
640dnl
641EXTRA_DEFS=""
45c0ff10
KR
642case $host in
643 *-*-mingw*)
6812c28f 644 AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCK2_H], 1,
f9e5e096
MV
645 [Define if you have the <winsock2.h> header file.])])
646 AC_CHECK_LIB(ws2_32, main)
eede3dbc
RB
647 AC_LIBOBJ([win32-uname])
648 AC_LIBOBJ([win32-dirent])
b4e15479 649 if test "$enable_networking" = yes ; then
eede3dbc 650 AC_LIBOBJ([win32-socket])
b4e15479
SJ
651 fi
652 if test "$enable_shared" = yes ; then
8f99e3f3
SJ
653 EXTRA_DEFS="-DSCM_IMPORT"
654 AC_DEFINE(USE_DLL_IMPORT, 1,
655 [Define if you need additional CPP macros on Win32 platforms.])
f9e5e096 656 fi
45c0ff10
KR
657 ;;
658esac
f9e5e096 659AC_SUBST(EXTRA_DEFS)
f9e5e096 660
ef73a2a0
KR
661# Reasons for testing:
662# crt_externs.h - Darwin specific
663#
664AC_CHECK_HEADERS([assert.h crt_externs.h])
bdcccc18 665
ef73a2a0 666# Reasons for testing:
1df72834
KR
667# DINFINITY - OSF specific
668# DQNAN - OSF specific
669# (DINFINITY and DQNAN are actually global variables, not functions)
8ab3d8a0 670# chsize - an MS-DOS-ism, found in mingw
b69471c1
KR
671# cexp, clog - not in various pre-c99 systems, and note that it's possible
672# for gcc to provide the "complex double" type but the system to not
673# have functions like cexp and clog
8ab3d8a0 674# clog10 - not in mingw (though others like clog and csqrt are)
63177e46 675# fesetround - available in C99, but not older systems
8ab3d8a0
KR
676# ftruncate - posix, but probably not older systems (current mingw
677# has it as an inline for chsize)
23f2b9a3 678# ioctl - not in mingw.
c9d1dcc0 679# gmtime_r - recent posix, not on old systems
45c0ff10
KR
680# pipe - not in mingw
681# _pipe - specific to mingw, taking 3 args
66ec83c9 682# readdir_r - recent posix, not on old systems
4f416616 683# stat64 - SuS largefile stuff, not on old systems
6b01eac9 684# sysconf - not on old systems
8ab3d8a0 685# truncate - not in mingw
a17d2654 686# isblank - available as a GNU extension or in C99
ef73a2a0 687# _NSGetEnviron - Darwin specific
a2f00b9b
LC
688# strcoll_l, newlocale - GNU extensions (glibc), also available on Darwin
689# nl_langinfo - X/Open, not available on Windows.
ef73a2a0 690#
b69471c1 691AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid fesetround ftime ftruncate fchown getcwd geteuid gettimeofday gmtime_r ioctl lstat mkdir mknod nice pipe _pipe readdir_r readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt stat64 strftime strptime symlink sync sysconf 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 truncate unsetenv isblank _NSGetEnviron strcoll strcoll_l newlocale nl_langinfo])
64e121dc 692
6b01eac9
KR
693# Reasons for testing:
694# netdb.h - not in mingw
695# sys/param.h - not in mingw
45c0ff10
KR
696# pthread.h - only available with pthreads. ACX_PTHREAD doesn't
697# check this specifically, we need it for the timespec test below.
8ab3d8a0
KR
698# sethostname - the function itself check because it's not in mingw,
699# the DECL is checked because Solaris 10 doens't have in any header
a2f00b9b 700# xlocale.h - needed on Darwin for the `locale_t' API
6b01eac9 701#
a2f00b9b 702AC_CHECK_HEADERS(crypt.h netdb.h pthread.h sys/param.h sys/resource.h sys/file.h xlocale.h)
94e6d793 703AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
8ab3d8a0 704AC_CHECK_DECLS([sethostname])
63271ac5
KR
705
706# crypt() may or may not be available, for instance in some countries there
707# are restrictions on cryptography.
708#
709# crypt() might be in libc (eg. OpenBSD), or it might be in a separate
710# -lcrypt library (eg. Debian GNU/Linux).
711#
712# On HP-UX 11, crypt() is in libc and there's a dummy libcrypt.a. We must
713# be careful to avoid -lcrypt in this case, since libtool will see there's
714# only a static libcrypt and decide to build only a static libguile.
715#
716# AC_SEARCH_LIBS lets us add -lcrypt to LIBS only if crypt() is not in the
717# libraries already in that list.
718#
719AC_SEARCH_LIBS(crypt, crypt,
720 [AC_DEFINE(HAVE_CRYPT,1,
721 [Define to 1 if you have the `crypt' function.])])
94e6d793 722
8cd5eae9
NJ
723# When compiling with GCC on some OSs (Solaris, AIX), _Complex_I doesn't
724# work; in the reported cases so far, 1.0fi works well instead. According
725# to the C99 spec, the complex.h header must provide a working definition
726# of _Complex_I, so we always try _Complex_I first. The 1.0fi fallback
727# is a workaround for the failure of some systems to conform to C99.
4b26c03e
NJ
728if test "$ac_cv_type_complex_double" = yes; then
729 AC_MSG_CHECKING([for i])
730 AC_TRY_COMPILE([
731#if HAVE_COMPLEX_H
732#include <complex.h>
733#endif
734complex double z;
735],[
736z = _Complex_I;
737],[AC_DEFINE(GUILE_I,_Complex_I,[The imaginary unit (positive square root of -1).])
738 AC_MSG_RESULT([_Complex_I])],[AC_TRY_COMPILE([
739#if HAVE_COMPLEX_H
740#include <complex.h>
741#endif
742complex double z;
743],[
744z = 1.0fi;
745],[AC_DEFINE(GUILE_I,1.0fi)
746 AC_MSG_RESULT([1.0fi])],[ac_cv_type_complex_double=no
747 AC_MSG_RESULT([not available])])])
748fi
749
8ab3d8a0
KR
750# glibc 2.3.6 (circa 2006) and various prior versions had a bug where
751# csqrt(-i) returned a negative real part, when it should be positive
752# for the principal root.
753#
754if test "$ac_cv_type_complex_double" = yes; then
1d8ce4c0 755
8ab3d8a0
KR
756 AC_CACHE_CHECK([whether csqrt is usable],
757 guile_cv_use_csqrt,
758 [AC_TRY_RUN([
759#include <complex.h>
760/* "volatile" is meant to prevent gcc from calculating the sqrt as a
761 constant, we want to test libc. */
762volatile complex double z = - _Complex_I;
763int
764main (void)
765{
766 z = csqrt (z);
767 if (creal (z) > 0.0)
768 return 0; /* good */
769 else
770 return 1; /* bad */
771}],
772 [guile_cv_use_csqrt=yes],
773 [guile_cv_use_csqrt="no, glibc 2.3 bug"],
774 [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
775 case $guile_cv_use_csqrt in
776 yes*)
777 AC_DEFINE(HAVE_USABLE_CSQRT, 1, [Define to 1 if csqrt is bug-free])
778 ;;
779 esac
780fi
781
782
a6be66ed
RB
783dnl GMP tests
784AC_CHECK_LIB([gmp], [__gmpz_init], ,
a98dbc87 785 [AC_MSG_ERROR([GNU MP not found, see README])])
a6be66ed 786
9f1555fe
MV
787# mpz_import is a macro so we need to include <gmp.h>
788AC_TRY_LINK([#include <gmp.h>],
789 [mpz_import (0, 0, 0, 0, 0, 0, 0);] , ,
a98dbc87 790 [AC_MSG_ERROR([At least GNU MP 4.1 is required, see README])])
9f1555fe 791
83cd507c 792dnl i18n tests
b6540274
MV
793#AC_CHECK_HEADERS([libintl.h])
794#AC_CHECK_FUNCS(gettext)
795#if test $ac_cv_func_gettext = no; then
796# AC_CHECK_LIB(intl, gettext)
797#fi
798#AC_CHECK_FUNCS([bindtextdomain textdomain])
799AM_GNU_GETTEXT([external], [need-ngettext])
83cd507c 800
777b022a
JB
801### Some systems don't declare some functions. On such systems, we
802### need to at least provide our own K&R-style declarations.
803
804### GUILE_FUNC_DECLARED(function, headerfile)
805
806### Check for a declaration of FUNCTION in HEADERFILE; if it is
807### not there, #define MISSING_FUNCTION_DECL.
d70e0619 808AC_DEFUN([GUILE_FUNC_DECLARED], [
fc342a63 809 AC_CACHE_CHECK(for $1 declaration, guile_cv_func_$1_declared,
777b022a 810 AC_EGREP_HEADER($1, $2,
01e5e07e 811 guile_cv_func_$1_declared=yes,
fc342a63
JB
812 guile_cv_func_$1_declared=no))
813 if test [x$guile_cv_func_]$1[_declared] = xno; then
eede3dbc
RB
814 AC_DEFINE([MISSING_]translit($1, [a-z], [A-Z])[_DECL], 1,
815 [Define if the operating system supplies $1 without declaring it.])
777b022a
JB
816 fi
817])
818
c31bfb85 819GUILE_FUNC_DECLARED(sleep, unistd.h)
777b022a 820GUILE_FUNC_DECLARED(usleep, unistd.h)
e1a191a8 821
0777022d
KR
822AC_CHECK_DECLS([strptime],,,
823[#define _GNU_SOURCE /* ask glibc to give strptime prototype */
824#include <time.h>])
825
da753252
JB
826### On some systems usleep has no return value. If it does have one,
827### we'd like to return it; otherwise, we'll fake it.
fc342a63 828AC_CACHE_CHECK([return type of usleep], guile_cv_func_usleep_return_type,
c43f86c1 829 [AC_EGREP_HEADER(changequote(<, >)<void[ ]+usleep>changequote([, ]),
4874dfc8 830 unistd.h,
fc342a63
JB
831 [guile_cv_func_usleep_return_type=void],
832 [guile_cv_func_usleep_return_type=int])])
833case "$guile_cv_func_usleep_return_type" in
834 "void" )
eede3dbc
RB
835 AC_DEFINE(USLEEP_RETURNS_VOID, 1,
836 [Define if the system headers declare usleep to return void.])
fc342a63
JB
837 ;;
838esac
839
da88f0cb
JB
840AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1)
841if test -n "$have_sys_un_h" ; then
eede3dbc
RB
842 AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS, 1,
843 [Define if the system supports Unix-domain (file-domain) sockets.])
da88f0cb
JB
844fi
845
d707b9df 846AC_CHECK_FUNCS(socketpair getgroups setgroups setpwent pause tzset)
da88f0cb 847
219a5a5b
JB
848AC_CHECK_FUNCS(sethostent gethostent endhostent dnl
849 setnetent getnetent endnetent dnl
850 setprotoent getprotoent endprotoent dnl
851 setservent getservent endservent dnl
5c11cc9d 852 getnetbyaddr getnetbyname dnl
2a0ef8b7
GH
853 inet_lnaof inet_makeaddr inet_netof hstrerror dnl
854 inet_pton inet_ntop)
da88f0cb 855
feef329e
KR
856# struct sockaddr field sin_len is only present on BSD systems.
857# On 4.4BSD apparently a #define SIN_LEN exists, but on other BSD systems
858# (eg. FreeBSD 4.9) it doesn't and we must use this configure check
859AC_CHECK_MEMBERS([struct sockaddr.sin_len],,,
860[#ifdef HAVE_SYS_TYPES_H
861#include <sys/types.h>
862#endif
863#include <netinet/in.h>])
864
d19c9767 865AC_MSG_CHECKING(for __libc_stack_end)
2e945bcc 866AC_CACHE_VAL(guile_cv_have_libc_stack_end,
c89363e6
MV
867[AC_TRY_LINK([#include <stdio.h>
868extern char *__libc_stack_end;],
869 [printf("%p", (char*) __libc_stack_end);],
2e945bcc
SJ
870 guile_cv_have_libc_stack_end=yes,
871 guile_cv_have_libc_stack_end=no)])
872AC_MSG_RESULT($guile_cv_have_libc_stack_end)
873
874if test $guile_cv_have_libc_stack_end = yes; then
d19c9767
MV
875 AC_DEFINE(HAVE_LIBC_STACK_END, 1,
876 [Define if you have the __libc_stack_end variable.])
877fi
878
08f980a4
GH
879dnl Some systems do not declare this. Some systems do declare it, as a
880dnl macro. With cygwin it may be in a DLL.
881
882AC_MSG_CHECKING(whether netdb.h declares h_errno)
883AC_CACHE_VAL(guile_cv_have_h_errno,
884[AC_TRY_COMPILE([#include <netdb.h>],
885[int a = h_errno;],
886guile_cv_have_h_errno=yes, guile_cv_have_h_errno=no)])
887AC_MSG_RESULT($guile_cv_have_h_errno)
888if test $guile_cv_have_h_errno = yes; then
eede3dbc 889 AC_DEFINE(HAVE_H_ERRNO, 1, [Define if h_errno is declared in netdb.h.])
08f980a4 890fi
da88f0cb 891
4f522b6f 892AC_MSG_CHECKING(whether uint32_t is defined)
c5316ea3 893AC_CACHE_VAL(guile_cv_have_uint32_t,
4f522b6f 894 [AC_TRY_COMPILE([#include <sys/types.h>
af68e5e5
SJ
895 #if HAVE_STDINT_H
896 #include <stdint.h>
897 #endif
45c0ff10 898 #ifndef HAVE_NETDB_H
af68e5e5
SJ
899 #include <netdb.h>
900 #endif],
4f522b6f
GH
901 [uint32_t a;],
902 guile_cv_have_uint32_t=yes, guile_cv_have_uint32_t=no)])
c5316ea3
GH
903AC_MSG_RESULT($guile_cv_have_uint32_t)
904if test $guile_cv_have_uint32_t = yes; then
eede3dbc
RB
905 AC_DEFINE(HAVE_UINT32_T, 1,
906 [Define if uint32_t typedef is defined when netdb.h is include.])
c5316ea3
GH
907fi
908
018a53a1
GH
909AC_MSG_CHECKING(for working IPv6 support)
910AC_CACHE_VAL(guile_cv_have_ipv6,
8f16fe5a
MV
911[AC_TRY_COMPILE([
912#ifdef HAVE_SYS_TYPES_H
913#include <sys/types.h>
914#endif
915#include <netinet/in.h>
b6f04d92 916#include <sys/socket.h>],
018a53a1
GH
917[struct sockaddr_in6 a; a.sin6_family = AF_INET6;],
918guile_cv_have_ipv6=yes, guile_cv_have_ipv6=no)])
919AC_MSG_RESULT($guile_cv_have_ipv6)
920if test $guile_cv_have_ipv6 = yes; then
eede3dbc 921 AC_DEFINE(HAVE_IPV6, 1, [Define if you want support for IPv6.])
018a53a1
GH
922fi
923
67641981
GH
924# included in rfc2553 but not in older implementations, e.g., glibc 2.1.3.
925AC_MSG_CHECKING(whether sockaddr_in6 has sin6_scope_id)
926AC_CACHE_VAL(guile_cv_have_sin6_scope_id,
8f16fe5a
MV
927[AC_TRY_COMPILE([
928#ifdef HAVE_SYS_TYPES_H
929#include <sys/types.h>
930#endif
931#include <netinet/in.h>],
67641981
GH
932[struct sockaddr_in6 sok; sok.sin6_scope_id = 0;],
933guile_cv_have_sin6_scope_id=yes, guile_cv_have_sin6_scope_id=no)])
934AC_MSG_RESULT($guile_cv_have_sin6_scope_id)
935if test $guile_cv_have_sin6_scope_id = yes; then
eede3dbc
RB
936 AC_DEFINE(HAVE_SIN6_SCOPE_ID, 1,
937 [Define this if your IPv6 has sin6_scope_id in sockaddr_in6 struct.])
67641981
GH
938fi
939
feef329e
KR
940# struct sockaddr_in6 field sin_len is only present on BSD systems
941AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_len],,,
942[#ifdef HAVE_SYS_TYPES_H
943#include <sys/types.h>
944#endif
945#include <netinet/in.h>])
946
38c1d3c4
GH
947AC_MSG_CHECKING(whether localtime caches TZ)
948AC_CACHE_VAL(guile_cv_localtime_cache,
949[if test x$ac_cv_func_tzset = xyes; then
950AC_TRY_RUN([#include <time.h>
951#if STDC_HEADERS
952# include <stdlib.h>
953#endif
954extern char **environ;
955unset_TZ ()
956{
957 char **from, **to;
958 for (to = from = environ; (*to = *from); from++)
959 if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
960 to++;
961}
962char TZ_GMT0[] = "TZ=GMT0";
963char TZ_PST8[] = "TZ=PST8";
964main()
965{
966 time_t now = time ((time_t *) 0);
967 int hour_GMT0, hour_unset;
968 if (putenv (TZ_GMT0) != 0)
969 exit (1);
970 hour_GMT0 = localtime (&now)->tm_hour;
971 unset_TZ ();
972 hour_unset = localtime (&now)->tm_hour;
973 if (putenv (TZ_PST8) != 0)
974 exit (1);
975 if (localtime (&now)->tm_hour == hour_GMT0)
976 exit (1);
977 unset_TZ ();
978 if (localtime (&now)->tm_hour != hour_unset)
979 exit (1);
980 exit (0);
981}], guile_cv_localtime_cache=no, guile_cv_localtime_cache=yes,
982[# If we have tzset, assume the worst when cross-compiling.
983guile_cv_localtime_cache=yes])
984else
985 # If we lack tzset, report that localtime does not cache TZ,
986 # since we can't invalidate the cache if we don't have tzset.
987 guile_cv_localtime_cache=no
988fi])dnl
989AC_MSG_RESULT($guile_cv_localtime_cache)
990if test $guile_cv_localtime_cache = yes; then
eede3dbc 991 AC_DEFINE(LOCALTIME_CACHE, 1, [Define if localtime caches the TZ setting.])
38c1d3c4
GH
992fi
993
7ee92fce
GH
994dnl Test whether system calls are restartable by default on the
995dnl current system. If they are not, we put a loop around every system
996dnl call to check for EINTR (see SCM_SYSCALL) and do not attempt to
997dnl change from the default behaviour. On the other hand, if signals
998dnl are restartable then the loop is not installed and when libguile
999dnl initialises it also resets the behaviour of each signal to cause a
1000dnl restart (in case a different runtime had a different default
1001dnl behaviour for some reason: e.g., different versions of linux seem
1002dnl to behave differently.)
1003
08b8c694 1004AC_SYS_RESTARTABLE_SYSCALLS
e1a191a8 1005
52cfc69b
GH
1006if test "$enable_regex" = yes; then
1007 if test "$ac_cv_header_regex_h" = yes ||
1008 test "$ac_cv_header_rxposix_h" = yes ||
1009 test "$ac_cv_header_rx_rxposix_h" = yes; then
eede3dbc 1010 GUILE_NAMED_CHECK_FUNC(regcomp, norx, [AC_LIBOBJ([regex-posix])],
52cfc69b 1011 [AC_CHECK_LIB(rx, main)
eede3dbc 1012 GUILE_NAMED_CHECK_FUNC(regcomp, rx, [AC_LIBOBJ([regex-posix])],
f9e5e096 1013 [AC_CHECK_LIB(regex, main)
eede3dbc 1014 GUILE_NAMED_CHECK_FUNC(regcomp, regex, [AC_LIBOBJ([regex-posix])])])]
52cfc69b
GH
1015 )
1016 dnl The following should not be necessary, but for some reason
1017 dnl autoheader misses it if we don't include it!
1018 if test "$ac_cv_func_regcomp_norx" = yes ||
f9e5e096 1019 test "$ac_cv_func_regcomp_regex" = yes ||
52cfc69b 1020 test "$ac_cv_func_regcomp_rx" = yes; then
eede3dbc
RB
1021 AC_DEFINE(HAVE_REGCOMP, 1,
1022 [This is included as part of a workaround for a autoheader bug.])
52cfc69b
GH
1023 fi
1024 fi
da88f0cb 1025fi
8e1bfcd0 1026
5bbfbd1e 1027AC_REPLACE_FUNCS(inet_aton putenv strerror memmove mkstemp)
3a629497 1028
594e69b7
MV
1029AC_CHECK_HEADERS(floatingpoint.h ieeefp.h nan.h)
1030
21b860c8
KR
1031# Reasons for testing:
1032# asinh, acosh, atanh, trunc - C99 standard, generally not available on
1033# older systems
1034# sincos - GLIBC extension
9af31eed 1035#
8ab3d8a0 1036AC_CHECK_FUNCS(asinh acosh atanh copysign finite sincos trunc)
4d0bfea1
KR
1037
1038# C99 specifies isinf and isnan as macros.
1039# HP-UX provides only macros, no functions.
c80bab35
KR
1040# glibc 2.3.2 provides both macros and functions.
1041# IRIX 6.5 and Solaris 8 only provide functions.
4d0bfea1 1042#
c80bab35
KR
1043# The following tests detect isinf and isnan either as functions or as
1044# macros from <math.h>. Plain AC_CHECK_FUNCS is insufficient, it doesn't
1045# use <math.h> so doesn't detect on macro-only systems like HP-UX.
4d0bfea1
KR
1046#
1047AC_MSG_CHECKING([for isinf])
b3aa4626
KR
1048AC_LINK_IFELSE(AC_LANG_SOURCE(
1049[[#include <math.h>
1050volatile double x = 0.0;
1051int main () { return (isinf(x) != 0); }]]),
4d0bfea1
KR
1052 [AC_MSG_RESULT([yes])
1053 AC_DEFINE(HAVE_ISINF, 1,
1054 [Define to 1 if you have the `isinf' macro or function.])],
1055 [AC_MSG_RESULT([no])])
1056AC_MSG_CHECKING([for isnan])
b3aa4626
KR
1057AC_LINK_IFELSE(AC_LANG_SOURCE(
1058[[#include <math.h>
1059volatile double x = 0.0;
1060int main () { return (isnan(x) != 0); }]]),
4d0bfea1
KR
1061 [AC_MSG_RESULT([yes])
1062 AC_DEFINE(HAVE_ISNAN, 1,
1063 [Define to 1 if you have the `isnan' macro or function.])],
1064 [AC_MSG_RESULT([no])])
594e69b7 1065
23f2b9a3
KR
1066# Reasons for checking:
1067#
1068# st_rdev
1069# st_blksize
1070# st_blocks not in mingw
8ab3d8a0 1071# tm_gmtoff BSD+GNU, not in C99
23f2b9a3
KR
1072#
1073# Note AC_STRUCT_ST_BLOCKS is not used here because we don't want the
1074# AC_LIBOBJ(fileblocks) replacement which that macro gives.
1075#
1076AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize, struct stat.st_blocks])
fd02f2ad 1077
3a629497 1078AC_STRUCT_TIMEZONE
8ab3d8a0
KR
1079AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,
1080[#include <time.h>
1081#ifdef TIME_WITH_SYS_TIME
1082# include <sys/time.h>
1083# include <time.h>
1084#else
1085# if HAVE_SYS_TIME_H
1086# include <sys/time.h>
1087# else
1088# include <time.h>
1089# endif
1090#endif
1091])
3a629497
JB
1092GUILE_STRUCT_UTIMBUF
1093
8ab3d8a0 1094
3a629497
JB
1095#--------------------------------------------------------------------
1096#
1097# Which way does the stack grow?
1098#
1099#--------------------------------------------------------------------
1100
9a52bc2a 1101SCM_I_GSC_STACK_GROWS_UP=0
3a629497
JB
1102AC_TRY_RUN(aux (l) unsigned long l;
1103 { int x; exit (l >= ((unsigned long)&x)); }
01e5e07e 1104 main () { int q; aux((unsigned long)&q); },
d4628c57 1105 [SCM_I_GSC_STACK_GROWS_UP=1],
eede3dbc 1106 [],
9a52bc2a 1107 [AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h)])
eede3dbc 1108
a9e0a8af
KR
1109AC_CHECK_SIZEOF(float)
1110if test "$ac_cv_sizeof_float" -le "$ac_cv_sizeof_long"; then
1111 AC_DEFINE(SCM_SINGLES, 1,
1112 [Define this if floats are the same size as longs.])
1113fi
3a629497
JB
1114
1115AC_MSG_CHECKING(for struct linger)
1116AC_CACHE_VAL(scm_cv_struct_linger,
1117 AC_TRY_COMPILE([
1118#include <sys/types.h>
1119#include <sys/socket.h>],
1120 [struct linger lgr; lgr.l_linger = 100],
1121 scm_cv_struct_linger="yes",
1122 scm_cv_struct_linger="no"))
1123AC_MSG_RESULT($scm_cv_struct_linger)
1124if test $scm_cv_struct_linger = yes; then
eede3dbc
RB
1125 AC_DEFINE(HAVE_STRUCT_LINGER, 1,
1126 [Define this if your system defines struct linger, for use with the
1127 getsockopt and setsockopt system calls.])
3a629497 1128fi
3a629497 1129
7534dfdc 1130
45c0ff10
KR
1131# On mingw, struct timespec is in <pthread.h>.
1132#
7534dfdc
MD
1133AC_MSG_CHECKING(for struct timespec)
1134AC_CACHE_VAL(scm_cv_struct_timespec,
1135 AC_TRY_COMPILE([
45c0ff10
KR
1136#include <time.h>
1137#if HAVE_PTHREAD_H
1138#include <pthread.h>
1139#endif],
7534dfdc
MD
1140 [struct timespec t; t.tv_nsec = 100],
1141 scm_cv_struct_timespec="yes",
1142 scm_cv_struct_timespec="no"))
1143AC_MSG_RESULT($scm_cv_struct_timespec)
1144if test $scm_cv_struct_timespec = yes; then
eede3dbc 1145 AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
45c0ff10 1146 [Define this if your system defines struct timespec via either <time.h> or <pthread.h>.])
7534dfdc
MD
1147fi
1148
3a629497
JB
1149#--------------------------------------------------------------------
1150#
1151# Flags for thread support
1152#
1153#--------------------------------------------------------------------
1154
9a52bc2a
RB
1155SCM_I_GSC_USE_PTHREAD_THREADS=0
1156SCM_I_GSC_USE_NULL_THREADS=0
9a52bc2a
RB
1157AC_SUBST([SCM_I_GSC_USE_PTHREAD_THREADS])
1158AC_SUBST([SCM_I_GSC_USE_NULL_THREADS])
9a52bc2a 1159
539c89a1
JB
1160### What thread package has the user asked for?
1161AC_ARG_WITH(threads, [ --with-threads thread interface],
18622c4e 1162 , with_threads=yes)
539c89a1 1163
8ab3d8a0 1164AC_SUBST(SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT, 0)
66302618 1165AC_SUBST(SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER, 0)
8ab3d8a0 1166
539c89a1 1167case "$with_threads" in
9bc4701c 1168 "yes" | "pthread" | "pthreads" | "pthread-threads" | "")
56ae2148
LC
1169
1170 build_pthread_support="yes"
1171
75bfae86 1172 ACX_PTHREAD(CC="$PTHREAD_CC"
75bfae86 1173 LIBS="$PTHREAD_LIBS $LIBS"
9a52bc2a 1174 SCM_I_GSC_USE_PTHREAD_THREADS=1
9bc4701c 1175 with_threads="pthreads",
18622c4e 1176 with_threads="null")
49aaa6d2
MV
1177
1178 old_CFLAGS="$CFLAGS"
1179 CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
8ab3d8a0
KR
1180
1181 # Reasons for testing:
1182 # pthread_getattr_np - "np" meaning "non portable" says it
1183 # all; not present on MacOS X or Solaris 10
45c0ff10
KR
1184 # pthread_get_stackaddr_np - "np" meaning "non portable" says it
1185 # all; specific to MacOS X
1186 # pthread_sigmask - not available on mingw
8ab3d8a0 1187 #
45c0ff10 1188 AC_CHECK_FUNCS(pthread_attr_getstack pthread_getattr_np pthread_get_stackaddr_np pthread_sigmask)
8ab3d8a0
KR
1189
1190 # On past versions of Solaris, believe 8 through 10 at least, you
1191 # had to write "pthread_once_t foo = { PTHREAD_ONCE_INIT };".
66302618 1192 # This is contrary to POSIX:
8ab3d8a0
KR
1193 # http://www.opengroup.org/onlinepubs/000095399/functions/pthread_once.html
1194 # Check here if this style is required.
1195 #
1196 # glibc (2.3.6 at least) works both with or without braces, so the
1197 # test checks whether it works without.
1198 #
66302618
LC
1199
1200 if test "$GCC" = "yes"; then
1201 # Since GCC only issues a warning for missing braces, so we need
1202 # `-Werror' to catch it.
1203 CFLAGS="-Werror -Wmissing-braces $CFLAGS"
1204 fi
1205
8ab3d8a0
KR
1206 AC_CACHE_CHECK([whether PTHREAD_ONCE_INIT needs braces],
1207 guile_cv_need_braces_on_pthread_once_init,
66302618
LC
1208 [AC_COMPILE_IFELSE([#include <pthread.h>
1209 pthread_once_t foo = PTHREAD_ONCE_INIT;],
8ab3d8a0
KR
1210 [guile_cv_need_braces_on_pthread_once_init=no],
1211 [guile_cv_need_braces_on_pthread_once_init=yes])])
1212 if test "$guile_cv_need_braces_on_pthread_once_init" = yes; then
1213 SCM_I_GSC_NEED_BRACES_ON_PTHREAD_ONCE_INIT=1
1214 fi
1215
66302618
LC
1216 # Same problem with `PTHREAD_MUTEX_INITIALIZER', e.g., on IRIX
1217 # 6.5.30m with GCC 3.3.
1218 AC_CACHE_CHECK([whether PTHREAD_MUTEX_INITIALIZER needs braces],
1219 guile_cv_need_braces_on_pthread_mutex_initializer,
1220 [AC_COMPILE_IFELSE([#include <pthread.h>
1221 pthread_mutex_t foo = PTHREAD_MUTEX_INITIALIZER;],
1222 [guile_cv_need_braces_on_pthread_mutex_initializer=no],
1223 [guile_cv_need_braces_on_pthread_mutex_initializer=yes])])
1224 if test "$guile_cv_need_braces_on_pthread_mutex_initializer" = yes; then
1225 SCM_I_GSC_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER=1
1226 fi
1227
49aaa6d2
MV
1228 CFLAGS="$old_CFLAGS"
1229
d707b9df
MV
1230 # On Solaris, sched_yield lives in -lrt.
1231 AC_SEARCH_LIBS(sched_yield, rt)
1232
539c89a1 1233 ;;
539c89a1 1234esac
3a629497 1235
18622c4e 1236case "$with_threads" in
9bc4701c 1237 "pthreads")
585356dc 1238 ;;
18622c4e 1239 "no" | "null")
9a52bc2a 1240 SCM_I_GSC_USE_NULL_THREADS=1
18622c4e 1241 with_threads="null-threads"
18306183 1242 ;;
585356dc 1243 * )
18622c4e 1244 AC_MSG_ERROR(invalid value for --with-threads: $with_threads)
585356dc
MV
1245 ;;
1246esac
539c89a1 1247
18622c4e
MV
1248AC_MSG_CHECKING(what kind of threads to support)
1249AC_MSG_RESULT($with_threads)
933a7411 1250
56ae2148
LC
1251AM_CONDITIONAL([BUILD_PTHREAD_SUPPORT],
1252 [test "x$build_pthread_support" = "xyes"])
1253
1254
4f416616
KR
1255## Check whether pthread_attr_getstack works for the main thread
1256
23f2b9a3
KR
1257if test "$with_threads" = pthreads; then
1258
4f416616
KR
1259AC_MSG_CHECKING(whether pthread_attr_getstack works for the main thread)
1260old_CFLAGS="$CFLAGS"
1261CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
1262AC_TRY_RUN(
1263[
1264#if HAVE_PTHREAD_ATTR_GETSTACK
1265#include <pthread.h>
1266
1267int main ()
1268{
1269 pthread_attr_t attr;
1270 void *start, *end;
1271 size_t size;
1272
1273 pthread_getattr_np (pthread_self (), &attr);
1274 pthread_attr_getstack (&attr, &start, &size);
1275 end = (char *)start + size;
1276
1277 if ((void *)&attr < start || (void *)&attr >= end)
1278 return 1;
1279 else
1280 return 0;
1281}
1282#else
1283int main ()
1284{
1285 return 1;
1286}
1287#endif
1288],
1289[works=yes
1290AC_DEFINE(PTHREAD_ATTR_GETSTACK_WORKS, [1], [Define when pthread_att_get_stack works for the main thread])],
1291[works=no])
1292CFLAGS="$old_CFLAGS"
1293AC_MSG_RESULT($works)
1294
23f2b9a3
KR
1295fi # with_threads=pthreads
1296
1297
0db83c04
MV
1298## Cross building
1299if test "$cross_compiling" = "yes"; then
1300 AC_MSG_CHECKING(cc for build)
1301 ## /usr/bin/cc still uses wrong assembler
1302 ## CC_FOR_BUILD="${CC_FOR_BUILD-/usr/bincc}"
1303 CC_FOR_BUILD="${CC_FOR_BUILD-PATH=/usr/bin:$PATH cc}"
1304else
1305 CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
1306fi
0db83c04
MV
1307
1308## AC_MSG_CHECKING("if we are cross compiling")
1309## AC_MSG_RESULT($cross_compiling)
1310if test "$cross_compiling" = "yes"; then
1311 AC_MSG_RESULT($CC_FOR_BUILD)
1312fi
1313
1314## No need as yet to be more elaborate
1315CCLD_FOR_BUILD="$CC_FOR_BUILD"
1316
1317AC_SUBST(cross_compiling)
457a4e81 1318AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
0db83c04
MV
1319AC_SUBST(CCLD_FOR_BUILD)
1320
1321## libtool erroneously calls CC_FOR_BUILD HOST_CC;
1322## --HOST is the platform that PACKAGE is compiled for.
1323HOST_CC="$CC_FOR_BUILD"
1324AC_SUBST(HOST_CC)
1325
1326if test "$cross_compiling" = "yes"; then
1327 AC_MSG_CHECKING(guile for build)
1328 GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
1329else
1911e3da 1330 GUILE_FOR_BUILD='$(preinstguile)'
0db83c04 1331fi
0db83c04
MV
1332
1333## AC_MSG_CHECKING("if we are cross compiling")
1334## AC_MSG_RESULT($cross_compiling)
1335if test "$cross_compiling" = "yes"; then
1336 AC_MSG_RESULT($GUILE_FOR_BUILD)
1337fi
89f69c52 1338AC_ARG_VAR(GUILE_FOR_BUILD,[guile for build system])
0db83c04
MV
1339AC_SUBST(GUILE_FOR_BUILD)
1340
3a629497
JB
1341## If we're using GCC, ask for aggressive warnings.
1342case "$GCC" in
99be3450 1343 yes )
0a1b8b15
JB
1344 ## We had -Wstrict-prototypes in here for a bit, but Guile does too
1345 ## much stuff with generic function pointers for that to really be
1346 ## less than exasperating.
aee8ca3f
GH
1347 ## -Wpointer-arith was here too, but something changed in gcc/glibc
1348 ## and it became equally exasperating (gcc 2.95 and/or glibc 2.1.2).
5c07af6e
MV
1349 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes"
1350 # Do this here so we don't screw up any of the tests above that might
1351 # not be "warning free"
1352 if test "${GUILE_ERROR_ON_WARNING}" = yes
1353 then
1354 CFLAGS="${CFLAGS} -Werror"
1355 enable_compile_warnings=no
1356 fi
1357 ;;
3a629497
JB
1358esac
1359
3a629497
JB
1360## If we're creating a shared library (using libtool!), then we'll
1361## need to generate a list of .lo files corresponding to the .o files
1362## given in LIBOBJS. We'll call it LIBLOBJS.
eede3dbc 1363LIBLOBJS="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'`"
3a629497 1364
e9e225e5 1365## We also need to create corresponding .doc and .x files
eede3dbc
RB
1366EXTRA_DOT_DOC_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.doc ,g;s,\.[[^.]]*$,.doc,'`"
1367EXTRA_DOT_X_FILES="`echo ${LIB@&t@OBJS} | sed 's,\.[[^.]]* ,.x ,g;s,\.[[^.]]*$,.x,'`"
91411868 1368
7c86ae05
JB
1369AC_SUBST(GUILE_MAJOR_VERSION)
1370AC_SUBST(GUILE_MINOR_VERSION)
df4a8db0 1371AC_SUBST(GUILE_MICRO_VERSION)
9e6e154e 1372AC_SUBST(GUILE_EFFECTIVE_VERSION)
7c86ae05 1373AC_SUBST(GUILE_VERSION)
9e202853 1374
22b7f585
RB
1375#######################################################################
1376# library versioning
1377
9e202853
RB
1378AC_SUBST(LIBGUILE_INTERFACE_CURRENT)
1379AC_SUBST(LIBGUILE_INTERFACE_REVISION)
1380AC_SUBST(LIBGUILE_INTERFACE_AGE)
1381AC_SUBST(LIBGUILE_INTERFACE)
539c89a1 1382
b8b9ec68 1383AC_SUBST(LIBGUILE_SRFI_SRFI_1_MAJOR)
cfc7c7c0
MD
1384AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_CURRENT)
1385AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_REVISION)
1386AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE_AGE)
1387AC_SUBST(LIBGUILE_SRFI_SRFI_1_INTERFACE)
1388
b8b9ec68 1389AC_SUBST(LIBGUILE_SRFI_SRFI_4_MAJOR)
22b7f585
RB
1390AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_CURRENT)
1391AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_REVISION)
1392AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE_AGE)
1393AC_SUBST(LIBGUILE_SRFI_SRFI_4_INTERFACE)
1394
b8b9ec68 1395AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_MAJOR)
22b7f585
RB
1396AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_CURRENT)
1397AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_REVISION)
1398AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE_AGE)
1399AC_SUBST(LIBGUILE_SRFI_SRFI_13_14_INTERFACE)
1400
6bba4fad
KR
1401AC_SUBST(LIBGUILE_SRFI_SRFI_60_MAJOR)
1402AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_CURRENT)
1403AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_REVISION)
1404AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE_AGE)
1405AC_SUBST(LIBGUILE_SRFI_SRFI_60_INTERFACE)
1406
b89c4943
LC
1407AC_SUBST(LIBGUILE_I18N_MAJOR)
1408AC_SUBST(LIBGUILE_I18N_INTERFACE_CURRENT)
1409AC_SUBST(LIBGUILE_I18N_INTERFACE_REVISION)
1410AC_SUBST(LIBGUILE_I18N_INTERFACE_AGE)
1411AC_SUBST(LIBGUILE_I18N_INTERFACE)
1412
1413
22b7f585
RB
1414#######################################################################
1415
d8b1bb93 1416dnl Tell guile-config what flags guile users should compile and link with.
a8d7ba11 1417GUILE_LIBS="$LDFLAGS $LIBS"
25a640ca 1418GUILE_CFLAGS="$CPPFLAGS $PTHREAD_CFLAGS"
daa4f38c 1419AC_SUBST(GUILE_LIBS)
d8b1bb93 1420AC_SUBST(GUILE_CFLAGS)
7c86ae05 1421
3a629497
JB
1422AC_SUBST(AWK)
1423AC_SUBST(LIBLOBJS)
91411868 1424AC_SUBST(EXTRA_DOT_DOC_FILES)
e9e225e5 1425AC_SUBST(EXTRA_DOT_X_FILES)
3a629497 1426
6812c28f
TTN
1427dnl See also top_builddir in info node: (libtool)AC_PROG_LIBTOOL
1428top_builddir_absolute=`pwd`
1429AC_SUBST(top_builddir_absolute)
9e6e154e 1430top_srcdir_absolute=`(cd $srcdir && pwd)`
2f13db9a 1431AC_SUBST(top_srcdir_absolute)
6812c28f 1432
9a52bc2a
RB
1433# Additional SCM_I_GSC definitions are above.
1434AC_SUBST([SCM_I_GSC_GUILE_DEBUG])
1435AC_SUBST([SCM_I_GSC_GUILE_DEBUG_FREELIST])
f5922e27 1436AC_SUBST([SCM_I_GSC_ENABLE_DISCOURAGED])
9a52bc2a
RB
1437AC_SUBST([SCM_I_GSC_ENABLE_DEPRECATED])
1438AC_SUBST([SCM_I_GSC_ENABLE_ELISP])
9a52bc2a
RB
1439AC_SUBST([SCM_I_GSC_STACK_GROWS_UP])
1440AC_SUBST([SCM_I_GSC_C_INLINE])
1441AC_CONFIG_FILES([libguile/gen-scmconfig.h])
1442
237b3247
RB
1443AC_CONFIG_FILES([
1444 Makefile
6812c28f 1445 am/Makefile
6caac03c 1446 lib/Makefile
9e6e154e
RB
1447 benchmark-suite/Makefile
1448 doc/Makefile
1449 doc/goops/Makefile
1450 doc/r5rs/Makefile
1451 doc/ref/Makefile
1452 doc/tutorial/Makefile
1e2346ae 1453 emacs/Makefile
9e6e154e
RB
1454 examples/Makefile
1455 examples/box-dynamic-module/Makefile
1456 examples/box-dynamic/Makefile
1457 examples/box-module/Makefile
1458 examples/box/Makefile
1459 examples/modules/Makefile
1460 examples/safe/Makefile
1461 examples/scripts/Makefile
1462 guile-config/Makefile
237b3247 1463 ice-9/Makefile
8ee7506b 1464 ice-9/debugger/Makefile
8746959c 1465 ice-9/debugging/Makefile
3d1a89b9
NJ
1466 lang/Makefile
1467 lang/elisp/Makefile
1468 lang/elisp/internals/Makefile
1469 lang/elisp/primitives/Makefile
9e6e154e 1470 libguile/Makefile
237b3247
RB
1471 oop/Makefile
1472 oop/goops/Makefile
1473 scripts/Makefile
1474 srfi/Makefile
849f29a4
RB
1475 test-suite/Makefile
1476 test-suite/standalone/Makefile
1477])
9e6e154e
RB
1478
1479AC_CONFIG_FILES([check-guile], [chmod +x check-guile])
1480AC_CONFIG_FILES([benchmark-guile], [chmod +x benchmark-guile])
1481AC_CONFIG_FILES([guile-tools], [chmod +x guile-tools])
1482AC_CONFIG_FILES([pre-inst-guile], [chmod +x pre-inst-guile])
849f29a4 1483AC_CONFIG_FILES([pre-inst-guile-env], [chmod +x pre-inst-guile-env])
9e6e154e
RB
1484AC_CONFIG_FILES([libguile/guile-snarf],
1485 [chmod +x libguile/guile-snarf])
1486AC_CONFIG_FILES([libguile/guile-doc-snarf],
1487 [chmod +x libguile/guile-doc-snarf])
1488AC_CONFIG_FILES([libguile/guile-func-name-check],
1489 [chmod +x libguile/guile-func-name-check])
1490AC_CONFIG_FILES([libguile/guile-snarf-docs],
1491 [chmod +x libguile/guile-snarf-docs])
237b3247
RB
1492
1493AC_OUTPUT
0f2d19dd 1494
3a629497
JB
1495dnl Local Variables:
1496dnl comment-start: "dnl "
1497dnl comment-end: ""
1498dnl comment-start-skip: "\\bdnl\\b\\s *"
d67c13f6 1499dnl End: