mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-04 16:30:48 -08:00
ECL now builds against third-party versions of the Boehm-Weiser garbage collector
This commit is contained in:
parent
4fcdcc9910
commit
f2ab7ade00
5 changed files with 348 additions and 42 deletions
|
|
@ -103,6 +103,11 @@ ECL 0.9i
|
|||
- SOCKET-MAKE-STREAM now takes an argument :BUFFERING-MODE with the same
|
||||
effect as SI::SET-BUFFERING-MODE's argument.
|
||||
|
||||
- ECL can be built against locally installed copies of the Boehm-Weiser
|
||||
garbage collector, as far as they are recent. This has been checked with
|
||||
OpenBSD & Ubuntu. You may need to supply appropiate LDFLAGS & CFLAGS for the
|
||||
configuration to detect the headers.
|
||||
|
||||
* MOP compatibility:
|
||||
|
||||
- SLOT-VALUE, SLOT-BOUNDP, etc, together with MOP SLOT*-USING-CLASS generic
|
||||
|
|
|
|||
|
|
@ -18,9 +18,6 @@
|
|||
#include <ecl/ecl.h>
|
||||
#include <ecl/internal.h>
|
||||
#include <ecl/page.h>
|
||||
#include <gc.h>
|
||||
#include <gc_mark.h>
|
||||
#include <private/gc_priv.h>
|
||||
|
||||
#ifdef GBC_BOEHM
|
||||
|
||||
|
|
@ -63,6 +60,7 @@ finalize(GC_PTR _o, GC_PTR _data)
|
|||
if (o->stream.file != NULL)
|
||||
fclose(o->stream.file);
|
||||
o->stream.file = NULL;
|
||||
o->stream.buffer = NULL;
|
||||
break;
|
||||
#ifdef ECL_THREADS
|
||||
case t_lock:
|
||||
|
|
@ -268,16 +266,16 @@ ecl_mark_env(struct cl_env_struct *env)
|
|||
{
|
||||
#if 1
|
||||
if (env->stack) {
|
||||
GC_push_conditional((ptr_t)env->stack, (ptr_t)env->stack_top, 1);
|
||||
GC_set_mark_bit((ptr_t)env->stack);
|
||||
GC_push_conditional((GC_PTR)env->stack, (GC_PTR)env->stack_top, 1);
|
||||
GC_set_mark_bit((GC_PTR)env->stack);
|
||||
}
|
||||
if (env->frs_top) {
|
||||
GC_push_conditional((ptr_t)env->frs_org, (ptr_t)(env->frs_top+1), 1);
|
||||
GC_set_mark_bit((ptr_t)env->frs_org);
|
||||
GC_push_conditional((GC_PTR)env->frs_org, (GC_PTR)(env->frs_top+1), 1);
|
||||
GC_set_mark_bit((GC_PTR)env->frs_org);
|
||||
}
|
||||
if (env->bds_top) {
|
||||
GC_push_conditional((ptr_t)env->bds_org, (ptr_t)(env->bds_top+1), 1);
|
||||
GC_set_mark_bit((ptr_t)env->bds_org);
|
||||
GC_push_conditional((GC_PTR)env->bds_org, (GC_PTR)(env->bds_top+1), 1);
|
||||
GC_set_mark_bit((GC_PTR)env->bds_org);
|
||||
}
|
||||
#endif
|
||||
#if 0
|
||||
|
|
@ -297,7 +295,7 @@ ecl_mark_env(struct cl_env_struct *env)
|
|||
GC_set_mark_bit((void *)env);
|
||||
#else
|
||||
/* When not using threads, "env" is a statically allocated structure. */
|
||||
GC_push_all((ptr_t)env, (ptr_t)(env + 1));
|
||||
GC_push_all((GC_PTR)env, (GC_PTR)(env + 1));
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
@ -312,14 +310,14 @@ stacks_scanner()
|
|||
for (i = 0; i < l->vector.fillp; i++) {
|
||||
cl_object dll = l->vector.self.t[i];
|
||||
if (dll->cblock.locked) {
|
||||
GC_push_conditional((ptr_t)dll, (ptr_t)(&dll->cblock + 1), 1);
|
||||
GC_set_mark_bit((ptr_t)dll);
|
||||
GC_push_conditional((GC_PTR)dll, (GC_PTR)(&dll->cblock + 1), 1);
|
||||
GC_set_mark_bit((GC_PTR)dll);
|
||||
}
|
||||
}
|
||||
GC_set_mark_bit((ptr_t)l->vector.self.t);
|
||||
GC_set_mark_bit((GC_PTR)l->vector.self.t);
|
||||
}
|
||||
GC_push_all((ptr_t)(&cl_core), (ptr_t)(&cl_core + 1));
|
||||
GC_push_all((ptr_t)cl_symbols, (ptr_t)(cl_symbols + cl_num_symbols_in_core));
|
||||
GC_push_all((GC_PTR)(&cl_core), (GC_PTR)(&cl_core + 1));
|
||||
GC_push_all((GC_PTR)cl_symbols, (GC_PTR)(cl_symbols + cl_num_symbols_in_core));
|
||||
#ifdef ECL_THREADS
|
||||
l = cl_core.processes;
|
||||
if (l == OBJNULL) {
|
||||
|
|
|
|||
317
src/configure
vendored
317
src/configure
vendored
|
|
@ -9814,27 +9814,322 @@ LSP_FEATURES="(cons :wants-rt ${LSP_FEATURES})"
|
|||
fi
|
||||
|
||||
|
||||
if test ${enable_boehm} = "included"; then
|
||||
{ echo "$as_me:$LINENO: Configuring included Boehm GC library:" >&5
|
||||
case "${enable_boehm}" in
|
||||
included)
|
||||
{ echo "$as_me:$LINENO: Configuring included Boehm GC library:" >&5
|
||||
echo "$as_me: Configuring included Boehm GC library:" >&6;}
|
||||
test -d gc && rm -rf gc
|
||||
if mkdir gc; then
|
||||
test -d gc && rm -rf gc
|
||||
if mkdir gc; then
|
||||
(destdir=`${PWDCMD}`; cd gc; \
|
||||
CC="${CC} ${PICFLAG}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
|
||||
$srcdir/gc/configure --disable-shared --prefix=${destdir} \
|
||||
--includedir=${destdir}/ecl/gc/ --libdir=${destdir} --build=${build_alias} \
|
||||
--host=${host_alias} ${boehm_configure_flags})
|
||||
ECL_BOEHM_GC_HEADER='ecl/gc/gc.h'
|
||||
ECL_BOEHM_GC_HEADER='ecl/gc/gc.h'
|
||||
else
|
||||
{ { echo "$as_me:$LINENO: error: Unable to create 'gc' directory" >&5
|
||||
echo "$as_me: error: Unable to create 'gc' directory" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
;;
|
||||
system)
|
||||
if test "${ac_cv_header_gc_h+set}" = set; then
|
||||
echo "$as_me:$LINENO: checking for gc.h" >&5
|
||||
echo $ECHO_N "checking for gc.h... $ECHO_C" >&6
|
||||
if test "${ac_cv_header_gc_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_header_gc_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_gc_h" >&6
|
||||
else
|
||||
# Is the header compilable?
|
||||
echo "$as_me:$LINENO: checking gc.h usability" >&5
|
||||
echo $ECHO_N "checking gc.h usability... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
#include <gc.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ (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); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (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
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
echo "${ECHO_T}$ac_header_compiler" >&6
|
||||
|
||||
# Is the header present?
|
||||
echo "$as_me:$LINENO: checking gc.h presence" >&5
|
||||
echo $ECHO_N "checking gc.h presence... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <gc.h>
|
||||
_ACEOF
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
|
||||
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null; then
|
||||
if test -s conftest.err; then
|
||||
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
|
||||
else
|
||||
if test -f /usr/include/gc/gc.h -o test -f /usr/local/include/gc/gc.h; then
|
||||
ECL_BOEHM_GC_HEADER='gc/gc.h'
|
||||
else
|
||||
ECL_BOEHM_GC_HEADER='gc.h'
|
||||
fi
|
||||
ac_cpp_err=
|
||||
fi
|
||||
else
|
||||
ECL_BOEHM_GC_HEADER='none'
|
||||
ac_cpp_err=yes
|
||||
fi
|
||||
if test -z "$ac_cpp_err"; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
echo "${ECHO_T}$ac_header_preproc" >&6
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: gc.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: proceeding with the compiler's result" >&5
|
||||
echo "$as_me: WARNING: gc.h: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: gc.h: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: gc.h: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: see the Autoconf documentation" >&5
|
||||
echo "$as_me: WARNING: gc.h: see the Autoconf documentation" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||
echo "$as_me: WARNING: gc.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: gc.h: proceeding with the preprocessor's result" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc.h: in the future, the compiler will take precedence" >&5
|
||||
echo "$as_me: WARNING: gc.h: in the future, the compiler will take precedence" >&2;}
|
||||
(
|
||||
cat <<\_ASBOX
|
||||
## ------------------------------ ##
|
||||
## Report this to the ecl lists. ##
|
||||
## ------------------------------ ##
|
||||
_ASBOX
|
||||
) |
|
||||
sed "s/^/$as_me: WARNING: /" >&2
|
||||
;;
|
||||
esac
|
||||
echo "$as_me:$LINENO: checking for gc.h" >&5
|
||||
echo $ECHO_N "checking for gc.h... $ECHO_C" >&6
|
||||
if test "${ac_cv_header_gc_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_cv_header_gc_h=$ac_header_preproc
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_header_gc_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_gc_h" >&6
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_gc_h = yes; then
|
||||
ECL_BOEHM_GC_HEADER='gc.h'
|
||||
fi
|
||||
|
||||
|
||||
if test -z "$ECL_BOEHM_GC_HEADER"; then
|
||||
if test "${ac_cv_header_gc_gc_h+set}" = set; then
|
||||
echo "$as_me:$LINENO: checking for gc/gc.h" >&5
|
||||
echo $ECHO_N "checking for gc/gc.h... $ECHO_C" >&6
|
||||
if test "${ac_cv_header_gc_gc_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_header_gc_gc_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_gc_gc_h" >&6
|
||||
else
|
||||
# Is the header compilable?
|
||||
echo "$as_me:$LINENO: checking gc/gc.h usability" >&5
|
||||
echo $ECHO_N "checking gc/gc.h usability... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
#include <gc/gc.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ (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); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (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
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
echo "${ECHO_T}$ac_header_compiler" >&6
|
||||
|
||||
# Is the header present?
|
||||
echo "$as_me:$LINENO: checking gc/gc.h presence" >&5
|
||||
echo $ECHO_N "checking gc/gc.h presence... $ECHO_C" >&6
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <gc/gc.h>
|
||||
_ACEOF
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
|
||||
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null; then
|
||||
if test -s conftest.err; then
|
||||
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
|
||||
else
|
||||
ac_cpp_err=
|
||||
fi
|
||||
else
|
||||
ac_cpp_err=yes
|
||||
fi
|
||||
if test -z "$ac_cpp_err"; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
echo "${ECHO_T}$ac_header_preproc" >&6
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: proceeding with the compiler's result" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: see the Autoconf documentation" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: see the Autoconf documentation" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: proceeding with the preprocessor's result" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: gc/gc.h: in the future, the compiler will take precedence" >&5
|
||||
echo "$as_me: WARNING: gc/gc.h: in the future, the compiler will take precedence" >&2;}
|
||||
(
|
||||
cat <<\_ASBOX
|
||||
## ------------------------------ ##
|
||||
## Report this to the ecl lists. ##
|
||||
## ------------------------------ ##
|
||||
_ASBOX
|
||||
) |
|
||||
sed "s/^/$as_me: WARNING: /" >&2
|
||||
;;
|
||||
esac
|
||||
echo "$as_me:$LINENO: checking for gc/gc.h" >&5
|
||||
echo $ECHO_N "checking for gc/gc.h... $ECHO_C" >&6
|
||||
if test "${ac_cv_header_gc_gc_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_cv_header_gc_gc_h=$ac_header_preproc
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_header_gc_gc_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_gc_gc_h" >&6
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_gc_gc_h = yes; then
|
||||
ECL_BOEHM_GC_HEADER='gc/gc.h'
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
if test -z "$ECL_BOEHM_GC_HEADER"; then
|
||||
{ { echo "$as_me:$LINENO: error: Boehm-Weiser garbage collector's headers not found" >&5
|
||||
echo "$as_me: error: Boehm-Weiser garbage collector's headers not found" >&2;}
|
||||
{ (exit 1); exit 1; }; }
|
||||
fi
|
||||
;;
|
||||
no)
|
||||
ECL_BOEHM_GC_HEADER='none';;
|
||||
*)
|
||||
{ { echo "$as_me:$LINENO: error: Not a valid argument for --enable-boehm $enable_boehm" >&5
|
||||
echo "$as_me: error: Not a valid argument for --enable-boehm $enable_boehm" >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
esac
|
||||
|
||||
|
||||
if test "${with_gmp}" = "no" ; then
|
||||
|
|
|
|||
|
|
@ -459,26 +459,35 @@ fi
|
|||
dnl ----------------------------------------------------------------------
|
||||
dnl Configure included Boehm GC if needed
|
||||
AC_SUBST(ECL_BOEHM_GC_HEADER)
|
||||
if test ${enable_boehm} = "included"; then
|
||||
AC_MSG_NOTICE([Configuring included Boehm GC library:])
|
||||
test -d gc && rm -rf gc
|
||||
if mkdir gc; then
|
||||
case "${enable_boehm}" in
|
||||
included)
|
||||
AC_MSG_NOTICE([Configuring included Boehm GC library:])
|
||||
test -d gc && rm -rf gc
|
||||
if mkdir gc; then
|
||||
(destdir=`${PWDCMD}`; cd gc; \
|
||||
CC="${CC} ${PICFLAG}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
|
||||
$srcdir/gc/configure --disable-shared --prefix=${destdir} \
|
||||
--includedir=${destdir}/ecl/gc/ --libdir=${destdir} --build=${build_alias} \
|
||||
--host=${host_alias} ${boehm_configure_flags})
|
||||
ECL_BOEHM_GC_HEADER='ecl/gc/gc.h'
|
||||
else
|
||||
if test -f /usr/include/gc/gc.h -o test -f /usr/local/include/gc/gc.h; then
|
||||
ECL_BOEHM_GC_HEADER='gc/gc.h'
|
||||
else
|
||||
ECL_BOEHM_GC_HEADER='gc.h'
|
||||
fi
|
||||
fi
|
||||
else
|
||||
ECL_BOEHM_GC_HEADER='none'
|
||||
fi
|
||||
ECL_BOEHM_GC_HEADER='ecl/gc/gc.h'
|
||||
else
|
||||
AC_MSG_ERROR([Unable to create 'gc' directory])
|
||||
fi
|
||||
;;
|
||||
system)
|
||||
AC_CHECK_HEADER([gc.h],[ECL_BOEHM_GC_HEADER='gc.h'],[],[])
|
||||
if test -z "$ECL_BOEHM_GC_HEADER"; then
|
||||
AC_CHECK_HEADER([gc/gc.h],[ECL_BOEHM_GC_HEADER='gc/gc.h'],[],[])
|
||||
fi
|
||||
if test -z "$ECL_BOEHM_GC_HEADER"; then
|
||||
AC_MSG_ERROR([Boehm-Weiser garbage collector's headers not found])
|
||||
fi
|
||||
;;
|
||||
no)
|
||||
ECL_BOEHM_GC_HEADER='none';;
|
||||
*)
|
||||
AC_MSG_ERROR([Not a valid argument for --enable-boehm $enable_boehm]);;
|
||||
esac
|
||||
|
||||
dnl ----------------------------------------------------------------------
|
||||
dnl Configure local GMP if needed
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ extern "C" {
|
|||
#ifdef ECL_THREADS
|
||||
#define GC_THREADS
|
||||
#endif
|
||||
#include "gc.h"
|
||||
|
||||
extern struct typemanager {
|
||||
const char *tm_name;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue