mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-01 15:20:36 -08:00
+ The tests for the type and size of cl_fixnum have been grouped.
FIXNUM_BITS and CHAR_BIT do not rely now on "char" being 8-bit large. + All configuration settings are now grouped in config.h. This file has two parts, and the second one, containing flags which are only needed during the build process, is deleted when installing ECL. + File critical.h merged into lwp.h.
This commit is contained in:
parent
c7d4c73767
commit
cfb16c1920
23 changed files with 264 additions and 308 deletions
|
|
@ -1016,8 +1016,8 @@ ECL 0.7
|
|||
RECURSIVE-P is NIL. Furthermore, EOF is detected when EOF-ERROR-P
|
||||
is true, regardless of the value of RECURSIVE-P.
|
||||
|
||||
ECL 0.7b
|
||||
========
|
||||
ECL 0.8
|
||||
=======
|
||||
|
||||
* Errors fixed:
|
||||
|
||||
|
|
@ -1112,6 +1112,19 @@ ECL 0.7b
|
|||
|
||||
- cl_special_form_p() renamed to cl_special_operator_p().
|
||||
|
||||
- If a wrong number of arguments is passed to a function, the name of
|
||||
the function is mentioned in the error message, whenever possible.
|
||||
|
||||
- The tests for the type and size of cl_fixnum have been
|
||||
grouped. FIXNUM_BITS and CHAR_BIT do not rely now on "char" being
|
||||
8-bit large.
|
||||
|
||||
- All configuration settings are now grouped in config.h. This file
|
||||
has two parts, and the second one, containing flags which are only
|
||||
needed during the build process, is deleted when installing ECL.
|
||||
|
||||
- File critical.h merged into lwp.h.
|
||||
|
||||
* ANSI compatibility:
|
||||
|
||||
- DEFINE-SYMBOL-MACRO finally implemented.
|
||||
|
|
@ -1120,6 +1133,13 @@ ECL 0.7b
|
|||
|
||||
- Added function ENSURE-DIRECTORIES-EXIST.
|
||||
|
||||
- CODE-CHAR would reject negative numbers.
|
||||
|
||||
- Remove si::*inhibit-macro-special*. When a special operator is
|
||||
redefined as a macro, preserve the special nature of the
|
||||
operator. Complain when user tries to redefine a special operator
|
||||
as a function.
|
||||
|
||||
TODO:
|
||||
=====
|
||||
|
||||
|
|
|
|||
60
src/aclocal.m4
vendored
60
src/aclocal.m4
vendored
|
|
@ -99,6 +99,9 @@ configure___LDFLAGS=LDFLAGS
|
|||
configure___SHARED_LDFLAGS=SHARED_LDFLAGS
|
||||
#endif
|
||||
|
||||
configure___ecl_setjmp=ecl_setjmp
|
||||
configure___ecl_longjmp=ecl_longjmp
|
||||
|
||||
configure___architecture=ARCHITECTURE
|
||||
configure___software_type=SOFTWARE_TYPE
|
||||
configure___software_version=SOFTWARE_VERSION
|
||||
|
|
@ -127,6 +130,10 @@ AC_MSG_CHECKING(for software type)
|
|||
AC_MSG_RESULT([${software_type}])
|
||||
AC_MSG_CHECKING(for software version)
|
||||
AC_MSG_RESULT([${software_version}])
|
||||
AC_MSG_CHECKING(use setjmp or _setjmp)
|
||||
AC_MSG_RESULT([${ecl_setjmp}])
|
||||
AC_MSG_CHECKING(use longjmp or _longjmp)
|
||||
AC_MSG_RESULT([${ecl_longjmp}])
|
||||
])
|
||||
dnl
|
||||
dnl --------------------------------------------------------------
|
||||
|
|
@ -196,46 +203,37 @@ dnl enough that convertion back and forth to pointer implies no
|
|||
dnl loss of information.
|
||||
AC_DEFUN(ECL_FIXNUM_TYPE,[
|
||||
AC_MSG_CHECKING(appropiate type for fixnums)
|
||||
dnl
|
||||
dnl 1.- Guess the type of a fixnum
|
||||
dnl
|
||||
AC_TRY_RUN([#include <stdio.h>
|
||||
int main() {
|
||||
const char *int_type;
|
||||
int bits;
|
||||
FILE *f=fopen("conftestval", "w");
|
||||
if (!f) exit(1);
|
||||
if (sizeof(int) >= sizeof(void*)) {
|
||||
fprintf(f, "int\n");
|
||||
unsigned int t = 1, l;
|
||||
int_type="int";
|
||||
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
|
||||
l = (~0) << (bits - 2);
|
||||
fprintf(f,"CL_FIXNUM_MIN='%d';",l);
|
||||
fprintf(f,"CL_FIXNUM_MAX='%d';",-(l+1));
|
||||
} else if (sizeof(long) >= sizeof(void*)) {
|
||||
fprintf(f, "long\n");
|
||||
unsigned long int t = 1, l;
|
||||
int_type="long int";
|
||||
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
|
||||
l = (~0) << (bits - 2);
|
||||
fprintf(f,"CL_FIXNUM_MIN='%ld';",l);
|
||||
fprintf(f,"CL_FIXNUM_MAX='%ld';",-(l+1));
|
||||
} else
|
||||
exit(1);
|
||||
fprintf(f,"CL_FIXNUM_TYPE='%s';",int_type);
|
||||
fprintf(f,"CL_FIXNUM_BITS='%d'",bits);
|
||||
exit(0);
|
||||
}],
|
||||
cl_fixnum=`cat conftestval`
|
||||
AC_MSG_RESULT([${cl_fixnum}])
|
||||
AC_DEFINE_UNQUOTED(CL_FIXNUM_TYPE,${cl_fixnum}),
|
||||
AC_MSG_ERROR(There is no appropiate integer type for the cl_fixnum type))
|
||||
dnl
|
||||
dnl 2.- Guess the size of a fixnum
|
||||
dnl
|
||||
AC_MSG_CHECKING(most positive fixnum)
|
||||
AC_TRY_RUN([#include <stdio.h>
|
||||
int main() {
|
||||
${cl_fixnum} i=0,j,k;
|
||||
FILE *f=fopen("conftestval", "w");
|
||||
if (!f) exit(1);
|
||||
do {
|
||||
k = i * 2 + 1;
|
||||
if (k == i) exit(1);
|
||||
i = k;
|
||||
j = (i << 2) >> 2;
|
||||
fprintf(stderr,"%d\n",i);
|
||||
} while (i == j);
|
||||
fprintf(f, "0x%xL\n", (long)i >> 1);
|
||||
exit(0);
|
||||
}],
|
||||
cl_fixnum_limit=`cat conftestval`
|
||||
AC_MSG_RESULT([${cl_fixnum_limit}])
|
||||
AC_DEFINE_UNQUOTED(MOST_POSITIVE_FIXNUM, ${cl_fixnum_limit}),
|
||||
eval "`cat conftestval`"
|
||||
AC_MSG_RESULT([${CL_FIXNUM_TYPE}])
|
||||
AC_SUBST(CL_FIXNUM_TYPE)
|
||||
AC_SUBST(CL_FIXNUM_BITS)
|
||||
AC_SUBST(CL_FIXNUM_MAX)
|
||||
AC_SUBST(CL_FIXNUM_MIN),
|
||||
AC_MSG_ERROR(There is no appropiate integer type for the cl_fixnum type))
|
||||
])
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ HFILES = ../h/config.h $(HDIR)/ecl.h $(HDIR)/ecl-cmp.h\
|
|||
$(HDIR)/machines.h $(HDIR)/object.h $(HDIR)/cs.h $(HDIR)/stacks.h\
|
||||
$(HDIR)/external.h $(HDIR)/eval.h\
|
||||
$(HDIR)/number.h $(HDIR)/page.h $(HDIR)/unify.h\
|
||||
$(HDIR)/lwp.h $(HDIR)/critical.h
|
||||
$(HDIR)/lwp.h
|
||||
OBJS = main.o symbol.o package.o list.o\
|
||||
apply.o eval.o interpreter.o compiler.o disassembler.o \
|
||||
clos.o instance.o gfun.o reference.o character.o\
|
||||
|
|
@ -57,6 +57,8 @@ all: $(DPP) ../libecl.a cinit.o
|
|||
|
||||
install: $(HFILES)
|
||||
$(INSTALL_DATA) $(HFILES) $(PREFIX)$(libdir)/h/
|
||||
sed ',-CUT-,$$d' ../h/config.h > ../h/config-install.h
|
||||
$(INSTALL_DATA) ../h/config-install.h $(PREFIX)$(libdir)/h/config.h
|
||||
|
||||
../libecl.a: $(OBJS)
|
||||
ar cr $@ $(OBJS)
|
||||
|
|
|
|||
|
|
@ -14,12 +14,9 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include "ecl.h"
|
||||
|
||||
#ifndef CHAR_BIT
|
||||
#define CHAR_BIT (sizeof(char)*8)
|
||||
#endif
|
||||
|
||||
static void displace (cl_object from, cl_object to, cl_object offset);
|
||||
static void check_displaced (cl_object dlist, cl_object orig, cl_index newdim);
|
||||
extern cl_elttype get_elttype (cl_object x);
|
||||
|
|
|
|||
|
|
@ -14,13 +14,10 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include "ecl.h"
|
||||
#include "ecl-inl.h"
|
||||
|
||||
#ifndef CHAR_BIT
|
||||
#define CHAR_BIT (sizeof(char)*8)
|
||||
#endif
|
||||
|
||||
cl_object
|
||||
si_specialp(cl_object sym)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
|
||||
#include <ecl.h>
|
||||
#include "machines.h"
|
||||
|
||||
#if defined(BSD) && !defined(MSDOS)
|
||||
#include <sys/ioctl.h>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
*/
|
||||
|
||||
#include "ecl.h"
|
||||
#include "machines.h"
|
||||
#include "ecl-inl.h"
|
||||
|
||||
#ifdef __mips
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ int data_start = (int)&data_start;
|
|||
|
||||
#include <stdlib.h>
|
||||
#include "ecl.h"
|
||||
#include "machines.h"
|
||||
#ifdef TK
|
||||
# include "tk.h"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -14,15 +14,13 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <ctype.h>
|
||||
#include "ecl.h"
|
||||
#include "internal.h"
|
||||
#include "ecl-inl.h"
|
||||
|
||||
#ifndef CHAR_BIT
|
||||
#define CHAR_BIT (sizeof(char)*8)
|
||||
#endif
|
||||
|
||||
/******************************* EXPORTS ******************************/
|
||||
|
||||
cl_object standard_readtable;
|
||||
|
|
|
|||
|
|
@ -14,13 +14,10 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
#include "ecl.h"
|
||||
#include "ecl-inl.h"
|
||||
|
||||
#ifndef CHAR_BIT
|
||||
#define CHAR_BIT (sizeof(char)*8)
|
||||
#endif
|
||||
|
||||
#undef endp
|
||||
|
||||
#define endp(obje) (endp_temp = (obje), CONSP(endp_temp) ? \
|
||||
|
|
|
|||
|
|
@ -20,8 +20,9 @@
|
|||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/stat.h>
|
||||
#include "ecl.h"
|
||||
#include <stdlib.h>
|
||||
#include "ecl.h"
|
||||
#include "machines.h"
|
||||
#ifdef BSD
|
||||
#include <dirent.h>
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -14,76 +14,9 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ecl.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#if 0
|
||||
#if !defined(__stdlib_h) && !defined(_STDLIB_H_) && !defined(__STDLIB_H__) && !defined(_STDLIB_H)
|
||||
#include <signal.h>
|
||||
int
|
||||
system(const char *command)
|
||||
{
|
||||
char buf[4];
|
||||
extern sigint();
|
||||
|
||||
signal(SIGINT, SIG_IGN);
|
||||
write(4, command, strlen(command)+1);
|
||||
read(5, buf, 1);
|
||||
signal(SIGINT, sigint);
|
||||
return(buf[0]<<8);
|
||||
}
|
||||
#endif /* __STDLIB_H__ */
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||
|
||||
/* due to the calls to realloc in system.c/exec.c (memory which hasn't been
|
||||
malloc'ed can't be realloced in ecl) we have to patch this a bit.
|
||||
We use execv and supply the arg list, so execl doesn't have to realloc. CvdL */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/signal.h>
|
||||
#include <sys/wait.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <unistd.h>
|
||||
#include <paths.h>
|
||||
|
||||
int
|
||||
system(const char *command)
|
||||
{
|
||||
union wait pstat;
|
||||
pid_t pid;
|
||||
int omask;
|
||||
sig_t intsave, quitsave;
|
||||
|
||||
if (!command) /* just checking... */
|
||||
return(1);
|
||||
|
||||
omask = sigblock(sigmask(SIGCHLD));
|
||||
switch(pid = vfork()) {
|
||||
case -1: /* error */
|
||||
(void)sigsetmask(omask);
|
||||
pstat.w_status = 0;
|
||||
pstat.w_retcode = 127;
|
||||
return(pstat.w_status);
|
||||
case 0: { /* child */
|
||||
char *args[] = { "sh", "-c", command, (char *)NULL };
|
||||
(void)sigsetmask(omask);
|
||||
execv(_PATH_BSHELL, args);
|
||||
_exit(127);
|
||||
}
|
||||
}
|
||||
intsave = signal(SIGINT, SIG_IGN);
|
||||
quitsave = signal(SIGQUIT, SIG_IGN);
|
||||
pid = waitpid(pid, (int *)&pstat, 0);
|
||||
(void)sigsetmask(omask);
|
||||
(void)signal(SIGINT, intsave);
|
||||
(void)signal(SIGQUIT, quitsave);
|
||||
return(pid == -1 ? -1 : pstat.w_status);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#include "machines.h"
|
||||
|
||||
cl_object
|
||||
si_system(cl_object cmd)
|
||||
|
|
|
|||
109
src/configure
vendored
109
src/configure
vendored
|
|
@ -1312,8 +1312,6 @@ test -z "$host_alias" &&
|
|||
host_alias=$ac_cv_host
|
||||
|
||||
|
||||
ac_config_headers="$ac_config_headers h/config.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -3796,6 +3794,9 @@ configure___LDFLAGS=LDFLAGS
|
|||
configure___SHARED_LDFLAGS=SHARED_LDFLAGS
|
||||
#endif
|
||||
|
||||
configure___ecl_setjmp=ecl_setjmp
|
||||
configure___ecl_longjmp=ecl_longjmp
|
||||
|
||||
configure___architecture=ARCHITECTURE
|
||||
configure___software_type=SOFTWARE_TYPE
|
||||
configure___software_version=SOFTWARE_VERSION
|
||||
|
|
@ -3835,6 +3836,14 @@ echo "$as_me:$LINENO: checking for software version" >&5
|
|||
echo $ECHO_N "checking for software version... $ECHO_C" >&6
|
||||
echo "$as_me:$LINENO: result: ${software_version}" >&5
|
||||
echo "${ECHO_T}${software_version}" >&6
|
||||
echo "$as_me:$LINENO: checking use setjmp or _setjmp" >&5
|
||||
echo $ECHO_N "checking use setjmp or _setjmp... $ECHO_C" >&6
|
||||
echo "$as_me:$LINENO: result: ${ecl_setjmp}" >&5
|
||||
echo "${ECHO_T}${ecl_setjmp}" >&6
|
||||
echo "$as_me:$LINENO: checking use longjmp or _longjmp" >&5
|
||||
echo $ECHO_N "checking use longjmp or _longjmp... $ECHO_C" >&6
|
||||
echo "$as_me:$LINENO: result: ${ecl_longjmp}" >&5
|
||||
echo "${ECHO_T}${ecl_longjmp}" >&6
|
||||
|
||||
|
||||
if test "x$prefix" = "xNONE"; then prefix=${ac_default_prefix}; fi
|
||||
|
|
@ -4086,14 +4095,28 @@ else
|
|||
#include "confdefs.h"
|
||||
#include <stdio.h>
|
||||
int main() {
|
||||
const char *int_type;
|
||||
int bits;
|
||||
FILE *f=fopen("conftestval", "w");
|
||||
if (!f) exit(1);
|
||||
if (sizeof(int) >= sizeof(void*)) {
|
||||
fprintf(f, "int\n");
|
||||
unsigned int t = 1, l;
|
||||
int_type="int";
|
||||
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
|
||||
l = (~0) << (bits - 2);
|
||||
fprintf(f,"CL_FIXNUM_MIN='%d';",l);
|
||||
fprintf(f,"CL_FIXNUM_MAX='%d';",-(l+1));
|
||||
} else if (sizeof(long) >= sizeof(void*)) {
|
||||
fprintf(f, "long\n");
|
||||
unsigned long int t = 1, l;
|
||||
int_type="long int";
|
||||
for (bits=0; ((t << 1) >> 1) == t; bits++, t <<= 1);
|
||||
l = (~0) << (bits - 2);
|
||||
fprintf(f,"CL_FIXNUM_MIN='%ld';",l);
|
||||
fprintf(f,"CL_FIXNUM_MAX='%ld';",-(l+1));
|
||||
} else
|
||||
exit(1);
|
||||
fprintf(f,"CL_FIXNUM_TYPE='%s';",int_type);
|
||||
fprintf(f,"CL_FIXNUM_BITS='%d'",bits);
|
||||
exit(0);
|
||||
}
|
||||
_ACEOF
|
||||
|
|
@ -4108,67 +4131,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
|||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
cl_fixnum=`cat conftestval`
|
||||
echo "$as_me:$LINENO: result: ${cl_fixnum}" >&5
|
||||
echo "${ECHO_T}${cl_fixnum}" >&6
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define CL_FIXNUM_TYPE ${cl_fixnum}
|
||||
_ACEOF
|
||||
eval "`cat conftestval`"
|
||||
echo "$as_me:$LINENO: result: ${CL_FIXNUM_TYPE}" >&5
|
||||
echo "${ECHO_T}${CL_FIXNUM_TYPE}" >&6
|
||||
|
||||
|
||||
|
||||
else
|
||||
echo "$as_me: program exited with status $ac_status" >&5
|
||||
echo "$as_me: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
( exit $ac_status )
|
||||
{ { echo "$as_me:$LINENO: error: There is no appropiate integer type for the cl_fixnum type" >&5
|
||||
echo "$as_me: error: There is no appropiate integer type for the cl_fixnum type" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
echo "$as_me:$LINENO: checking most positive fixnum" >&5
|
||||
echo $ECHO_N "checking most positive fixnum... $ECHO_C" >&6
|
||||
if test "$cross_compiling" = yes; then
|
||||
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5
|
||||
echo "$as_me: error: cannot run test program while cross compiling" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
#line $LINENO "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdio.h>
|
||||
int main() {
|
||||
${cl_fixnum} i=0,j,k;
|
||||
FILE *f=fopen("conftestval", "w");
|
||||
if (!f) exit(1);
|
||||
do {
|
||||
k = i * 2 + 1;
|
||||
if (k == i) exit(1);
|
||||
i = k;
|
||||
j = (i << 2) >> 2;
|
||||
fprintf(stderr,"%d\n",i);
|
||||
} while (i == j);
|
||||
fprintf(f, "0x%xL\n", (long)i >> 1);
|
||||
exit(0);
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
cl_fixnum_limit=`cat conftestval`
|
||||
echo "$as_me:$LINENO: result: ${cl_fixnum_limit}" >&5
|
||||
echo "${ECHO_T}${cl_fixnum_limit}" >&6
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define MOST_POSITIVE_FIXNUM ${cl_fixnum_limit}
|
||||
_ACEOF
|
||||
|
||||
else
|
||||
echo "$as_me: program exited with status $ac_status" >&5
|
||||
|
|
@ -5614,6 +5582,10 @@ ac_config_files="$ac_config_files compile.lsp compile_rest.lsp bare.lsp lsp/conf
|
|||
|
||||
ac_config_files="$ac_config_files ecl-config:util/ecl-config"
|
||||
|
||||
ac_config_files="$ac_config_files h/configpre:h/config.h.in"
|
||||
|
||||
ac_config_headers="$ac_config_headers h/config.h:h/configpre"
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
# This file is a shell script that caches the results of configure
|
||||
# tests run on this system so they can be shared between configure
|
||||
|
|
@ -6106,7 +6078,8 @@ do
|
|||
"cmp/defsys.lsp" ) CONFIG_FILES="$CONFIG_FILES cmp/defsys.lsp" ;;
|
||||
"clos/defsys.lsp" ) CONFIG_FILES="$CONFIG_FILES clos/defsys.lsp" ;;
|
||||
"ecl-config" ) CONFIG_FILES="$CONFIG_FILES ecl-config:util/ecl-config" ;;
|
||||
"h/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS h/config.h" ;;
|
||||
"h/configpre" ) CONFIG_FILES="$CONFIG_FILES h/configpre:h/config.h.in" ;;
|
||||
"h/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS h/config.h:h/configpre" ;;
|
||||
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
|
||||
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
|
|
@ -6223,6 +6196,8 @@ s,@SHARED_LDFLAGS@,$SHARED_LDFLAGS,;t t
|
|||
s,@architecture@,$architecture,;t t
|
||||
s,@software_type@,$software_type,;t t
|
||||
s,@software_version@,$software_version,;t t
|
||||
s,@ecl_setjmp@,$ecl_setjmp,;t t
|
||||
s,@ecl_longjmp@,$ecl_longjmp,;t t
|
||||
s,@SHORT_SITE_NAME@,$SHORT_SITE_NAME,;t t
|
||||
s,@LONG_SITE_NAME@,$LONG_SITE_NAME,;t t
|
||||
s,@EXTRA_OBJS@,$EXTRA_OBJS,;t t
|
||||
|
|
@ -6241,6 +6216,10 @@ s,@MACHINE_VERSION@,$MACHINE_VERSION,;t t
|
|||
s,@OS_TYPE@,$OS_TYPE,;t t
|
||||
s,@OS_RELEASE@,$OS_RELEASE,;t t
|
||||
s,@DOWN_STACK@,$DOWN_STACK,;t t
|
||||
s,@CL_FIXNUM_TYPE@,$CL_FIXNUM_TYPE,;t t
|
||||
s,@CL_FIXNUM_BITS@,$CL_FIXNUM_BITS,;t t
|
||||
s,@CL_FIXNUM_MAX@,$CL_FIXNUM_MAX,;t t
|
||||
s,@CL_FIXNUM_MIN@,$CL_FIXNUM_MIN,;t t
|
||||
s,@X_CFLAGS@,$X_CFLAGS,;t t
|
||||
s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
|
||||
s,@X_LIBS@,$X_LIBS,;t t
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ AC_SUBST(ECL_VERSION)
|
|||
dnl Guess operating system of host. We do not allow cross-compiling.
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
AC_CONFIG_HEADER(h/config.h)
|
||||
AC_SUBST(host)
|
||||
AC_SUBST(bindir)
|
||||
AC_SUBST(mandir)
|
||||
|
|
@ -109,6 +108,8 @@ AC_SUBST(SHARED_LDFLAGS)dnl Flags for shared libraries linker
|
|||
AC_SUBST(architecture)dnl Type of processor for which this is compiled
|
||||
AC_SUBST(software_type)dnl Type of operating system
|
||||
AC_SUBST(software_version)dnl Version number of operating system
|
||||
AC_SUBST(ecl_setjmp)dnl Function to use for setjmp
|
||||
AC_SUBST(ecl_longjmp)dnl Function to use for longjmp
|
||||
AC_SUBST(SHORT_SITE_NAME)dnl Short name for the machine we built this on
|
||||
AC_SUBST(LONG_SITE_NAME)dnl Long name for the machine we built this on
|
||||
AC_SUBST(EXTRA_OBJS)dnl Extra *.o files to be compiled into libecl.a
|
||||
|
|
@ -321,10 +322,15 @@ fi
|
|||
dnl ---------------------------------------------------------------------
|
||||
dnl Final pass over configuration files
|
||||
dnl
|
||||
dnl Notice that we build ${builddir}/h/configpre.h fron ${srcdir}/h/config.h.in,
|
||||
dnl and then use all AC_DEF* to build h/config.h from h/configpre.h
|
||||
dnl
|
||||
AC_CONFIG_FILES(compile.lsp compile_rest.lsp bare.lsp
|
||||
lsp/config.lsp cmp/cmpcfg.lsp lsp/load.lsp clos/load.lsp cmp/load.lsp
|
||||
../Makefile Makefile c/Makefile doc/Makefile
|
||||
tk/Makefile clx/defsys.lsp tests/Makefile ansi-tests/Makefile gabriel/Makefile
|
||||
lsp/defsys.lsp cmp/defsys.lsp clos/defsys.lsp)
|
||||
AC_CONFIG_FILES([ecl-config:util/ecl-config],[chmod +x ecl-config])
|
||||
AC_CONFIG_FILES([h/configpre:h/config.h.in])
|
||||
AC_CONFIG_HEADER([h/config.h:h/configpre])
|
||||
AC_OUTPUT
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
*/
|
||||
/*
|
||||
Copyright (c) 1990, Giuseppe Attardi.
|
||||
Copyright (c) 2001, Juan Jose Garcia Ripoll.
|
||||
|
||||
ECoLisp is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
|
|
@ -12,17 +13,77 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* FEATURES LINKED IN
|
||||
*/
|
||||
/* Always use CLOS */
|
||||
#define CLOS
|
||||
|
||||
/* -------------------------------------------------------------------- *
|
||||
* OPTIONS *
|
||||
* -------------------------------------------------------------------- */
|
||||
/* Use Boehm's garbage collector */
|
||||
#undef GBC_BOEHM
|
||||
|
||||
#define CLOS /* Always use CLOS */
|
||||
/* Userland threads? */
|
||||
#undef THREADS
|
||||
#undef TK
|
||||
|
||||
/* Network streams */
|
||||
#undef TCP
|
||||
|
||||
/*
|
||||
* C TYPES AND SYSTEM LIMITS
|
||||
*/
|
||||
/*
|
||||
* The integer type
|
||||
*
|
||||
* cl_fixnum 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 FIXNUM_BITS @CL_FIXNUM_BITS@
|
||||
#define MOST_POSITIVE_FIXNUM ((cl_fixnum)@CL_FIXNUM_MAX@)
|
||||
#define MOST_NEGATIVE_FIXNUM ((cl_fixnum)@CL_FIXNUM_MIN@)
|
||||
|
||||
typedef @CL_FIXNUM_TYPE@ cl_fixnum;
|
||||
typedef unsigned @CL_FIXNUM_TYPE@ cl_index;
|
||||
typedef unsigned @CL_FIXNUM_TYPE@ cl_hashkey;
|
||||
|
||||
/*
|
||||
* The character type
|
||||
*/
|
||||
#define CHAR_CODE_LIMIT 256
|
||||
|
||||
/*
|
||||
* Array limits
|
||||
*/
|
||||
#define ARANKLIM 64 /* array rank limit */
|
||||
#define ADIMLIM 16*1024*1024 /* array dimension limit */
|
||||
#define ATOTLIM 16*1024*1024 /* array total limit */
|
||||
|
||||
/*
|
||||
* Function limits
|
||||
*/
|
||||
/* Maximum number of function arguments */
|
||||
#define CALL_ARGUMENTS_LIMIT @CL_FIXNUM_MAX@
|
||||
|
||||
/* Maximum number of required arguments */
|
||||
#define LAMBDA_PARAMETERS_LIMIT 64
|
||||
|
||||
/* Numb. of args. which can be passed using the C stack */
|
||||
#define C_ARGUMENTS_LIMIT 64
|
||||
|
||||
/* Which functions to use for setting jump points */
|
||||
#define ecl_setjmp @ecl_setjmp@
|
||||
#define ecl_longjmp @ecl_longjmp@
|
||||
|
||||
|
||||
/* -CUT-: Everything below this mark will not be installed */
|
||||
/* -------------------------------------------------------------------- *
|
||||
* BUILD OPTIONS WHICH NEED NOT BE EXPORTED *
|
||||
* -------------------------------------------------------------------- */
|
||||
/*
|
||||
* FEATURES LINKED IN:
|
||||
*/
|
||||
|
||||
/* CLX */
|
||||
#undef CLX
|
||||
/* Locatives */
|
||||
|
|
@ -37,51 +98,21 @@
|
|||
/* Program Development Environment */
|
||||
#undef PDE
|
||||
|
||||
/* Use Boehm's garbage collector */
|
||||
#undef GBC_BOEHM
|
||||
/* Tcl/Tk library */
|
||||
#undef TK
|
||||
|
||||
/* Allow loading dynamically linked code */
|
||||
#undef ENABLE_DLOPEN
|
||||
|
||||
/* Undefine this if you do not want ECL to check for circular lists */
|
||||
/* Undefine this if you do not want ECL to check for circular lists */
|
||||
#define ECL_SAFE
|
||||
|
||||
/* Allow STREAM operations to work on arbitrary objects */
|
||||
#undef ECL_CLOS_STREAMS
|
||||
|
||||
/* -------------------------------------------------------------------- *
|
||||
* PARAMETERS *
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#define LISP_PAGESIZE 2048 /* Page size in bytes */
|
||||
#define MAXPAGE 16384 /* Maximum Memory Size */
|
||||
#define BDSSIZE 2048 /* Size of Binding Stack */
|
||||
#define BDSGETA 16 /* Safety zone of BDS */
|
||||
#define FRSSIZE 1024 /* Size of Frame Stack */
|
||||
#define FRSGETA 16 /* Safety zone of FRS */
|
||||
#ifdef THREADS
|
||||
#define CSSIZE 7500 /* Size of C Stack of each thread */
|
||||
#define CSGETA 500
|
||||
#else
|
||||
#define CSSIZE 20000 /* Size of C Stack */
|
||||
#define CSGETA 4000
|
||||
#endif
|
||||
#define VSSIZE 128 /* Size of return values stack */
|
||||
/* Maximum number of function arguments */
|
||||
#define CALL_ARGUMENTS_LIMIT MOST_POSITIVE_FIXNUM
|
||||
/* Maximum number of required arguments */
|
||||
#define LAMBDA_PARAMETERS_LIMIT 64
|
||||
/* Numb. of args. which can be passed using the C stack */
|
||||
#define C_ARGUMENTS_LIMIT 64
|
||||
|
||||
#define BIGNUM_REGISTER_SIZE 16 /* Size in words of each register */
|
||||
|
||||
/* -------------------------------------------------------------------- *
|
||||
* SYSTEM FEATURES *
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#define CL_FIXNUM_TYPE 1 /* Integer type for fixnums */
|
||||
#define MOST_POSITIVE_FIXNUM 1 /* Positive limit for fixnums */
|
||||
/*
|
||||
* SYSTEM FEATURES:
|
||||
*/
|
||||
|
||||
/* Stack grows downwards */
|
||||
#undef DOWN_STACK
|
||||
|
|
@ -97,3 +128,33 @@
|
|||
#undef HAVE_ISNANF
|
||||
/* float.h for epsilons, maximum real numbers, etc */
|
||||
#undef HAVE_FLOAT_H
|
||||
|
||||
/*
|
||||
* PARAMETERS:
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory limits for the old garbage collector.
|
||||
*/
|
||||
#define LISP_PAGESIZE 2048 /* Page size in bytes */
|
||||
#define MAXPAGE 16384 /* Maximum Memory Size */
|
||||
|
||||
/*
|
||||
* The lisp environment has several stacks. These are their limits:
|
||||
*/
|
||||
#define BDSSIZE 2048 /* Size of Binding Stack */
|
||||
#define BDSGETA 16 /* Safety zone of BDS */
|
||||
#define FRSSIZE 1024 /* Size of Frame Stack */
|
||||
#define FRSGETA 16 /* Safety zone of FRS */
|
||||
#ifdef THREADS
|
||||
#define CSSIZE 7500 /* Size of C Stack of each thread */
|
||||
#define CSGETA 500
|
||||
#else
|
||||
#define CSSIZE 20000 /* Size of C Stack */
|
||||
#define CSGETA 4000
|
||||
#endif
|
||||
#define VSSIZE 128 /* Size of return values stack */
|
||||
|
||||
/* We reserve these many bytes for computation with bignums registers */
|
||||
#define BIGNUM_REGISTER_SIZE 16
|
||||
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
critical.h -- Mutual exclusion.
|
||||
*/
|
||||
/*
|
||||
Copyright (c) 1990, Giuseppe Attardi.
|
||||
|
||||
ECoLisp is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* SCHEDULER STOPPING
|
||||
*/
|
||||
#ifdef THREADS
|
||||
#define BUSY 1
|
||||
#define CRITICAL 5
|
||||
#define ACTIVE 1
|
||||
#define INACTIVE 0
|
||||
#define SCHEDULER_INT 1
|
||||
#define ERROR_INT 2
|
||||
|
||||
extern bool scheduler_interrupted;
|
||||
extern int critical_level;
|
||||
|
||||
#define start_critical_section() {critical_level++;}
|
||||
|
||||
#define end_critical_section() { critical_level--; \
|
||||
if (scheduler_interrupted) \
|
||||
if (critical_level == 0) \
|
||||
interruption_handler(); }
|
||||
#endif /* THREADS */
|
||||
|
||||
/*
|
||||
* EMPTY MACROS FOR SINGLE-THREADED CODE
|
||||
*/
|
||||
#ifndef THREADS
|
||||
#define start_critical_section()
|
||||
#define end_critical_section()
|
||||
#endif /* !THREADS */
|
||||
|
|
@ -13,20 +13,22 @@
|
|||
See file '../Copyright' for full details.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "machines.h"
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <setjmp.h>
|
||||
#include <math.h>
|
||||
#include <sys/types.h>
|
||||
#include "config.h"
|
||||
#include "gmp.h"
|
||||
#include "object.h"
|
||||
#include "stacks.h"
|
||||
#ifdef THREADS
|
||||
#include "lwp.h"
|
||||
#include "critical.h"
|
||||
# include "lwp.h"
|
||||
#else
|
||||
# define start_critical_section()
|
||||
# define end_critical_section()
|
||||
#endif
|
||||
#include "external.h"
|
||||
#include "eval.h"
|
||||
|
|
@ -40,12 +42,6 @@
|
|||
if ((int *)(&narg) < cs_limit) \
|
||||
cs_overflow()
|
||||
|
||||
#define LINK_ARGS &narg
|
||||
#define TRAMPOLINK(narg, vv, lk) \
|
||||
cl_va_list args; cl_va_start(args, narg, narg, 0); \
|
||||
return(link_call(vv, (cl_objectfn *)lk, narg, args))
|
||||
|
||||
#define cclosure_call funcall
|
||||
|
||||
#define Creturn(v) return((VALUES(0)=(v),1))
|
||||
#define Cexit return(0)
|
||||
|
|
|
|||
|
|
@ -15,21 +15,22 @@
|
|||
|
||||
#include <sys/param.h> /* includes <sys/signal.h> and <sys/types.h> */
|
||||
#include <sys/types.h> /* for EMX */
|
||||
#include "config.h"
|
||||
#include "machines.h"
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <setjmp.h>
|
||||
#include "config.h"
|
||||
#include "gmp.h"
|
||||
#include "object.h"
|
||||
#include "stacks.h"
|
||||
#include "critical.h"
|
||||
#ifdef THREADS
|
||||
# include "lwp.h"
|
||||
#else
|
||||
# define start_critical_section()
|
||||
# define end_critical_section()
|
||||
#endif
|
||||
#ifndef _ARGS
|
||||
#define _ARGS(x) x
|
||||
# define _ARGS(x) x
|
||||
#endif
|
||||
#include "external.h"
|
||||
/*#include "ecl-inl.h"*/
|
||||
|
|
|
|||
|
|
@ -16,6 +16,12 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* -------------------------------------------------------------------- *
|
||||
* FUNCTIONS, VARIABLES AND TYPES NOT FOR GENERAL USE *
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#include "machines.h"
|
||||
|
||||
/* all_symbols.d */
|
||||
|
||||
extern cl_index cl_num_symbols_in_core;
|
||||
|
|
@ -54,6 +60,9 @@ extern void edit_double(int n, double d, int *sp, char *s, int *ep);
|
|||
extern void cl_setup_printer(cl_object strm);
|
||||
extern void cl_write_object(cl_object x);
|
||||
|
||||
/* read.d */
|
||||
#define RTABSIZE CHAR_CODE_LIMIT /* read table size */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
20
src/h/lwp.h
20
src/h/lwp.h
|
|
@ -225,3 +225,23 @@ typedef struct pd {
|
|||
#define REALQUANTUM 100000 /* "" */
|
||||
|
||||
#define STACK_SIZE (CSSIZE+CSGETA) /* Words */
|
||||
|
||||
/*
|
||||
* SCHEDULER STOPPING
|
||||
*/
|
||||
#define BUSY 1
|
||||
#define CRITICAL 5
|
||||
#define ACTIVE 1
|
||||
#define INACTIVE 0
|
||||
#define SCHEDULER_INT 1
|
||||
#define ERROR_INT 2
|
||||
|
||||
extern bool scheduler_interrupted;
|
||||
extern int critical_level;
|
||||
|
||||
#define start_critical_section() {critical_level++;}
|
||||
|
||||
#define end_critical_section() { critical_level--; \
|
||||
if (scheduler_interrupted) \
|
||||
if (critical_level == 0) \
|
||||
interruption_handler(); }
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
# define stack_align(n) (((n) + 03) & ~03)
|
||||
#endif
|
||||
|
||||
#ifndef ecl_setjmp
|
||||
#if defined(linux)
|
||||
# define ecl_setjmp setjmp
|
||||
# define ecl_longjmp longjmp
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
# define ecl_setjmp _setjmp
|
||||
# define ecl_longjmp _longjmp
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
# define FILE_CNT(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr)
|
||||
|
|
|
|||
|
|
@ -19,15 +19,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
/*
|
||||
Some system constants.
|
||||
*/
|
||||
|
||||
/*
|
||||
INV: CHAR_CODE_LIMIT is a power of two and <= MOST_POSITIVE_FIXNUM/2
|
||||
INV: PHTABSIZE is a power of two
|
||||
INV: ARANKLIM is of type "index"
|
||||
INV: fixnum, cl_index are large enough to hold a pointer
|
||||
INV: symbol and cons share cons.car = symbol.dbind, cons.cdr = symbol.sfun.
|
||||
Integer and boolean types (see config.h)
|
||||
*/
|
||||
|
||||
#define TRUE 1 /* boolean true value */
|
||||
|
|
@ -35,20 +27,9 @@ extern "C" {
|
|||
|
||||
#define CHAR_CODE_LIMIT 256 /* ASCII character code limit */
|
||||
|
||||
#define PHTABSIZE 512 /* number of entries in the package hash table */
|
||||
|
||||
#define ARANKLIM 64 /* array rank limit */
|
||||
#define ADIMLIM 16*1024*1024 /* array dimension limit */
|
||||
#define ATOTLIM 16*1024*1024 /* array total limit */
|
||||
|
||||
#define RTABSIZE CHAR_CODE_LIMIT /* read table size */
|
||||
|
||||
#ifndef __cplusplus
|
||||
typedef int bool;
|
||||
#endif
|
||||
typedef CL_FIXNUM_TYPE cl_fixnum;
|
||||
typedef unsigned CL_FIXNUM_TYPE cl_index;
|
||||
typedef unsigned CL_FIXNUM_TYPE cl_hashkey;
|
||||
typedef unsigned char byte;
|
||||
|
||||
/*
|
||||
|
|
@ -73,8 +54,6 @@ typedef cl_object (*cl_objectfn)(int narg, ...);
|
|||
|
||||
/* Immediate fixnums: */
|
||||
#define FIXNUM_TAG 1
|
||||
#define FIXNUM_BITS ((sizeof)(cl_fixnum)/sizeof(byte)*8 - 2)
|
||||
#define MOST_NEGATIVE_FIXNUM (-MOST_POSITIVE_FIXNUM-1)
|
||||
#define MAKE_FIXNUM(n) ((cl_object)(((cl_fixnum)(n) << 2) | FIXNUM_TAG))
|
||||
#define FIXNUM_MINUSP(n) ((cl_fixnum)(n) < 0)
|
||||
#define FIXNUM_PLUSP(n) ((cl_fixnum)(n) >= (cl_fixnum)MAKE_FIXNUM(0))
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ extern size_t cssize;
|
|||
extern cl_object *Values;
|
||||
#else
|
||||
extern int NValues;
|
||||
extern cl_object Values[VSSIZE];
|
||||
extern cl_object Values[];
|
||||
#endif
|
||||
|
||||
/*****************************
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue