Newer
Older
/* mkcl/config.h. Generated from configpre.h by configure. */
/*
config.h.in -- Template configuration file.
*/
/*
Copyright (c) 1990, Giuseppe Attardi.
Copyright (c) 2001, Juan Jose Garcia Ripoll.
Copyright (c) 2010-2013, Jean-Claude Beaudoin.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
MKCL is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
See file './Copyright' for full details.
*/
#ifndef MKCL_CONFIG_H
#define MKCL_CONFIG_H
#define MKCL_DEBUG_INTERRUPT_MASK 1
/*
* If MKCL_API has been predefined, that means we are building the core
* library and, under windows, we must tell the compiler to export
* extern functions from the shared library.
* If MKCL_API is not defined, we are simply building an application that
* uses MKCL and, under windows, we must tell the compiler that certain elements
* will be imported from a DLL.
*/
#if defined(__MINGW32__) || defined(_MSC_VER) || defined(cygwin)
# define MKCL_WINDOWS 1 /* This one stands as a shorthand for the test above. */
# define MKCL_DLLEXPORT __declspec(dllexport)
# ifdef MKCL_API
# undef \
MKCL_API /* Avoid autoconf removing this */
# define MKCL_API __declspec(dllexport)
# else
# define MKCL_API __declspec(dllimport)
# endif
#else /* unix and linux */
# define MKCL_DLLEXPORT
# ifdef MKCL_API
# undef \
MKCL_API /* Avoid autoconf removing this */
# endif
# define MKCL_API
#endif
/* Decimal number made with the formula: MAJOR * 1000000 + MINOR * 10000 + PATCH */
#define MKCL_VERSION_NUMBER 1010005
#define MKCL_MAJOR_VERSION 1
#define MKCL_MINOR_VERSION 1
#define MKCL_PATCH_LEVEL 5
#define MKCL_VERSION_STRING "1.1.5"
#define MKCL_MAJOR_MINOR_VERSION_STRING "1.1"
#define MKCL_MAJOR_VERSION_STRING "1"
#define MKCL_MINOR_VERSION_STRING "1"
#define MKCL_PATCH_LEVEL_STRING "5"
#define MKCL_SYS_LIBDIR_DEFAULT "c:/Program Files/MKCL 1.1/lib/mkcl-1.1.5"
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
* FEATURES LINKED IN
*/
/* Use GNU Multiple Precision library for bignums */
#include <C:/Users/Jean-Claude/GNU2/mingw64/include/gmp.h>
#if defined(_MSC_VER) || defined(__MINGW32__)
# define MKCL_WSOCK
#endif
/* Foreign functions interface */
/* #undef MKCL_FFI */
/* Allow STREAM operations to work on arbitrary objects */
/* #undef MKCL_CLOS_STREAMS */
/* Stack grows downwards */
#define MKCL_DOWN_STACK 1
/* We have non-portable implementation of FFI calls */
/* #undef MKCL_DYNAMIC_FFI */
/* We use hierarchical package names, like in Allegro CL */
#define MKCL_RELATIVE_PACKAGE_NAMES 1
/* Integer types */
#include <stdint.h>
#define mkcl_uint8_t uint8_t
#define mkcl_int8_t int8_t
#define mkcl_uint16_t uint16_t
#define mkcl_int16_t int16_t
#define mkcl_uint32_t uint32_t
#define mkcl_int32_t int32_t
#define mkcl_uint64_t uint64_t
#define mkcl_int64_t int64_t
#define mkcl_long_long_t long long
#define mkcl_ulong_long_t unsigned long long
/*
* C TYPES AND SYSTEM LIMITS
*/
#include <limits.h>
/*
* The integer type
*
* mkcl_word must be an integer type, large enough to hold a pointer.
* Ideally, according to the ISOC99 standard, we should use intptr_t,
* but the required headers are not present in all systems. Hence we
* use autoconf to guess the following values.
*/
#define MKCL_INT_BITS 32
#define MKCL_LONG_BITS 32
#define MKCL_WORD_BITS 64
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#define MKCL_MOST_POSITIVE_FIXNUM ((mkcl_word)2305843009213693951LL)
#define MKCL_MOST_NEGATIVE_FIXNUM ((mkcl_word)-2305843009213693952LL)
#define MKCL_MOST_POSITIVE_FIXNUM_RAW (2305843009213693951LL)
#define MKCL_MOST_NEGATIVE_FIXNUM_RAW (-2305843009213693952LL)
typedef intptr_t mkcl_word;
typedef uintptr_t mkcl_index;
typedef uintptr_t mkcl_hashkey;
/*
* The character type
*/
#define MKCL_CHAR_CODE_LIMIT 1114112 /* unicode character code limit (0x110000) */
#define MKCL_BASE_CHAR_CODE_LIMIT 256 /* unicode character code limit (0x100) */
/*
* Array limits
*/
#define MKCL_ARANKLIM 64 /* array rank limit */
#define MKCL_ADIMLIM MKCL_MOST_POSITIVE_FIXNUM_RAW /* array dimension limit */
#define MKCL_ATOTLIM MKCL_MOST_POSITIVE_FIXNUM_RAW /* array total limit */
/*
* Function limits.
*
* In general, any of these limits must fit in a "mkcl_word".
*/
/* Maximum number of function arguments (arbitrary) */
#define MKCL_CALL_ARGUMENTS_LIMIT MKCL_MOST_POSITIVE_FIXNUM /* Used to be 65536. JCB */
/* Maximum number of required arguments */
#define MKCL_LAMBDA_PARAMETERS_LIMIT MKCL_CALL_ARGUMENTS_LIMIT
/* Numb. of args. which will be passed using the C stack */
/* See cmplam.lsp if you change this value */
#define MKCL_C_ARGUMENTS_LIMIT 64
/* Maximum number of values returned by a function
(must be >= MKCL_C_ARGUMENTS_LIMIT because of a hack on argument frames on some platforms. JCB) */
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#define MKCL_MULTIPLE_VALUES_LIMIT 64
/* A setjmp that does not save signals */
#if __unix__
/* Setting the second argument of sigsetjmp to TRUE causes a severe
speed performance degradation of the catch/throw facility.
Can it be justified? JCB */
# define mkcl_setjmp(buf) sigsetjmp(buf, FALSE)
# define mkcl_longjmp(buf, val) siglongjmp(buf, val)
# define mkcl_jmp_buf sigjmp_buf
#else
# define mkcl_setjmp setjmp
# define mkcl_longjmp longjmp
# define mkcl_jmp_buf jmp_buf
#endif
/*
* Structure/Instance limits. The index to a slot must fit in the
* "int" type. We also require MKCL_SLOTS_LIMIT <= CALL_ARGUMENTS_LIMIT
* because constructors typically require as many arguments as slots,
* or more.
*/
#define MKCL_SLOTS_LIMIT 32768
/* compiler understands long double */
/* #undef HAVE_LONG_DOUBLE */
#if 0 /* defined(unix) */ /* def HAVE_LONG_DOUBLE */
/* This is commented out because printing of long double based long-float
is still unstable. 2011/02/07 JCB
*/
# define MKCL_LONG_FLOAT
#endif
/* compiler understands complex */
/* #undef HAVE_DOUBLE_COMPLEX */
/* #undef HAVE_FLOAT_COMPLEX */
#endif /* MKCL_CONFIG_H */
/* -CUT-: Everything below this mark will not be installed */
/* -------------------------------------------------------------------- *
* BUILD OPTIONS WHICH NEED NOT BE EXPORTED *
* -------------------------------------------------------------------- */
/*
* FEATURES LINKED IN:
*/
#ifndef MKCL_CONFIG_H_2
#define MKCL_CONFIG_H_2
/*
* SYSTEM FEATURES:
*/
/* Argument list can be access as an array */
/* #undef MKCL_USE_VARARG_AS_POINTER */
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
/* Most significant byte first */
/* #undef MKCL_WORDS_BIGENDIAN */
/* Has <sys/resource.h> */
/* #undef HAVE_SYS_RESOURCE_H */
/* #undef HAVE_ULIMIT_H */
/* High precision timer */
/* #undef HAVE_NANOSLEEP */
/* Float version if isnan() */
/* #undef HAVE_ISNANF */
/* float.h for epsilons, maximum real numbers, etc */
#define HAVE_FLOAT_H 1
/* select() */
/* #undef HAVE_SELECT */
/* #undef HAVE_SYS_SELECT_H */
/* #undef HAVE_SYS_IOCTL_H */
/* putenv() or setenv() */
/* #undef HAVE_SETENV */
#define HAVE_PUTENV 1
/* times() and sys/times.h */
/* #undef HAVE_TIMES */
/* gettimeofday() and sys/time.h */
#define HAVE_GETTIMEOFDAY 1
/* getrusage() and sys/resource.h */
/* #undef HAVE_GETRUSAGE */
/* user home directory, user name, etc... */
/* #undef HAVE_PW_H */
/* symbolic links and checking their existence */
/* #undef HAVE_LSTAT */
/* safe creation of temporary files */
/* #undef HAVE_MKSTEMP */
/* timer for userland threads */
/* #undef HAVE_ALARM */
/* filesytem */
#define HAVE_DIRENT_H 1
/* dynamic linking of libraries */
/* #undef HAVE_DLFCN_H */
/* #undef HAVE_LINK_H */
/* #undef HAVE_MACH_O_DYLD_H */
/* POSIX signals */
/* #undef HAVE_SIGPROCMASK */
/* isatty() checks whether a file is connected to a */
#define HAVE_ISATTY 1
/* can manipulate floating point environment */
#define HAVE_FENV_H 1
/* can activate individual traps in floating point environment */
/* #undef HAVE_FEENABLEEXCEPT */
/* do we want to deactivate all support for floating point exceptions */
/* #undef MKCL_AVOID_FPE_H */
/* do we want to have signed zeros */
#define MKCL_SIGNED_ZERO 1
/* do we want NaNs and Infs */
#define MKCL_IEEE_FP 1
/* has support for large files */
/* #undef HAVE_FSEEKO */
/* the tzset() function gets the current time zone */
#define HAVE_TZSET 1
/* several floating point functions (ISO C99) */
#define HAVE_EXPF 1
#define HAVE_LOGF 1
#define HAVE_SQRTF 1
#define HAVE_COSF 1
#define HAVE_SINF 1
#define HAVE_TANF 1
#define HAVE_SINHF 1
#define HAVE_COSHF 1
#define HAVE_TANHF 1
#define HAVE_FLOORF 1
#define HAVE_CEILF 1
#define HAVE_FABSF 1
#define HAVE_FREXPF 1
#define HAVE_LDEXPF 1
#define HAVE_LOG1P 1
#define HAVE_LOG1PF 1
#define HAVE_LOG1PL 1
/* #undef HAVE_COPYSIGNF */
/* #undef HAVE_COPYSIGN */
/* #undef HAVE_COPYSIGNL */
/* whether we have sched_yield() that gives priority to other threads */
/* #undef HAVE_SCHED_YIELD */
/* uname() for system identification */
/* #undef HAVE_UNAME */
#define HAVE_UNISTD_H 1
/* #undef HAVE_SYS_WAIT_H */
/* size of long long */
#define MKCL_LONG_LONG_BITS 64
/* what characters are used to mark beginning of new line */
#define MKCL_NEWLINE_IS_CRLF 1
/* #undef MKCL_NEWLINE_IS_LFCR */
/*
* PARAMETERS:
*/
/* We allocate a number of strings in a pool which is used to speed up reading */
#define MKCL_MAX_STRING_POOL_SIZE 10
#define MKCL_BUFFER_STRING_SIZE 128
/* #undef FILE_CNT */
#if 3 == 1
# define FILE_CNT(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr)
#endif
#if 3 == 2
# define FILE_CNT(fp) ((fp)->_r)
#endif
#if 3 == 3
# define FILE_CNT(fp) ((fp)->_cnt)
#endif
#if defined(cygwin) || defined(__MINGW32__) || defined(_MSC_VER)
# define MKCL_IS_DIR_SEPARATOR(x) (((x)=='/')||((x)=='\\'))
# if 0
# define MKCL_DIR_SEPARATOR '/'
# else
# define MKCL_DIR_SEPARATOR '\\'
# endif
# define MKCL_PATH_SEPARATOR ';'
#else
# define MKCL_IS_DIR_SEPARATOR(x) ((x)=='/')
# define MKCL_DIR_SEPARATOR '/'
# define MKCL_PATH_SEPARATOR ':'
#endif
#define MKCL_ARCHITECTURE "X86_64"
#if defined(__i386) || defined(__x86_64)
# define MKCL_LSB_FIRST 1 /* On Intel and compatibles, the Least Significant Bit comes first (bit 0). */
# define MKCL_LITTLE_ENDIAN 1
#endif
#ifdef MKCL_AVOID_FPE_H
# define mkcl_detect_fpe()
#elif defined(__i386) || defined(__x86_64)
# ifdef _MSC_VER
# define mkcl_detect_fpe() __asm fwait
# elif defined(__GNUC__)
# define mkcl_detect_fpe() asm("fwait")
# else
# error "Macro mkcl_detect_fpe() is not defined for this architecture."
# endif
#else
# define mkcl_detect_fpe() (void)0
#endif
#endif /* MKCL_CONFIG_H_2 */