~ubuntu-branches/ubuntu/maverick/uim/maverick

« back to all changes in this revision

Viewing changes to sigscheme/configure.in

  • Committer: Bazaar Package Importer
  • Author(s): Masahito Omote
  • Date: 2008-06-25 19:56:33 UTC
  • mfrom: (3.1.18 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080625195633-8jljph4rfq00l8o7
Tags: 1:1.5.1-2
* uim-tcode: provide tutcode-custom.scm, tutcode-bushudic.scm
  and tutcode-rule.scm (Closes: #482659)
* Fix FTBFS: segv during compile (Closes: #483078).
  I personally think this bug is not specific for uim but is a optimization
  problem on gcc-4.3.1. (https://bugs.freedesktop.org/show_bug.cgi?id=16477)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
AC_PREREQ(2.60b)
 
2
AC_INIT([SigScheme], [0.8.3], [sigscheme-ja@googlegroups.com], [sigscheme])
 
3
AC_CONFIG_SRCDIR([src/sigscheme.c])
 
4
AC_CONFIG_HEADERS([src/config.h])
 
5
AM_INIT_AUTOMAKE([1.10 dist-bzip2])
 
6
 
 
7
# Enable this iff asprintf(3) or another GNU extension is needed. This macro
 
8
# must be invoked immediately after initialization.
 
9
#AC_GNU_SOURCE
 
10
 
 
11
# --enable-maintainer-mode is requied to build svn repository version of
 
12
# SigScheme.
 
13
AM_MAINTAINER_MODE
 
14
 
 
15
#
 
16
# Checks for programs
 
17
#
 
18
 
 
19
AC_PROG_CC
 
20
AC_PROG_LIBTOOL
 
21
AC_PROG_LN_S
 
22
AC_PROG_EGREP
 
23
# Prefers GNU sed if found. GNU sed is required for generating
 
24
# test-c/collect.sh from svn repository version of SigScheme.
 
25
AC_PROG_SED
 
26
 
 
27
# These programs are only needed on make dist
 
28
AC_PATH_PROGS(RUBY, ruby18 ruby)
 
29
AC_PATH_PROGS(PERL, perl5 perl)
 
30
AC_PATH_PROG(ASCIIDOC, asciidoc)
 
31
AC_PATH_PROG(SH, sh)
 
32
AC_PATH_PROGS(MD5, md5 md5sum)
 
33
AC_PATH_PROGS(SHA1, sha1 sha1sum)
 
34
 
 
35
#
 
36
# Checks for libraries
 
37
#
 
38
 
 
39
AX_LIB_GLIBC
 
40
 
 
41
#
 
42
# Checks for header files
 
43
#
 
44
 
 
45
AC_HEADER_STDC
 
46
AC_CHECK_HEADERS([stdint.h inttypes.h sys/inttypes.h sys/types.h \
 
47
                  limits.h malloc.h stddef.h stdlib.h string.h \
 
48
                  strings.h unistd.h assert.h])
 
49
 
 
50
#
 
51
# Checks for typedefs, structures, and compiler characteristics
 
52
#
 
53
 
 
54
# FIXME: depending on the internal variable name
 
55
AC_DEFUN([AX_LANG_WNOERROR], [ac_[]_AC_LANG_ABBREV[]_werror_flag=])
 
56
 
 
57
AC_C_CONST
 
58
AC_C_VOLATILE
 
59
AC_C_STRINGIZE
 
60
 
 
61
AC_C_RESTRICT
 
62
AC_C_INLINE
 
63
 
 
64
AC_C_CHAR_UNSIGNED
 
65
AX_C_ARITHMETIC_RSHIFT
 
66
AX_C___ATTRIBUTE__
 
67
#AX_C___ALIGNOF__
 
68
#AX_C_DATA_ALIGNED
 
69
#if test "x$ax_cv_c_data_aligned" = xno; then
 
70
#  AC_MSG_ERROR([C data types are not aligned as we expected.])
 
71
#fi
 
72
AX_C_REFERENCEABLE_PASSED_VA_LIST
 
73
if test "x$ax_cv_c_referenceable_passed_va_list" = xno; then
 
74
  # Temporary workaround: Assumes that va_list passed via an arg equals to
 
75
  # &va_list[0].
 
76
  AC_DEFINE(HAVE_AUTOREFERRED_PASSED_VA_LIST, 1,
 
77
            [Define to 1 if va_list is an array type.])
 
78
fi
 
79
 
 
80
AC_C_BIGENDIAN
 
81
if test "x$ac_cv_c_bigendian" = xyes; then
 
82
  ax_c_endian=big
 
83
elif test "x$ac_cv_c_bigendian" = xno; then
 
84
  ax_c_endian=little
 
85
else
 
86
  ax_c_endian=$ac_cv_c_bigendian
 
87
fi
 
88
 
 
89
# a submacro of ax_create_stdint_h.m4
 
90
AX_CHECK_DATA_MODEL
 
91
 
 
92
AC_TYPE_LONG_LONG_INT
 
93
AC_TYPE_UNSIGNED_LONG_LONG_INT
 
94
AC_TYPE_LONG_DOUBLE
 
95
AC_TYPE_LONG_DOUBLE_WIDER
 
96
 
 
97
# stdint types
 
98
AC_TYPE_INT8_T
 
99
AC_TYPE_INT16_T
 
100
AC_TYPE_INT32_T
 
101
AC_TYPE_INT64_T
 
102
AC_TYPE_INTMAX_T
 
103
AC_TYPE_INTPTR_T
 
104
AC_TYPE_UINT8_T
 
105
AC_TYPE_UINT16_T
 
106
AC_TYPE_UINT32_T
 
107
AC_TYPE_UINT64_T
 
108
AC_TYPE_UINTMAX_T
 
109
AC_TYPE_UINTPTR_T
 
110
 
 
111
AC_CHECK_SIZEOF(char)
 
112
AC_CHECK_SIZEOF(short)
 
113
AC_CHECK_SIZEOF(int)
 
114
AC_CHECK_SIZEOF(long)
 
115
AC_CHECK_SIZEOF(long long)
 
116
AC_CHECK_SIZEOF(float)
 
117
AC_CHECK_SIZEOF(double)
 
118
AC_CHECK_SIZEOF(long double)
 
119
AC_CHECK_SIZEOF(void *)
 
120
AC_CHECK_SIZEOF(size_t)
 
121
 
 
122
# Do not assume (sizeof(int32_t) == 4) and so on (i.e. do not (CHAR_BIT == 8)).
 
123
AC_CHECK_SIZEOF(int8_t)
 
124
AC_CHECK_SIZEOF(int16_t)
 
125
AC_CHECK_SIZEOF(int32_t)
 
126
AC_CHECK_SIZEOF(int64_t)
 
127
AC_CHECK_SIZEOF(intmax_t)
 
128
AC_CHECK_SIZEOF(intptr_t)
 
129
#AC_CHECK_SIZEOF(int_least8_t)
 
130
#AC_CHECK_SIZEOF(int_least16_t)
 
131
#AC_CHECK_SIZEOF(int_least32_t)
 
132
#AC_CHECK_SIZEOF(int_least64_t)
 
133
#AC_CHECK_SIZEOF(int_fast8_t)
 
134
#AC_CHECK_SIZEOF(int_fast16_t)
 
135
#AC_CHECK_SIZEOF(int_fast32_t)
 
136
#AC_CHECK_SIZEOF(int_fast64_t)
 
137
 
 
138
AC_CHECK_ALIGNOF(char)
 
139
AC_CHECK_ALIGNOF(short)
 
140
AC_CHECK_ALIGNOF(int)
 
141
AC_CHECK_ALIGNOF(long)
 
142
AC_CHECK_ALIGNOF(long long)
 
143
AC_CHECK_ALIGNOF(float)
 
144
AC_CHECK_ALIGNOF(double)
 
145
AC_CHECK_ALIGNOF(long double)
 
146
AC_CHECK_ALIGNOF(void *)
 
147
AC_CHECK_ALIGNOF(size_t)
 
148
 
 
149
AC_CHECK_ALIGNOF(int8_t)
 
150
AC_CHECK_ALIGNOF(int16_t)
 
151
AC_CHECK_ALIGNOF(int32_t)
 
152
AC_CHECK_ALIGNOF(int64_t)
 
153
AC_CHECK_ALIGNOF(intmax_t)
 
154
AC_CHECK_ALIGNOF(intptr_t)
 
155
#AC_CHECK_ALIGNOF(int_least8_t)
 
156
#AC_CHECK_ALIGNOF(int_least16_t)
 
157
#AC_CHECK_ALIGNOF(int_least32_t)
 
158
#AC_CHECK_ALIGNOF(int_least64_t)
 
159
#AC_CHECK_ALIGNOF(int_fast8_t)
 
160
#AC_CHECK_ALIGNOF(int_fast16_t)
 
161
#AC_CHECK_ALIGNOF(int_fast32_t)
 
162
#AC_CHECK_ALIGNOF(int_fast64_t)
 
163
 
 
164
AC_TYPE_SIZE_T
 
165
AC_TYPE_SSIZE_T
 
166
 
 
167
#AC_TYPE_MBSTATE_T
 
168
#AC_TYPE_MODE_T
 
169
#AC_TYPE_OFF_T
 
170
#AC_TYPE_PID_T
 
171
#AC_TYPE_SIGNAL
 
172
#AC_TYPE_UID_T
 
173
 
 
174
if $CC --version >/dev/null 2>/dev/null; then
 
175
  ax_prog_cc_version=`$CC --version | head -n 1`
 
176
else
 
177
  ax_prog_cc_version="unknown"
 
178
fi
 
179
 
 
180
AC_LANG_WERROR  # Turn warning-only unknown options into error.
 
181
 
 
182
AX_CFLAGS_GCC_OPTION([-pedantic])
 
183
AX_CFLAGS_GCC_OPTION([-Wall])
 
184
AX_CFLAGS_GCC_OPTION([-Wchar-subscripts])
 
185
AX_CFLAGS_GCC_OPTION([-Wmissing-declarations])
 
186
AX_CFLAGS_GCC_OPTION([-Wredundant-decls])
 
187
AX_CFLAGS_GCC_OPTION([-Wmissing-prototypes])
 
188
AX_CFLAGS_GCC_OPTION([-Wnested-externs])
 
189
AX_CFLAGS_GCC_OPTION([-Wpointer-arith])
 
190
AX_CFLAGS_GCC_OPTION([-Wcast-align])
 
191
AX_CFLAGS_GCC_OPTION([-Wsign-compare])
 
192
 
 
193
# Suppress warnings about strings longer than ISO C 89 maximum length (509).
 
194
AX_CFLAGS_GCC_OPTION([-Wno-overlength-strings])
 
195
 
 
196
# Disable the problematic preprocessing on Mac OS X
 
197
AX_CFLAGS_GCC_OPTION([-no-cpp-precomp])
 
198
 
 
199
AX_LANG_WNOERROR  # end AC_LANG_WERROR
 
200
 
 
201
#
 
202
# Checks for library functions
 
203
#
 
204
 
 
205
AX_FUNC_GETCONTEXT
 
206
AX_FUNC_SIGSETJMP
 
207
 
 
208
AC_CHECK_FUNCS([strtoll strtoimax \
 
209
                memalign \
 
210
                fileno getcwd getpagesize])
 
211
 
 
212
AC_CHECK_FUNCS(posix_memalign,
 
213
  [
 
214
    # For posix_memalign(3). although this value is overridden by _GNU_SOURCE
 
215
    # on glibc, keep this for other environments.
 
216
    AC_DEFINE(_POSIX_C_SOURCE, 200112L)
 
217
  ])
 
218
AH_VERBATIM(_POSIX_C_SOURCE,
 
219
[/* Define to 200112L to enable posix_memalign(3). */
 
220
#if SCM_COMPILING_LIBSSCM
 
221
#undef _POSIX_C_SOURCE
 
222
#endif])
 
223
 
 
224
AC_CHECK_FUNCS(memalign)
 
225
 
 
226
AC_CHECK_FUNCS(strdup,
 
227
  [
 
228
    # Overrides _POSIX_C_SOURCE
 
229
    AC_DEFINE(_XOPEN_SOURCE, 500)
 
230
  ])
 
231
AH_VERBATIM(_XOPEN_SOURCE,
 
232
[/* Define to 500 to enable strdup(3). */
 
233
#if SCM_COMPILING_LIBSSCM
 
234
#undef _XOPEN_SOURCE
 
235
#endif])
 
236
 
 
237
AC_CHECK_FUNCS(strcasecmp,
 
238
  [
 
239
    if test "x$ax_cv_lib_glibc" = xyes; then
 
240
      AC_DEFINE(_BSD_SOURCE, 1)
 
241
    fi
 
242
  ],
 
243
  [
 
244
    AC_LIBOBJ(strcasecmp)
 
245
  ])
 
246
AH_VERBATIM(_BSD_SOURCE,
 
247
[/* Define to 1 if it is needed to enable strcasecmp(3). */
 
248
#if SCM_COMPILING_LIBSSCM
 
249
#undef _BSD_SOURCE
 
250
#endif])
 
251
 
 
252
AX_CHECK_PAGE_ALIGNED_MALLOC
 
253
 
 
254
 
 
255
#####################
 
256
# Optional packages #
 
257
#####################
 
258
 
 
259
AC_ARG_WITH(master-pkg,
 
260
            AS_HELP_STRING([--with-master-pkg@<:@=NAME@:>@],
 
261
                           [specify alternative package name for pkgdatadir.
 
262
                            @<:@default=sigscheme@:>@]))
 
263
 
 
264
case "${with_master_pkg:=no}" in
 
265
  no|yes)
 
266
    SSCM_MASTER_PKG="sigscheme"
 
267
  ;;
 
268
  *)
 
269
    SSCM_MASTER_PKG="${with_master_pkg}"
 
270
  ;;
 
271
esac
 
272
 
 
273
AC_SUBST(SSCM_MASTER_PKG)
 
274
AM_CONDITIONAL(WITH_MASTER_PKG, [test "x$with_master_pkg" != xno])
 
275
 
 
276
AC_ARG_WITH(libgcroots,
 
277
            AS_HELP_STRING([--with-libgcroots@<:@=WHICH@:>@],
 
278
                           [use alternative libgcroots instead of
 
279
                            package-bundled one.
 
280
                            WHICH=(installed|tiny-subst)
 
281
                            @<:@default=installed@:>@]))
 
282
 
 
283
case "${with_libgcroots:=no}" in
 
284
  no)
 
285
    # bundled libgcroots package
 
286
 
 
287
    ac_configure_args="$ac_configure_args "
 
288
    AC_CONFIG_SUBDIRS([libgcroots])
 
289
 
 
290
    # Specify absolute directories to make being usable from superordinate
 
291
    # packages such as uim.
 
292
    GCROOTS_LIBS='$(sscm_abs_top_builddir)/libgcroots/libgcroots.la'
 
293
    GCROOTS_CFLAGS='-I$(sscm_abs_top_srcdir)/libgcroots/include'
 
294
    use_libgcroots="bundled one"
 
295
    GCROOTS_REQ=gcroots
 
296
  ;;
 
297
  yes|installed)
 
298
    PKG_CHECK_MODULES(GCROOTS, [gcroots >= 0.1.4],
 
299
                      [],
 
300
                      [AC_MSG_ERROR([installed libgcroots is not found.])])
 
301
    use_libgcroots="installed one"
 
302
    GCROOTS_REQ=gcroots
 
303
  ;;
 
304
  tiny-subst)
 
305
    # use src/gcroots/gcroots.[hc]
 
306
    with_libgcroots=tiny_subst
 
307
    GCROOTS_CFLAGS='-I$(sscm_abs_top_srcdir)/src/gcroots'
 
308
    use_libgcroots="tiny substitution in src/gcroots"
 
309
  ;;
 
310
  *)
 
311
    AC_MSG_ERROR([invalid argument for --with-libgcroots.])
 
312
  ;;
 
313
esac
 
314
 
 
315
AC_SUBST(GCROOTS_REQ)
 
316
AC_SUBST(GCROOTS_LIBS)
 
317
AC_SUBST(GCROOTS_CFLAGS)
 
318
AM_CONDITIONAL(USE_LIBGCROOTS, [test "x$with_libgcroots" != xtiny_subst])
 
319
AM_CONDITIONAL(USE_LIBGCROOTS_BUNDLED, [test "x$with_libgcroots" = xno])
 
320
AM_CONDITIONAL(USE_LIBGCROOTS_TINY_SUBST,
 
321
               [test "x$with_libgcroots" = xtiny_subst])
 
322
 
 
323
 
 
324
########################################
 
325
# Configure features with dependencies #
 
326
########################################
 
327
 
 
328
# Init with default prefixes for shell var, AC_DEFINE, AM_CONDITIONAL
 
329
AX_FEATURE_CONFIGURATOR([use_], [SCM_USE_], [USE_])
 
330
 
 
331
#
 
332
# Acquire the feature configuration variables from user
 
333
#
 
334
 
 
335
# Pseudo feature as base dependency: Features that required to run current
 
336
# SigScheme implementation depends on this.
 
337
AX_FEATURE_VAR_Y(sigscheme, [pseudo feature for dependency resolution])
 
338
 
 
339
# Specify a set of default variable settings
 
340
AX_FEATURE_ARG_X(conf, [select base configuration of SigScheme.
 
341
                        CONF=(regular|full|small|r5rs|siod|dev|uim) @<:@regular@:>@],
 
342
                       [regular], [^(regular|full|small|r5rs|siod|dev|uim)$],
 
343
  [
 
344
    # multibyte char handlings
 
345
    case "$enable_conf" in
 
346
      full|dev)
 
347
        use_utf8=yes
 
348
        use_euccn=yes
 
349
        use_eucjp=yes
 
350
        use_euckr=yes
 
351
        use_sjis=yes
 
352
        ;;
 
353
      small|siod)
 
354
        use_default_encoding=singlebyte
 
355
        use_utf8=no
 
356
        use_euccn=no
 
357
        use_eucjp=no
 
358
        use_euckr=no
 
359
        use_sjis=no
 
360
        use_strict_encoding_check=no
 
361
        ;;
 
362
      uim)
 
363
        use_default_encoding=singlebyte
 
364
        use_utf8=yes
 
365
        use_euccn=no
 
366
        use_eucjp=yes
 
367
        use_euckr=no
 
368
        use_sjis=no
 
369
        use_strict_encoding_check=no
 
370
        ;;
 
371
    esac
 
372
 
 
373
    # R5RS behaviors
 
374
    case "$enable_conf" in
 
375
      r5rs)
 
376
        use_strict_r5rs=yes
 
377
        ;;
 
378
      full|dev)
 
379
        use_strict_r5rs=no
 
380
        #use_const_list_literal=yes
 
381
        use_const_vector_literal=yes
 
382
        #use_strict_null_form=yes
 
383
        use_strict_vector_form=yes
 
384
        use_strict_argcheck=yes
 
385
        use_strict_toplevel_definitions=yes
 
386
        use_internal_definitions=yes
 
387
        ;;
 
388
      uim)
 
389
        use_strict_r5rs=no
 
390
        #use_const_list_literal=yes
 
391
        use_const_vector_literal=yes
 
392
        use_strict_null_form=no
 
393
        use_strict_vector_form=yes
 
394
        use_strict_argcheck=yes
 
395
        use_strict_toplevel_definitions=yes
 
396
        use_internal_definitions=yes
 
397
        ;;
 
398
      small|siod)
 
399
        use_strict_r5rs=no
 
400
        use_const_list_literal=no
 
401
        use_const_vector_literal=no
 
402
        use_strict_null_form=no
 
403
        use_strict_vector_form=no
 
404
        use_strict_argcheck=no
 
405
        use_strict_toplevel_definitions=no
 
406
        use_internal_definitions=no
 
407
        ;;
 
408
    esac
 
409
 
 
410
    # R5RS features
 
411
    case "$enable_conf" in
 
412
      full|r5rs|dev)
 
413
        use_continuation=yes
 
414
        use_quasiquote=yes
 
415
        use_promise=yes
 
416
        use_int=yes
 
417
        use_numeric_io=yes
 
418
        use_char=yes
 
419
        use_string=yes
 
420
        use_string_procedures=yes
 
421
        use_deep_cadrs=yes
 
422
        use_vector=yes
 
423
        use_port=yes
 
424
        use_reader=yes
 
425
        use_writer=yes
 
426
        use_load=yes
 
427
        ;;
 
428
      small)
 
429
        use_continuation=no
 
430
        use_quasiquote=no
 
431
        use_promise=no
 
432
        use_int=yes
 
433
        use_numeric_io=yes
 
434
        use_char=yes
 
435
        use_string=yes
 
436
        use_string_procedures=yes
 
437
        use_deep_cadrs=no
 
438
        use_vector=no
 
439
        use_port=yes
 
440
        use_reader=yes
 
441
        use_writer=yes
 
442
        use_load=yes
 
443
        ;;
 
444
      siod)
 
445
        use_continuation=no
 
446
        use_quasiquote=no
 
447
        use_promise=no
 
448
        use_int=yes
 
449
        use_numeric_io=yes
 
450
        use_char=no
 
451
        use_string=yes
 
452
        use_string_procedures=no
 
453
        use_deep_cadrs=no
 
454
        use_vector=no
 
455
        use_port=yes
 
456
        use_reader=yes
 
457
        use_writer=yes
 
458
        use_load=yes
 
459
        ;;
 
460
      uim)
 
461
        use_continuation=yes
 
462
        use_quasiquote=yes
 
463
        use_promise=yes
 
464
        use_int=yes
 
465
        use_numeric_io=yes
 
466
        use_char=yes
 
467
        use_string=yes
 
468
        use_string_procedures=yes
 
469
        use_deep_cadrs=no
 
470
        use_vector=yes
 
471
        use_port=yes
 
472
        use_reader=yes
 
473
        use_writer=yes
 
474
        use_load=yes
 
475
        ;;
 
476
    esac
 
477
 
 
478
    # experimental features
 
479
    case "$enable_conf" in
 
480
      dev)
 
481
        use_hygienic_macro=yes
 
482
        ;;
 
483
      *)
 
484
        use_hygienic_macro=no
 
485
        ;;
 
486
    esac
 
487
 
 
488
    # SRFIs
 
489
    case "$enable_conf" in
 
490
      full|r5rs|dev|uim)
 
491
        use_srfi0=yes
 
492
        use_srfi1=yes
 
493
        use_srfi2=yes
 
494
        use_srfi6=yes
 
495
        use_srfi8=yes
 
496
        use_srfi9=yes
 
497
        use_srfi22=yes
 
498
        use_srfi23=yes
 
499
        use_srfi28=yes
 
500
        use_srfi34=yes
 
501
        use_srfi38=yes
 
502
        use_srfi43=yes
 
503
        use_srfi48=yes
 
504
        use_srfi55=yes
 
505
        use_srfi60=yes
 
506
        use_srfi69=yes
 
507
        use_srfi95=yes
 
508
        ;;
 
509
      small|siod)
 
510
        use_srfi0=no
 
511
        use_srfi1=no
 
512
        use_srfi2=no
 
513
        use_srfi6=no
 
514
        use_srfi8=no
 
515
        use_srfi9=no
 
516
        use_srfi22=no
 
517
        use_srfi23=no
 
518
        use_srfi28=no
 
519
        use_srfi34=no
 
520
        use_srfi38=no
 
521
        use_srfi43=no
 
522
        use_srfi48=no
 
523
        use_srfi55=no
 
524
        use_srfi60=no
 
525
        use_srfi69=no
 
526
        use_srfi95=no
 
527
        ;;
 
528
    esac
 
529
 
 
530
    # SigScheme-specific extensions
 
531
    case "$enable_conf" in
 
532
      full|r5rs|dev)
 
533
        use_legacy_macro=yes
 
534
        use_sscm_extensions=yes
 
535
        use_sscm_format_extension=yes
 
536
        use_compat_siod=no
 
537
        use_compat_siod_bugs=no
 
538
        use_eval_c_string=yes
 
539
        ;;
 
540
      small)
 
541
        use_legacy_macro=no
 
542
        use_sscm_extensions=no
 
543
        use_sscm_format_extension=no
 
544
        use_compat_siod=no
 
545
        use_compat_siod_bugs=no
 
546
        use_eval_c_string=no
 
547
        ;;
 
548
      siod)
 
549
        use_legacy_macro=no
 
550
        use_sscm_extensions=yes
 
551
        use_sscm_format_extension=no
 
552
        use_compat_siod=yes
 
553
        use_compat_siod_bugs=yes
 
554
        use_eval_c_string=yes
 
555
        ;;
 
556
      uim)
 
557
        use_legacy_macro=yes
 
558
        use_sscm_extensions=yes
 
559
        use_sscm_format_extension=yes
 
560
        use_compat_siod=yes
 
561
        use_compat_siod_bugs=no
 
562
        use_eval_c_string=yes
 
563
        ;;
 
564
    esac
 
565
 
 
566
    # R6RS features
 
567
    case "$enable_conf" in
 
568
      full|dev|uim)
 
569
        use_r6rs_named_chars=yes
 
570
        use_r6rs_chars=yes
 
571
        ;;
 
572
      r5rs|small|siod)
 
573
        use_r6rs_named_chars=no
 
574
        use_r6rs_chars=no
 
575
        ;;
 
576
    esac
 
577
 
 
578
    # Debugging features
 
579
    case "$enable_conf" in
 
580
      dev)
 
581
        use_backtrace=yes
 
582
        use_debug=yes
 
583
        use_warning_suppressor=yes
 
584
        ;;
 
585
    esac
 
586
  ])
 
587
 
 
588
# If the variable is preexisting, it is used as default value. explicit
 
589
# --enable or --disable can override it.
 
590
 
 
591
# Storage configuration
 
592
AX_FEATURE_ARG_X(storage,   [specify underlying storage implementation.
 
593
                             STORAGE=(compact|fatty) @<:@compact@:>@],
 
594
                            [compact], [^(compact|fatty)$])
 
595
AX_FEATURE_ARG_X(fixnum,    [specify Scheme integer (fixnum) size.
 
596
                             FIXNUM=(long|int|int32_t|int64_t) @<:@long@:>@],
 
597
                            [long], [^(long|int|int32_t|int64_t)$])
 
598
AX_FEATURE_VAR_X(scmref,    [specify scm_intref_t (don't touch)],
 
599
                            [intptr_t], [^(intptr_t|int32_t|int64_t)$])
 
600
AX_FEATURE_VAR_N(valuecons, [valuecons for efficient multiple values handling])
 
601
AX_FEATURE_VAR_N(dump,      [storage dump (not implemented yet)])
 
602
 
 
603
# String configuration
 
604
#AX_FEATURE_VAR_N(const-width-string, [strings consist of constant-width characters (not implemented yet)])
 
605
AX_FEATURE_VAR_N(null-capable-string, [null character in a middle of a string (experimental)])
 
606
 
 
607
# Character encodings
 
608
AX_FEATURE_VAR_N(multibyte,    [multibyte character encodings])
 
609
AX_FEATURE_ARG_X(default-encoding,
 
610
                               [specify default character encoding.
 
611
                                ENCODING=(utf8|singlebyte|euccn|eucjp|euckr|sjis) @<:@utf8@:>@],
 
612
                               [utf8],
 
613
                               [^(utf8|singlebyte|euccn|eucjp|euckr|sjis)$])
 
614
AX_FEATURE_ARG_Y(utf8,         [UTF-8 character encoding])
 
615
AX_FEATURE_ARG_N(euccn,        [EUC-CN character encoding])
 
616
AX_FEATURE_ARG_N(eucjp,        [EUC-JP character encoding])
 
617
AX_FEATURE_ARG_N(euckr,        [EUC-KR character encoding])
 
618
AX_FEATURE_ARG_N(sjis,         [Shift_JIS character encoding])
 
619
AX_FEATURE_ARG_Y(strict-encoding-check, [all feasible encoding error checks])
 
620
 
 
621
# Other internal SigScheme features
 
622
AX_FEATURE_VAR_N(format,       [intermediate format strings])
 
623
AX_FEATURE_VAR_N(raw-c-format, [internal format which takes raw C values from va_list])
 
624
 
 
625
# R5RS behaviors
 
626
AX_FEATURE_ARG_N(strict-r5rs,          [strict R5RS conformance checks])
 
627
AX_FEATURE_ARG_N(const-list-literal,   [immutable list literals])
 
628
AX_FEATURE_ARG_Y(const-vector-literal, [immutable vector literals])
 
629
AX_FEATURE_ARG_N(strict-null-form,     [rejecting quote-less ()])
 
630
AX_FEATURE_ARG_Y(strict-vector-form,   [rejecting quote-less vector literal])
 
631
AX_FEATURE_ARG_Y(strict-argcheck,      [strict check for form arguments])
 
632
AX_FEATURE_ARG_Y(strict-toplevel-definitions, [strict check for R5RS top-level definitions])
 
633
AX_FEATURE_ARG_Y(internal-definitions, [R5RS internal definitions])
 
634
 
 
635
# R5RS features
 
636
AX_FEATURE_ARG_Y(continuation,   [R5RS continuation])
 
637
AX_FEATURE_ARG_Y(quasiquote,     [R5RS quasiquotation])
 
638
AX_FEATURE_ARG_N(hygienic-macro, [R5RS hygienic macros (experimental)])
 
639
AX_FEATURE_ARG_Y(promise,        [R5RS promises])
 
640
AX_FEATURE_VAR_N(number,         [R5RS numbers])
 
641
AX_FEATURE_ARG_Y(int,            [R5RS integer numbers])
 
642
AX_FEATURE_VAR_N(rational,       [R5RS rational numbers (not implemented yet)])
 
643
AX_FEATURE_VAR_N(real,           [R5RS real numbers (not implemented yet)])
 
644
AX_FEATURE_VAR_N(complex,        [R5RS complex numbers (not implemented yet)])
 
645
AX_FEATURE_ARG_Y(numeric-io,     [R5RS 'number->string' and 'string->number'])
 
646
AX_FEATURE_ARG_Y(char,           [R5RS characters])
 
647
AX_FEATURE_ARG_Y(string,         [primary procedures of R5RS strings])
 
648
AX_FEATURE_ARG_Y(string-procedures, [rest procedures of R5RS strings])
 
649
AX_FEATURE_ARG_Y(deep-cadrs, [all c@<:@ad@:>@+r procedures defined in R5RS])
 
650
AX_FEATURE_ARG_Y(vector,         [R5RS vectors])
 
651
AX_FEATURE_ARG_Y(port,           [R5RS ports])
 
652
AX_FEATURE_ARG_Y(reader,         [R5RS 'read'])
 
653
AX_FEATURE_ARG_Y(writer,         [R5RS 'write' and 'display'])
 
654
AX_FEATURE_ARG_Y(load,           [R5RS 'load'])
 
655
 
 
656
# SRFIs
 
657
AX_FEATURE_ARG_Y(srfi0,          [SRFI-0 'cond-expand'])
 
658
AX_FEATURE_ARG_Y(srfi1,          [SRFI-1 list library])
 
659
AX_FEATURE_ARG_Y(srfi2,          [SRFI-2 'and-let*'])
 
660
AX_FEATURE_ARG_Y(srfi6,          [SRFI-6 basic string ports])
 
661
AX_FEATURE_ARG_Y(srfi8,          [SRFI-8 'receive'])
 
662
AX_FEATURE_ARG_Y(srfi9,          [SRFI-9 defining record types])
 
663
AX_FEATURE_ARG_Y(srfi22,         [SRFI-22 running scheme scripts on Unix (partial)])
 
664
AX_FEATURE_ARG_Y(srfi23,         [SRFI-23 'error'])
 
665
AX_FEATURE_ARG_Y(srfi28,         [SRFI-28 'format'])
 
666
AX_FEATURE_ARG_Y(srfi34,         [SRFI-34 exception handling for programs])
 
667
AX_FEATURE_ARG_Y(srfi38,         [SRFI-38 'write/ss' ('read/ss' is not provided)])
 
668
AX_FEATURE_ARG_Y(srfi43,         [SRFI-43 vector library])
 
669
AX_FEATURE_ARG_Y(srfi48,         [SRFI-48 'format' (superset of SRFI-28)])
 
670
AX_FEATURE_ARG_Y(srfi55,         [SRFI-55 'require-extension'])
 
671
AX_FEATURE_ARG_Y(srfi60,         [SRFI-60 integers as bits (partial)])
 
672
AX_FEATURE_ARG_Y(srfi69,         [SRFI-69 basic hash tables])
 
673
AX_FEATURE_ARG_Y(srfi95,         [SRFI-95 sorting and merging])
 
674
 
 
675
# R6RS features (preliminary)
 
676
AX_FEATURE_ARG_Y(r6rs-named-chars, [named characters of R6RS (preliminary)])
 
677
AX_FEATURE_ARG_Y(r6rs-chars,       [R6RS characters (preliminary)])
 
678
 
 
679
# Common Scheme features
 
680
AX_FEATURE_VAR_N(syntax-case,      ['syntax-case' (not implemented yet)])
 
681
AX_FEATURE_VAR_N(unhygienic-macro, [syntactic closure (not implemented yet)])
 
682
AX_FEATURE_ARG_Y(legacy-macro,     ['define-macro' syntactic closure])
 
683
 
 
684
# SigScheme-specific features
 
685
AX_FEATURE_ARG_Y(sscm-extensions,     [SigScheme-specific extensions])
 
686
AX_FEATURE_ARG_Y(sscm-format-extension, [SigScheme-specific 'format+'])
 
687
AX_FEATURE_ARG_N(compat-siod,         [some SIOD compatible features])
 
688
AX_FEATURE_ARG_N(compat-siod-bugs,    [emulating the buggy behaviors of SIOD])
 
689
AX_FEATURE_ARG_Y(eval-c-string,       [eval_c_string() of libsscm])
 
690
AX_FEATURE_ARG_N(backtrace,           [showing backtrace on error])
 
691
AX_FEATURE_ARG_Y(libsscm,             [building libsscm])
 
692
AX_FEATURE_ARG_Y(shell,               [the 'sscm' interactive shell])
 
693
 
 
694
# Developer-only debugging features
 
695
AX_FEATURE_ARG_N(debug,               [debug mode])
 
696
AX_FEATURE_ARG_N(debug-port,          [port debugging])
 
697
AX_FEATURE_ARG_N(debug-parser,        [parser debugging])
 
698
AX_FEATURE_ARG_N(debug-macro,         [macro and pattern matching debugging])
 
699
AX_FEATURE_ARG_N(debug-encoding,      [encoding-related functions debugging])
 
700
AX_FEATURE_ARG_N(debug-backtrace-sep, [frame-separator on backtrace])
 
701
AX_FEATURE_ARG_N(debug-backtrace-val, [values printing on backtrace])
 
702
AX_FEATURE_ARG_N(soft-assert,         [recovery from failed SCM_ASSERT()])
 
703
AX_FEATURE_ARG_N(accessor-assert,     [type assertion on Scheme object accessors])
 
704
AX_FEATURE_ARG_Y(warning-suppressor,  [suppressing compiler warnings])
 
705
 
 
706
#
 
707
# Resolve dependency of the features
 
708
#
 
709
 
 
710
# Resolve required dependencies
 
711
AX_FEATURE_RESOLVE_DEPENDENCIES([required], [
 
712
sigscheme: raw_c_format
 
713
backtrace: continuation port writer
 
714
debug: raw_c_format
 
715
debug_backtrace_val: debug backtrace raw_c_format
 
716
 
 
717
format: writer port string
 
718
srfi28: format
 
719
srfi48: format srfi28
 
720
sscm_format_extension: format srfi48
 
721
raw_c_format: format
 
722
 
 
723
hygienic_macro:
 
724
syntax_case: unhygienic_macro
 
725
string_procedures: string_procedure
 
726
string_procedure: string char
 
727
reader: port
 
728
writer: port raw_c_format
 
729
load: port reader string
 
730
sscm_extensions: load
 
731
eval_c_string: reader srfi6
 
732
srfi0: load srfi55 legacy_macro srfi1 srfi23
 
733
srfi1: continuation deep_cadrs load sscm_extensions srfi8 srfi23
 
734
srfi6: port string
 
735
srfi9: load vector srfi23
 
736
srfi34: continuation srfi23
 
737
srfi38: writer
 
738
srfi43: load vector srfi8 srfi23 sscm_extensions
 
739
srfi55: load sscm_extensions
 
740
srfi60: int
 
741
srfi69: load int string vector srfi9 srfi23
 
742
srfi95: load int
 
743
r6rs_named_chars: char
 
744
r6rs_chars: char utf8 reader r6rs_named_chars
 
745
 
 
746
compat_siod: sscm_extensions srfi60 eval_c_string
 
747
compat_siod_bugs: compat_siod
 
748
strict_r5rs: strict_null_form strict_vector_form strict_argcheck internal_definitions strict_toplevel_definitions const_vector_literal
 
749
 
 
750
int:        number
 
751
rational:   number
 
752
real:       number
 
753
complex:    number
 
754
numeric_io: number_io
 
755
number_io:  number string
 
756
 
 
757
fixnum_long:     long_fixnum
 
758
fixnum_int:      int_fixnum
 
759
fixnum_int32_t:  32bit_fixnum
 
760
fixnum_int64_t:  64bit_fixnum
 
761
scmref_intptr_t: intptr_scmref
 
762
scmref_int32_t:  32bit_scmref
 
763
scmref_int64_t:  64bit_scmref
 
764
 
 
765
multibyte: multibyte_char
 
766
utf8:  multibyte_char
 
767
eucjp: multibyte_char
 
768
euckr: multibyte_char
 
769
euccn: multibyte_char
 
770
sjis:  multibyte_char
 
771
default_encoding_utf8:       utf8  utf8_as_default
 
772
default_encoding_singlebyte: singlebyte_as_default
 
773
default_encoding_euccn:      euccn euccn_as_default
 
774
default_encoding_eucjp:      eucjp eucjp_as_default
 
775
default_encoding_euckr:      euckr euckr_as_default
 
776
default_encoding_sjis:       sjis  sjis_as_default
 
777
 
 
778
shell: libsscm
 
779
])
 
780
 
 
781
# Resolve recommended dependencies (not required)
 
782
AX_FEATURE_RESOLVE_DEPENDENCIES([recommended], [
 
783
conf_dev: warning_suppressor
 
784
storage_fatty: valuecons const_list_literal const_vector_literal
 
785
debug: accessor_assert strict_argcheck strict_encoding_check
 
786
backtrace: srfi38
 
787
srfi69: srfi38
 
788
])
 
789
 
 
790
# Resolve weak dependencies required if and only if available
 
791
dnl AX_FEATURE_RESOLVE_WEAK_DEPENDENCIES([
 
792
dnl strict_r5rs: const_list_literal
 
793
dnl ])
 
794
 
 
795
# Check conflicts between the features
 
796
AX_FEATURE_DETECT_CONFLICTS([
 
797
storage_fatty storage_compact
 
798
storage_compact valuecons
 
799
storage_compact const_list_literal
 
800
debug_no null_capable_string
 
801
strict_r5rs compat_siod_bugs
 
802
strict_r5rs strict_vector_form_no
 
803
strict_r5rs strict_null_form_no
 
804
strict_r5rs strict_toplevel_definitions_no
 
805
strict_r5rs internal_definitions_no
 
806
compat_siod_bugs strict_null_form
 
807
long_fixnum int_fixnum 32bit_fixnum 64bit_fixnum
 
808
intptr_scmref 32bit_scmref 64bit_scmref
 
809
singlebyte_as_default utf8_as_default eucjp_as_default euckr_as_default euccn_as_default sjis_as_default
 
810
],
 
811
[if-conflict])
 
812
 
 
813
#
 
814
# Define configured results
 
815
#
 
816
 
 
817
# Storage configuration
 
818
AX_FEATURE_DEFINE(storage_compact)
 
819
AX_FEATURE_DEFINE(storage_fatty)
 
820
AX_FEATURE_DEFINE(long_fixnum)
 
821
AX_FEATURE_DEFINE(int_fixnum)
 
822
AX_FEATURE_DEFINE(32bit_fixnum)
 
823
AX_FEATURE_DEFINE(64bit_fixnum)
 
824
AX_FEATURE_DEFINE(intptr_scmref)
 
825
AX_FEATURE_DEFINE(32bit_scmref)
 
826
AX_FEATURE_DEFINE(64bit_scmref)
 
827
AX_FEATURE_DEFINE(valuecons)
 
828
AX_FEATURE_DEFINE(dump)
 
829
 
 
830
# String configuration
 
831
#AX_FEATURE_DEFINE(const_width_string)
 
832
AX_FEATURE_DEFINE(null_capable_string)
 
833
 
 
834
# Character encodings
 
835
AX_FEATURE_DEFINE(multibyte_char)
 
836
AX_FEATURE_DEFINE(utf8)
 
837
AX_FEATURE_DEFINE(euccn)
 
838
AX_FEATURE_DEFINE(eucjp)
 
839
AX_FEATURE_DEFINE(euckr)
 
840
AX_FEATURE_DEFINE(sjis)
 
841
AX_FEATURE_DEFINE(utf8_as_default)
 
842
AX_FEATURE_DEFINE(singlebyte_as_default)
 
843
AX_FEATURE_DEFINE(euccn_as_default)
 
844
AX_FEATURE_DEFINE(eucjp_as_default)
 
845
AX_FEATURE_DEFINE(euckr_as_default)
 
846
AX_FEATURE_DEFINE(sjis_as_default)
 
847
AX_FEATURE_DEFINE(strict_encoding_check, SCM_STRICT_ENCODING_CHECK, STRICT_ENCODING_CHECK)
 
848
 
 
849
# Other internal SigScheme features
 
850
AX_FEATURE_DEFINE(format)
 
851
AX_FEATURE_DEFINE(raw_c_format)
 
852
 
 
853
# R5RS behaviors
 
854
AX_FEATURE_DEFINE(strict_r5rs,        SCM_STRICT_R5RS,      STRICT_R5RS)
 
855
AX_FEATURE_DEFINE(const_list_literal, SCM_CONST_LIST_LITERAL, CONST_LIST_LITERAL)
 
856
AX_FEATURE_DEFINE(const_vector_literal, SCM_CONST_VECTOR_LITERAL, CONST_VECTOR_LITERAL)
 
857
AX_FEATURE_DEFINE(strict_null_form,   SCM_STRICT_NULL_FORM,  STRICT_NULL_FORM)
 
858
AX_FEATURE_DEFINE(strict_vector_form, SCM_STRICT_VECTOR_FORM, STRICT_VECTOR_FORM)
 
859
AX_FEATURE_DEFINE(strict_argcheck,    SCM_STRICT_ARGCHECK,  STRICT_ARGCHECK)
 
860
AX_FEATURE_DEFINE(strict_toplevel_definitions, SCM_STRICT_TOPLEVEL_DEFINITIONS, STRICT_TOPLEVEL_DEFINITIONS)
 
861
AX_FEATURE_DEFINE(internal_definitions)
 
862
 
 
863
# R5RS features
 
864
AX_FEATURE_DEFINE(continuation)
 
865
AX_FEATURE_DEFINE(quasiquote)
 
866
AX_FEATURE_DEFINE(hygienic_macro)
 
867
AX_FEATURE_DEFINE(promise)
 
868
AX_FEATURE_DEFINE(number)
 
869
AX_FEATURE_DEFINE(int)
 
870
AX_FEATURE_DEFINE(rational)
 
871
AX_FEATURE_DEFINE(real)
 
872
AX_FEATURE_DEFINE(complex)
 
873
AX_FEATURE_DEFINE(number_io)
 
874
AX_FEATURE_DEFINE(char)
 
875
AX_FEATURE_DEFINE(string)
 
876
AX_FEATURE_DEFINE(string_procedure)
 
877
AX_FEATURE_DEFINE(deep_cadrs)
 
878
AX_FEATURE_DEFINE(vector)
 
879
AX_FEATURE_DEFINE(port)
 
880
AX_FEATURE_DEFINE(reader)
 
881
AX_FEATURE_DEFINE(writer)
 
882
AX_FEATURE_DEFINE(load)
 
883
 
 
884
# SRFIs
 
885
AX_FEATURE_DEFINE(srfi0)
 
886
AX_FEATURE_DEFINE(srfi1)
 
887
AX_FEATURE_DEFINE(srfi2)
 
888
AX_FEATURE_DEFINE(srfi6)
 
889
AX_FEATURE_DEFINE(srfi8)
 
890
AX_FEATURE_DEFINE(srfi9)
 
891
AX_FEATURE_DEFINE(srfi22)
 
892
AX_FEATURE_DEFINE(srfi23)
 
893
AX_FEATURE_DEFINE(srfi28)
 
894
AX_FEATURE_DEFINE(srfi34)
 
895
AX_FEATURE_DEFINE(srfi38)
 
896
AX_FEATURE_DEFINE(srfi43)
 
897
AX_FEATURE_DEFINE(srfi48)
 
898
AX_FEATURE_DEFINE(srfi55)
 
899
AX_FEATURE_DEFINE(srfi60)
 
900
AX_FEATURE_DEFINE(srfi69)
 
901
AX_FEATURE_DEFINE(srfi95)
 
902
 
 
903
# R6RS features (preliminary)
 
904
AX_FEATURE_DEFINE(r6rs_named_chars)
 
905
AX_FEATURE_DEFINE(r6rs_chars)
 
906
 
 
907
# Common Scheme features
 
908
AX_FEATURE_DEFINE(syntax_case)
 
909
AX_FEATURE_DEFINE(unhygienic_macro)
 
910
AX_FEATURE_DEFINE(legacy_macro)
 
911
 
 
912
# SigScheme-specific features
 
913
AX_FEATURE_DEFINE(sscm_extensions)
 
914
AX_FEATURE_DEFINE(sscm_format_extension)
 
915
AX_FEATURE_DEFINE(compat_siod,        SCM_COMPAT_SIOD,      COMPAT_SIOD)
 
916
AX_FEATURE_DEFINE(compat_siod_bugs,   SCM_COMPAT_SIOD_BUGS, COMPAT_SIOD_BUGS)
 
917
AX_FEATURE_DEFINE(eval_c_string)
 
918
AX_FEATURE_DEFINE(backtrace)
 
919
AX_FEATURE_DEFINE(libsscm)
 
920
AX_FEATURE_DEFINE(shell)
 
921
 
 
922
# Developer-only debugging features
 
923
AX_FEATURE_DEFINE(debug,               SCM_DEBUG,           DEBUG)
 
924
AX_FEATURE_DEFINE(debug_port,          SCM_DEBUG_PORT,      DEBUG_PORT)
 
925
AX_FEATURE_DEFINE(debug_parser,        SCM_DEBUG_PARSER,    DEBUG_PARSER)
 
926
AX_FEATURE_DEFINE(debug_macro,         SCM_DEBUG_MACRO,     DEBUG_MACRO)
 
927
AX_FEATURE_DEFINE(debug_encoding,      SCM_DEBUG_ENCODING,  DEBUG_ENCODING)
 
928
AX_FEATURE_DEFINE(debug_backtrace_sep, SCM_DEBUG_BACKTRACE_SEP, DEBUG_BACKTRACE_SEP)
 
929
AX_FEATURE_DEFINE(debug_backtrace_val, SCM_DEBUG_BACKTRACE_VAL, DEBUG_BACKTRACE_VAL)
 
930
AX_FEATURE_DEFINE(soft_assert,         SCM_SOFT_ASSERT,     SOFT_ASSERT)
 
931
AX_FEATURE_DEFINE(accessor_assert,     SCM_ACCESSOR_ASSERT, ACCESSOR_ASSERT)
 
932
AX_FEATURE_DEFINE(warning_suppressor)
 
933
 
 
934
AC_SUBST(use_storage)
 
935
AC_SUBST(use_fixnum)
 
936
AC_SUBST(use_multibyte_char)
 
937
AC_SUBST(use_default_encoding)
 
938
AC_SUBST(use_utf8)
 
939
AC_SUBST(use_euccn)
 
940
AC_SUBST(use_eucjp)
 
941
AC_SUBST(use_euckr)
 
942
AC_SUBST(use_sjis)
 
943
AC_SUBST(use_strict_r5rs)
 
944
AC_SUBST(use_const_list_literal)
 
945
AC_SUBST(use_const_vector_literal)
 
946
AC_SUBST(use_strict_null_form)
 
947
AC_SUBST(use_strict_vector_form)
 
948
AC_SUBST(use_strict_argcheck)
 
949
AC_SUBST(use_strict_toplevel_definitions)
 
950
AC_SUBST(use_internal_definitions)
 
951
AC_SUBST(use_continuation)
 
952
AC_SUBST(use_quasiquote)
 
953
AC_SUBST(use_hygienic_macro)
 
954
AC_SUBST(use_promise)
 
955
AC_SUBST(use_int)
 
956
AC_SUBST(use_number_io)
 
957
AC_SUBST(use_char)
 
958
AC_SUBST(use_string)
 
959
AC_SUBST(use_string_procedure)
 
960
AC_SUBST(use_deep_cadrs)
 
961
AC_SUBST(use_vector)
 
962
AC_SUBST(use_port)
 
963
AC_SUBST(use_reader)
 
964
AC_SUBST(use_writer)
 
965
AC_SUBST(use_load)
 
966
AC_SUBST(use_srfi0)
 
967
AC_SUBST(use_srfi1)
 
968
AC_SUBST(use_srfi2)
 
969
AC_SUBST(use_srfi6)
 
970
AC_SUBST(use_srfi8)
 
971
AC_SUBST(use_srfi9)
 
972
AC_SUBST(use_srfi22)
 
973
AC_SUBST(use_srfi23)
 
974
AC_SUBST(use_srfi28)
 
975
AC_SUBST(use_srfi34)
 
976
AC_SUBST(use_srfi38)
 
977
AC_SUBST(use_srfi43)
 
978
AC_SUBST(use_srfi48)
 
979
AC_SUBST(use_srfi55)
 
980
AC_SUBST(use_srfi60)
 
981
AC_SUBST(use_srfi69)
 
982
AC_SUBST(use_srfi95)
 
983
AC_SUBST(use_r6rs_chars)
 
984
AC_SUBST(use_r6rs_named_chars)
 
985
AC_SUBST(use_legacy_macro)
 
986
AC_SUBST(use_sscm_extensions)
 
987
AC_SUBST(use_sscm_format_extension)
 
988
AC_SUBST(use_compat_siod)
 
989
AC_SUBST(use_compat_siod_bugs)
 
990
AC_SUBST(use_eval_c_string)
 
991
AC_SUBST(use_backtrace)
 
992
AC_SUBST(use_debug)
 
993
 
 
994
#########
 
995
# Fixup #
 
996
#########
 
997
 
 
998
#
 
999
# Hardwired configurations
 
1000
#
 
1001
 
 
1002
AC_DEFINE(SCM_ENCODING_USE_WITH_SIGSCHEME, 1,
 
1003
  [Define to 1 to adapt encoding.c to SigScheme.])
 
1004
AC_DEFINE(SCM_SCMPORT_USE_WITH_SIGSCHEME, 1,
 
1005
  [Define to 1 to adapt scmport*.[hc] to SigScheme.])
 
1006
 
 
1007
#
 
1008
# Compiler options
 
1009
#
 
1010
 
 
1011
# Debugging-related flags
 
1012
if test "x$use_debug" = xyes; then
 
1013
  if test "x$ac_cv_prog_cc_g" = xyes; then
 
1014
    CFLAGS="$CFLAGS -g"
 
1015
  fi
 
1016
 
 
1017
  # Restricting the C dialect tends to cause system library disfunction such as
 
1018
  # on glibc and Darwin libc. So this option is only specified at debugging
 
1019
  # mode.
 
1020
  #
 
1021
  # -std=gnu89 is required only for (old?) glibc. -std=c89 is sufficient for
 
1022
  # other environments.
 
1023
  AC_LANG_WERROR  # Turn warning-only unknown options into error.
 
1024
  if test "x$ax_cv_lib_glibc" = xyes; then
 
1025
    AX_CFLAGS_GCC_OPTION([-std=gnu89])
 
1026
  else
 
1027
    AX_CFLAGS_GCC_OPTION([-std=c89])
 
1028
  fi
 
1029
  AX_LANG_WNOERROR  # end AC_LANG_WERROR
 
1030
else
 
1031
  CFLAGS="$CFLAGS -DNDEBUG"
 
1032
fi
 
1033
 
 
1034
#
 
1035
# System directories
 
1036
#
 
1037
scmlibdir='${pkgdatadir}/lib'
 
1038
AC_SUBST(scmlibdir)
 
1039
SSCM_DEFS='-DPKGDATADIR="\"$(pkgdatadir)\"" -DSCMLIBDIR="\"$(scmlibdir)\""'
 
1040
AC_SUBST(SSCM_DEFS)
 
1041
 
 
1042
###############################
 
1043
# Output configuration result #
 
1044
###############################
 
1045
 
 
1046
# This include guard is required to prevent being overridden by
 
1047
# system-installed config.h on a source that is compiled on
 
1048
# !SCM_COMPILING_LIBSSCM such as test-c/test-*.c.
 
1049
AH_TOP([#ifndef __SIGSCHEME_CONFIG_H
 
1050
#define __SIGSCHEME_CONFIG_H])
 
1051
 
 
1052
# FIXME: temporary solution
 
1053
AH_BOTTOM([
 
1054
/* FIXME: temporary solution */
 
1055
#include "config-old.h"
 
1056
 
 
1057
#endif /* __SIGSCHEME_CONFIG_H */])
 
1058
 
 
1059
AC_CONFIG_FILES([sigscheme.pc
 
1060
                 libgcroots.mk
 
1061
                 sigscheme.mk
 
1062
                 Makefile
 
1063
                 doc/Makefile
 
1064
                 m4/Makefile
 
1065
                 tools/Makefile
 
1066
                 include/Makefile
 
1067
                 include/sigscheme/Makefile
 
1068
                 src/Makefile
 
1069
                 lib/Makefile
 
1070
                 test/Makefile
 
1071
                 test/run-singletest.sh
 
1072
                 test-c/Makefile
 
1073
                 test-c/collect.sh
 
1074
                 bench/Makefile])
 
1075
 
 
1076
AC_OUTPUT
 
1077
 
 
1078
AC_MSG_RESULT([[
 
1079
SigScheme has been configured as follows:
 
1080
 
 
1081
base config:  $use_conf
 
1082
 
 
1083
[Storage configuration]
 
1084
Storage impl: $use_storage
 
1085
Fixnum size:  $use_fixnum
 
1086
getcontext:   $ax_cv_func_getcontext
 
1087
libgcroots:   $use_libgcroots
 
1088
 
 
1089
[Multibyte character handlings]
 
1090
Multibyte chars:  ${use_multibyte_char:-no}
 
1091
Default encoding: $use_default_encoding
 
1092
UTF-8 codec:      $use_utf8
 
1093
EUC-CN codec:     $use_euccn
 
1094
EUC-JP codec:     $use_eucjp
 
1095
EUC-KR codec:     $use_euckr
 
1096
Shift_JIS codec:  $use_sjis
 
1097
 
 
1098
[R5RS behaviors]
 
1099
Strict R5RS:           $use_strict_r5rs
 
1100
Const list literal:    $use_const_list_literal
 
1101
Const vector literal:  $use_const_vector_literal
 
1102
Strict null form:      $use_strict_null_form
 
1103
Strict vector form:    $use_strict_vector_form
 
1104
Strict argcheck:       $use_strict_argcheck
 
1105
Strict top-level defs: $use_strict_toplevel_definitions
 
1106
Internal definitions:  $use_internal_definitions
 
1107
 
 
1108
[R5RS features]
 
1109
Continuation:       $use_continuation
 
1110
Quasiquote:         $use_quasiquote
 
1111
Hygienic macros:    $use_hygienic_macro
 
1112
Promise:            $use_promise
 
1113
Integer:            $use_int
 
1114
Numeric I/O:        ${use_number_io:-no}
 
1115
Charcters:          $use_char
 
1116
Strings:            $use_string
 
1117
String procedures:  ${use_string_procedure:-no}
 
1118
Deep c[ad]+r procs: $use_deep_cadrs
 
1119
Vectors:            $use_vector
 
1120
Ports:              $use_port
 
1121
Reader:             $use_reader
 
1122
Writer:             $use_writer
 
1123
Load:               $use_load
 
1124
 
 
1125
[SRFIs]
 
1126
SRFI-0:  $use_srfi0
 
1127
SRFI-1:  $use_srfi1
 
1128
SRFI-2:  $use_srfi2
 
1129
SRFI-6:  $use_srfi6
 
1130
SRFI-8:  $use_srfi8
 
1131
SRFI-9:  $use_srfi9
 
1132
SRFI-22: $use_srfi22
 
1133
SRFI-23: $use_srfi23
 
1134
SRFI-28: $use_srfi28
 
1135
SRFI-34: $use_srfi34
 
1136
SRFI-38: $use_srfi38
 
1137
SRFI-43: $use_srfi43
 
1138
SRFI-48: $use_srfi48
 
1139
SRFI-55: $use_srfi55
 
1140
SRFI-60: $use_srfi60
 
1141
SRFI-69: $use_srfi69
 
1142
SRFI-95: $use_srfi95
 
1143
 
 
1144
[R6RS features (preliminary)]
 
1145
R6RS characters:  $use_r6rs_chars
 
1146
R6RS named chars: $use_r6rs_named_chars
 
1147
 
 
1148
[SigScheme-specific extensions]
 
1149
define-macro:         $use_legacy_macro
 
1150
SigScheme extensions: $use_sscm_extensions
 
1151
format+ procedure:    $use_sscm_format_extension
 
1152
SIOD compatibilities: $use_compat_siod
 
1153
SIOD bugs emulation:  $use_compat_siod_bugs
 
1154
eval_c_string():      $use_eval_c_string
 
1155
Backtrace:            $use_backtrace
 
1156
Library:              $use_libsscm
 
1157
Interactive shell:    $use_shell
 
1158
 
 
1159
[Developer-only debugging features]
 
1160
Debug:              $use_debug]])
 
1161
 
 
1162
if test "x$use_debug" = xyes; then
 
1163
  AC_MSG_RESULT(
 
1164
[[Debug port:         $use_debug
 
1165
Debug parser:       $use_debug
 
1166
Debug macro:        $use_debug
 
1167
Debug encoding:     $use_debug
 
1168
Soft assert:        $use_soft_assert
 
1169
Accessor assert:    $use_accessor_assert
 
1170
Warning suppressor: $use_warning_suppressor]])
 
1171
fi
 
1172
 
 
1173
AC_MSG_RESULT([[
 
1174
[Build information (provide this on bug reports)]
 
1175
Package:                $PACKAGE_STRING
 
1176
build (compile on):     $ac_cv_build
 
1177
host (compile for):     $ac_cv_host
 
1178
host data model:        $ac_cv_data_model
 
1179
host align (C/S/I/L/P): ${ac_cv_alignof_char}/${ac_cv_alignof_short}/${ac_cv_alignof_int}/${ac_cv_alignof_long}/${ac_cv_alignof_void_p}
 
1180
host endian:            $ax_c_endian
 
1181
host char unsigned:     $ac_cv_c_char_unsigned
 
1182
host arithmetic rshift: $ax_cv_c_arithmetic_rshift
 
1183
host safe va_list ref:  $ax_cv_c_referenceable_passed_va_list
 
1184
Compiler:               $CC
 
1185
Compiler version:       $ax_prog_cc_version
 
1186
CFLAGS='$CFLAGS']])