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