2
config.h.in -- Template configuration file.
5
Copyright (c) 1990, Giuseppe Attardi.
6
Copyright (c) 2001, Juan Jose Garcia Ripoll.
8
ECoLisp is free software; you can redistribute it and/or
9
modify it under the terms of the GNU Library General Public
10
License as published by the Free Software Foundation; either
11
version 2 of the License, or (at your option) any later version.
13
See file '../Copyright' for full details.
22
/* Use Boehm's garbage collector */
25
#include <ecl/gc/gc.h>
26
#define ECL_DYNAMIC_VV
29
/* Use GNU Multiple Precision library for bignums */
33
/* Userland threads? */
34
/* #undef ECL_THREADS */
41
#if defined(TCP) && (defined(_MSC_VER) || defined(mingw32))
45
/* Foreign functions interface */
49
* C TYPES AND SYSTEM LIMITS
54
* cl_fixnum must be an integer type, large enough to hold a pointer.
55
* Ideally, according to the ISOC99 standard, we should use intptr_t,
56
* but the required headers are not present in all systems. Hence we
57
* use autoconf to guess the following values.
59
#define FIXNUM_BITS 32
60
#define MOST_POSITIVE_FIXNUM ((cl_fixnum)536870911)
61
#define MOST_NEGATIVE_FIXNUM ((cl_fixnum)-536870912)
63
typedef int cl_fixnum;
64
typedef unsigned int cl_index;
65
typedef unsigned int cl_hashkey;
70
#define CHAR_CODE_LIMIT 256
75
#define ARANKLIM 64 /* array rank limit */
77
#define ADIMLIM 536870911 /* array dimension limit */
78
#define ATOTLIM 536870911 /* array total limit */
80
#define ADIMLIM 16*1024*1024 /* array dimension limit */
81
#define ATOTLIM 16*1024*1024 /* array total limit */
87
* In general, any of these limits must fit in a "signed int".
89
/* Maximum number of function arguments */
90
#define CALL_ARGUMENTS_LIMIT 65536
92
/* Maximum number of required arguments */
93
#define LAMBDA_PARAMETERS_LIMIT 64
95
/* Numb. of args. which can be passed using the C stack */
96
/* See cmplam.lsp if you change this value */
97
#define C_ARGUMENTS_LIMIT 64
99
/* Maximum number of output arguments */
100
#define ECL_MULTIPLE_VALUES_LIMIT 64
102
/* A setjmp that does not save signals */
103
#define ecl_setjmp setjmp
104
#define ecl_longjmp longjmp
107
* Structure/Instance limits. The index to a slot must fit in the
108
* "int" type. We also require ECL_SLOTS_LIMIT <= CALL_ARGUMENTS_LIMIT
109
* because constructors typically require as many arguments as slots,
112
#define ECL_SLOTS_LIMIT 32768
114
/* Missing integer types */
116
typedef short int16_t;
118
typedef unsigned char uint8_t;
119
typedef unsigned short uint16_t;
120
typedef unsigned int uint32_t;
122
/* -CUT-: Everything below this mark will not be installed */
123
/* -------------------------------------------------------------------- *
124
* BUILD OPTIONS WHICH NEED NOT BE EXPORTED *
125
* -------------------------------------------------------------------- */
127
* FEATURES LINKED IN:
133
/* #undef LOCATIVE */
134
/* Use old MIT LOOP macro system */
135
/* #undef ECL_OLD_LOOP */
137
/* Define this if you want a runtime version only without compiler */
141
/* Program Development Environment */
147
/* Allow loading dynamically linked code */
148
#define ENABLE_DLOPEN 1
150
/* Undefine this if you do not want ECL to check for circular lists */
153
/* Allow STREAM operations to work on arbitrary objects */
154
#define ECL_CLOS_STREAMS 1
156
/* Use CMU Common-Lisp's FORMAT routine */
157
#define ECL_CMU_FORMAT 1
159
/* Bytecodes and arguments are 8 and 16 bits large, respectively */
160
/* #undef ECL_SMALL_BYTECODES */
162
/* We have non-portable implementation of FFI calls */
163
#define ECL_DYNAMIC_FFI 1
169
/* Stack grows downwards */
171
/* Arguments cannot be accessed as array */
172
/* #undef NO_ARGS_ARRAY */
173
/* Most significant byte first */
174
/* #undef WORDS_BIGENDIAN */
175
/* Has <sys/resource.h> */
176
/* #undef HAVE_SYS_RESOURCE_H */
177
/* #undef HAVE_ULIMIT_H */
178
/* High precision timer */
179
/* #undef HAVE_NANOSLEEP */
180
/* Float version if isnan() */
181
/* #undef HAVE_ISNANF */
182
/* float.h for epsilons, maximum real numbers, etc */
183
#define HAVE_FLOAT_H 1
185
/* #undef HAVE_SELECT */
186
/* #undef HAVE_SYS_IOCTL_H */
187
/* putenv() or setenv() */
189
#define HAVE_PUTENV 1
190
/* times() and sys/times.h */
191
/* #undef HAVE_TIMES */
192
/* user home directory, user name, etc... */
193
/* #undef HAVE_PW_H */
194
/* symbolic links and checking their existence */
195
/* #undef HAVE_LSTAT */
196
/* safe creation of temporary files */
197
/* #undef HAVE_MKSTEMP */
198
/* timer for userland threads */
199
/* #undef HAVE_ALARM */
201
/* #undef HAVE_DIRENT_H */
202
/* dynamic linking of libraries */
203
/* #undef HAVE_DLFCN_H */
204
/* #undef HAVE_LINK_H */
205
/* #undef HAVE_MACH_O_DYLD_H */
207
/* #undef HAVE_SIGPROCMASK */
208
/* isatty() checks whether a file is connected to a */
209
#define HAVE_ISATTY 1
210
/* compiler understands long long */
211
#define HAVE_LONG_LONG 1
212
/* the tzset() function gets the current time zone */
215
/* what characters are used to mark beginning of new line */
216
#define ECL_NEWLINE_IS_CRLF 1
217
/* #undef ECL_NEWLINE_IS_LFCR */
224
* Memory limits for the old garbage collector.
226
#define LISP_PAGESIZE 2048 /* Page size in bytes */
227
#define MAXPAGE 16384 /* Maximum Memory Size */
230
* The lisp environment has several stacks. These are their limits:
232
#define BDSSIZE 2048 /* Size of Binding Stack */
233
#define BDSGETA 16 /* Safety zone of BDS */
234
#define FRSSIZE 1024 /* Size of Frame Stack */
235
#define FRSGETA 16 /* Safety zone of FRS */
237
#define CSSIZE 7500 /* Size of C Stack of each thread */
240
#define CSSIZE 20000 /* Size of C Stack */
244
/* We reserve these many bytes for computation with bignums registers */
245
#define BIGNUM_REGISTER_SIZE 16
248
* Macros that depend on these system features.
250
#if defined(sparc) || defined(i386) || defined(mips)
251
# define stack_align(n) (((n) + 0x7) & ~0x7)
253
# define stack_align(n) (((n) + 03) & ~03)
256
/* #undef FILE_CNT */
258
# define FILE_CNT(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr)
261
# define FILE_CNT(fp) ((fp)->_r)
264
# define FILE_CNT(fp) ((fp)->_cnt)
267
#if defined(MSDOS) || defined(cygwin) || defined(mingw32) || defined(_MSC_VER)
268
# define IS_DIR_SEPARATOR(x) ((x=='/')||(x=='\\'))
269
# define DIR_SEPARATOR '/'
270
# define PATH_SEPARATOR ';'
272
# define IS_DIR_SEPARATOR(x) (x=='/')
273
# define DIR_SEPARATOR '/'
274
# define PATH_SEPARATOR ':'
277
#define ECL_ARCHITECTURE "PENTIUM4"
279
#define strcasecmp _stricmp
281
#define finite _finite
284
#include "@ECL_FPE_CODE@"