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