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