ecl/src/configure.ac
Christopher Chavez 0f3d6e08d1 Fix spelling
2020-09-11 02:11:26 +00:00

956 lines
31 KiB
Text

dnl dnl
dnl This is an autoconf script.
dnl To rebuild the `configure' script from this, execute the command
dnl autoconf
dnl in the directory containing this script.
dnl
dnl AUTOCONF configuration for ECL
dnl Giuseppe Attardi 25.1.1994
dnl
AC_INIT([ecl],[20.4.24],[])
AC_REVISION([$Revision$])
AC_CONFIG_SRCDIR([bare.lsp.in])
AC_CONFIG_AUX_DIR([gmp])
AC_PREREQ(2.69)
dnl -----------------------------------------------------------------------
dnl Make sure we do not configure within source directory
if test -f configure; then
AC_MSG_ERROR([This program cannot be built within the source directory])
fi
dnl -----------------------------------------------------------------------
dnl Configure switches
AC_ARG_WITH(cross_config,
AS_HELP_STRING( [--with-cross-config=f],
[supply configuration for a cross compiler]),
[], [with_cross_config="`pwd`/cross_config"])
AC_ARG_ENABLE(shared,
AS_HELP_STRING( [--enable-shared],
[enable loading compiled files (default=YES)]),
[], [enable_shared=yes])
AC_ARG_ENABLE(rpath,
AS_HELP_STRING( [--enable-rpath],
[hard-code the location of the ECL shared library.]
[(no|yes, default=NO)]),
[], [enable_rpath=yes] )
AC_ARG_ENABLE(threads,
AS_HELP_STRING( [--enable-threads],
[support for native threads (yes|no|auto, default=auto).]),
[], [enable_threads=auto])
AC_ARG_ENABLE(boehm,
AS_HELP_STRING( [--enable-boehm],
[use the Boehm-Weiser garbage collector]
[(no|included|system|auto, default=auto)] ),
[], [enable_boehm=auto] )
AC_ARG_ENABLE(libatomic,
AS_HELP_STRING( [--enable-libatomic],
[version of the libatomic-ops library]
[(auto|included|system, default=auto)] ),
[], [enable_libatomic=auto] )
AC_ARG_ENABLE(soname,
AS_HELP_STRING( [--enable-soname],
[link and install the library using version numbers]
[(no|yes, default=yes)]),
[], [enable_soname=yes] )
AC_ARG_ENABLE(gmp,
AS_HELP_STRING( [--enable-gmp],
[version of the GMP library]
[(portable|included|system|auto, default=auto)] ),
[], [enable_gmp=auto] )
dnl GMP library options
AC_ARG_WITH(C-gmp,
AS_HELP_STRING( [--with-C-gmp],
[Deprecated! See --enable-gmp]),
[with_c_gmp=yes; with_system_gmp=no], [with_c_gmp=no])
AC_ARG_WITH(system-gmp,
AS_HELP_STRING( [--with-system-gmp],
[Deprecated! See --enable-gmp]),
[], [with_system_gmp="auto"])
AC_ARG_WITH(gmp,
AS_HELP_STRING( [--with-gmp=args],
[Deprecated! See --with-gmp-args]),
[], [with_gmp_args=""])
AC_ARG_WITH(gmp-args,
AS_HELP_STRING( [--with-gmp-args=args],
[supply arguments for configuring GMP library]),
[], [with_gmp_args=""])
AC_ARG_WITH(gmp-prefix,
AS_HELP_STRING( [--with-gmp-prefix=path],
[prefix for system GMP includes and libraries] ),
[GMP_INCDIR="$withval/include"; GMP_LIBDIR="$withval/lib"], [])
AC_ARG_WITH(gmp-incdir,
AS_HELP_STRING( [--with-gmp-incdir=path],
[path to system GMP includes (overrides prefix)] ),
[GMP_INCDIR="$withval"], [])
AC_ARG_WITH(gmp-libdir,
AS_HELP_STRING( [--with-gmp-libdir=path],
[path to system GMP libraries (overrides prefix)] ),
[GMP_LIBDIR="$withval"], [])
dnl LIBFFI library options
AC_ARG_WITH(libffi-prefix,
AS_HELP_STRING( [--with-libffi-prefix=path],
[prefix for system LIBFFI includes and libraries] ),
[LIBFFI_INCDIR="$withval/include"; LIBFFI_LIBDIR="$withval/lib"], [])
AC_ARG_WITH(libffi-incdir,
AS_HELP_STRING( [--with-libffi-incdir=path],
[path to system LIBFFI includes (overrides prefix)] ),
[LIBFFI_INCDIR="$withval"], [])
AC_ARG_WITH(libffi-libdir,
AS_HELP_STRING( [--with-libffi-libdir=path],
[path to system LIBFFI libraries (overrides prefix)] ),
[LIBFFI_LIBDIR="$withval"], [])
dnl LIBGC library options
AC_ARG_WITH(libgc-prefix,
AS_HELP_STRING( [--with-libgc-prefix=path],
[prefix for system LIBGC includes and libraries] ),
[LIBGC_INCDIR="$withval/include"; LIBGC_LIBDIR="$withval/lib"], [])
AC_ARG_WITH(libgc-incdir,
AS_HELP_STRING( [--with-libgc-incdir=path],
[path to system LIBGC includes (overrides prefix)] ),
[LIBGC_INCDIR="$withval"], [])
AC_ARG_WITH(libgc-libdir,
AS_HELP_STRING( [--with-libgc-libdir=path],
[path to system LIBGC libraries (overrides prefix)] ),
[LIBGC_LIBDIR="$withval"], [])
AC_ARG_WITH(cxx,
AS_HELP_STRING( [--with-cxx],
[build ECL using C++ compiler (default=NO)]),
[], [with_cxx=no])
AC_ARG_WITH(tcp,
AS_HELP_STRING( [--with-tcp],
[include socket interface (yes|builtin|no, default=YES)]),
[], [with_tcp=yes])
AC_ARG_WITH(serve_event,
AS_HELP_STRING( [--with-serve-event],
[include serve-event module (yes|builtin|no, default=YES)]),
[], [with_serve_event=${enable_shared}])
AC_ARG_WITH(clos-streams,
AS_HELP_STRING( [--with-clos-streams],
[user defined stream objects (yes|builtin|no, default=YES)]),
[], [with_clos_streams=yes])
AC_ARG_WITH(cmuformat,
AS_HELP_STRING( [--with-cmuformat],
[use CMUCL's FORMAT routine (default=YES)]),
[], [with_cmuformat=${with_clos_streams}])
AC_ARG_WITH(asdf,
AS_HELP_STRING( [--with-asdf],
[include ASDF building facility]
[(yes|builtin|no, default=YES)]),
[], [with_asdf=yes])
AC_ARG_WITH(defsystem,
AS_HELP_STRING( [--with-defsystem],
[include DEFSYSTEM building facility]
[(yes|builtin|no, default=NO)]),
[], [with_defsystem=no])
AC_ARG_WITH(cmp,
AS_HELP_STRING( [--with-cmp],
[build the compiler (yes|builtin|no, default=YES)] ),
[], [with_cmp=yes])
AC_ARG_WITH(bytecmp,
AS_HELP_STRING( [--with-bytecmp],
[build the bytecodes compiler (yes|builtin|no, default=YES)] ),
[], [with_bytecmp=yes])
AC_ARG_WITH(rt,
AS_HELP_STRING( [--with-rt],
[Deprecated! include MIT-RT testing environment]
[(yes|builtin|no, default=NO)]),
[], [with_rt=no])
AC_ARG_WITH(profile,
AS_HELP_STRING( [--with-profile],
[Deprecated! include CMUCL's simple profiler]
[(yes|builtin|no, default=NO)]),
[], [with_profile=no])
AC_ARG_WITH(dffi,
AS_HELP_STRING( [--with-dffi],
[dynamic foreign function interface]
[(system|included|auto|no, default=AUTO if libffi available)]),
[enable_libffi=${withval}], [enable_libffi=auto])
AC_ARG_WITH(fpe,
AS_HELP_STRING( [--with-fpe],
[detect floating point exceptions]
[(default=YES)]),
[], [with_fpe=yes])
AC_ARG_WITH(signed-zero,
AS_HELP_STRING( [--with-signed-zero={yes|no}],
[allow for IEEE signed zeros (default=YES).]),
[], [with_signed_zero="yes"])
AC_ARG_WITH(ieee-fp,
AS_HELP_STRING( [--with-ieee-fp={yes|no}],
[full IEEE floating point system, including denormals (default=YES).]
[Implies signed-zero]),
[], [with_ieee_fp="yes"])
AC_ARG_WITH(sse,
AS_HELP_STRING( [--with-sse={yes|no|auto}],
[implement SSE intrinsics in ECL (default=NO).]
[Only works when supported by the compiler]),
[], [with_sse="no"])
AC_ARG_ENABLE(unicode,
AS_HELP_STRING( [--enable-unicode={32|16|no}],
[enable support for unicode (default=32)]),
[], [enable_unicode=32])
AC_ARG_ENABLE(c99complex,
AS_HELP_STRING( [--enable-c99complex],
[include support for c99 complex floats]
[(default=auto)]),
[enable_c99complex=${enableval}], [enable_c99complex=auto])
AC_ARG_ENABLE(smallcons,
AS_HELP_STRING( [--enable-smallcons],
[use small (2 words) cons types. Requires Boehm-Weiser gc.]
[(default=YES)]),
[enable_smallcons=${enableval}],[enable_smallcons=yes])
AC_ARG_ENABLE(gengc,
AS_HELP_STRING( [--enable-gengc],
[use generational garbage collection. Requires Boehm-Weiser gc.]
[(no|yes, default=NO)]),
[enable_gengc=${enableval}], [enable_gengc=no] )
AC_ARG_ENABLE(precisegc,
AS_HELP_STRING( [--enable-precisegc],
[use type information during garbage collection. Requires Boehm-Weiser gc (EXPERIMENTAL).]
[(no|yes, default=NO)]),
[enable_precisegc=${enableval}], [enable_precisegc=no] )
AC_ARG_ENABLE(serialization,
AS_HELP_STRING( [--enable-serialization],
[use serialization framework instead of the reader to save externalizable objects in compiled files (EXPERIMENTAL).]
[(no|yes, default=NO)]),
[], [enable_serialization=no] )
AC_ARG_ENABLE(debug,
AS_HELP_STRING( [--enable-debug],
[enable various debugging features]
[(default=NO)]),
[DEBUG_CFLAGS="-g -O0"; CFLAGS="$CFLAGS -g -O0"],[])
AC_ARG_WITH(debug-cflags,
AS_HELP_STRING( [--with-debug-cflags],
[add debug flags to the compiler invocation]
[(yes,no,actual flags,default=YES)]),
[],[with_debug_cflags="no"])
AC_ARG_WITH(profile-cflags,
AS_HELP_STRING( [--with-profile-cflags],
[add profiling flags to the compiler invocation]
[(yes,no,actual flags,default=NO)]),
[],[with_profile_cflags="no"])
AC_ARG_WITH(extra-files,
AS_HELP_STRING( [--with-extra-files],
[list of additional source files (default="")]),
[with_extra_files="${withval}"], [with_extra_files=""])
AC_ARG_WITH(init-form,
AS_HELP_STRING( [--with-init-form],
[lisp forms to execute at startup (default="(si::top-level t)")]),
[with_init_form="${withval}"], [with_init_form=""])
AC_ARG_ENABLE(manual,
AS_HELP_STRING( [--enable-manual={auto|html|info|no}],
[Enable building of the manual]
[(default=AUTO)]),
[enable_manual=${enableval}],
[enable_manual=auto])
dnl -----------------------------------------------------------------------
dnl Installation directories
AC_ARG_VAR([ecldir], [the directory where *.fas files are installed])
test -z "${ecldir}" && ecldir="${libdir}/ecl-${PACKAGE_VERSION}"
AC_SUBST([ecldir])
dnl -----------------------------------------------------------------------
dnl Initialize variables.
boehm_configure_flags=""
AC_EXEEXT dnl Guess whether .exe is needed for executables
AC_SUBST(buildir) dnl For top-level Makefile.in
AC_SUBST(ECL_CFLAGS) dnl Similar, but specific to ECL (see src/util/ecl-config)
AC_SUBST(DEBUG_CFLAGS)
AC_SUBST(GMP_CPPFLAGS) dnl CFLAGS needed for compiling with system GMP library
AC_SUBST(GMP_LDFLAGS) dnl LDFLAGS needed for compiling with system GMP library
AC_SUBST(LIBFFI_LDFLAGS) dnl LDFLAGS needed for compiling with system LIBFFI library
AC_SUBST(FASL_LIBS) dnl Libraries to link into all ecl code but not
dnl into helper programs.
AC_SUBST(CORE_LIBS, []) dnl Locally compiled libs to link into
dnl ecl/ecl_min/libecl.so and nowhere else.
AC_SUBST(SHARED_LDFLAGS) dnl Flags for shared libraries linker
AC_SUBST(BUNDLE_LDFLAGS) dnl Flags for FASL files linker
AC_SUBST(EXTRA_OBJS) dnl Extra *.o files to be compiled into libecl.a
AC_SUBST(TARGETS, ['bin/ecl$(EXE)'])dnl Versions of ECL to be built
AC_SUBST(SUBDIRS, ['c doc']) dnl Subdirectories that make should process
AC_SUBST(LIBRARIES, []) dnl GMP, Boehm's GC, etc
AC_SUBST(LSP_LIBRARIES) dnl Libraries produced by lisp translator
AC_SUBST(LSP_FEATURES, ['*features*']) dnl Symbols to add to *FEATURES* for conditional compilation
dnl -----------------------------------------------------------------------
dnl Guess operating system of host.
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
dnl =====================================================================
dnl Checks for programs
AC_PROG_CC # sets variable CC
AC_PROG_CC_C99 # checks that CC by default accepts C99 code, if not,
# tries adding -std=gnu-99, if this has no effect, throws an error.
AC_PROG_CXX # sets variable CXX
AC_PROG_CPP # sets variable CPP
AC_PROG_RANLIB # sets variable RANLIB
AC_PROG_INSTALL # sets variables INSTALL, INSTALL_DATA, INSTALL_PROGRAM
AC_PROG_LN_S # sets variable LN_S
AC_PROG_MAKE_SET # set $(MAKE) if needed
AC_PROG_RANLIB # set variable RANLIB
AC_CHECK_TOOL([AR],[ar]) # set variable AR to appropriate `ar' program
AC_CHECK_PROGS([CTAGS],[exctags ectags ctags]) # set variable CTAGS to ctags program if found
AC_CHECK_PROGS([ETAGS],[etags emacs-etags]) # set variable ETAGS to etags program if found
dnl -----------------------------------------------------------------------
dnl Checks which do not come with autoconf (must be after AC_PROG_CC)
ECL_MAKE_ABSOLUTE_SRCDIR
ECL_CROSS_CONFIG
ECL_GUESS_HOST_OS
if test "${enable_manual}" != "no"; then
AC_MSG_CHECKING([whether to build the manual; finding install-info...])
AC_PATH_PROG([INSTALL_INFO], [install-info], [])
if test "x${INSTALL_INFO}" = "x"; then
if test "${enable_manual}" = "auto"; then
AC_MSG_RESULT([ Not building the manual: no install-info found.])
enable_manual=no
elif test "${enable_manual}" = "info"; then
AC_MSG_ERROR([Unable to build the manual: install-info not found.])
fi
else
AC_MSG_RESULT([ install-info found.])
AC_MSG_CHECKING([for working makeinfo...])
AC_PATH_PROG([MAKEINFO], [makeinfo], [])
if test "x${MAKEINFO}" = "x"; then
if test "${enable_manual}" = "auto"; then
AC_MSG_RESULT([ Not building the manual: no makeinfo found.])
enable_manual=no
else
AC_MSG_ERROR([Unable to build the manual: makeinfo not found.])
fi
elif test "x`echo \"@inlinefmtifelse{html, foo, bar}\" | makeinfo 2>&1 | grep Unknown`" != "x"; then
if test "${enable_manual}" = "auto"; then
AC_MSG_RESULT([ Not building the manual: broken/outdated makeinfo.])
enable_manual=no
else
AC_MSG_ERROR([Unable to build the manual: broken/outdated makeinfo.])
fi
else
AC_MSG_RESULT([ Will build the manual.])
fi
fi
fi
if test "${enable_manual}" != "no"; then
AC_SUBST(INSTALL_INFO)
AC_SUBST(MAKEINFO)
if test "${enable_manual}" = "html"; then
AC_SUBST(MANUAL_MAKE_TARGET, ['html'])
AC_SUBST(MANUAL_INSTALL_TARGET, ['install-html'])
AC_SUBST(MANUAL_UNINSTALL_TARGET, ['uninstall-html'])
else
AC_SUBST(MANUAL_MAKE_TARGET, ['info'])
AC_SUBST(MANUAL_INSTALL_TARGET, ['install-info'])
AC_SUBST(MANUAL_UNINSTALL_TARGET, ['uninstall-info'])
fi
fi
dnl ======================================================================
dnl GNU multiprecision library
dnl
dnl This a multi-stage process. First we have to detect whether we must build
dnl the GMP library. If this is the case, then we may have to detect the
dnl build flags for the library, because GMP may choose to build for 64
dnl or 32 bits executables and ECL has to be compiled / linked using precisely
dnl the same flags
dnl
if test "x$GMP_INCDIR" != "x"; then
GMP_CPPFLAGS="-I$GMP_INCDIR"
fi
if test "x$GMP_LIBDIR" != "x"; then
GMP_LDFLAGS="-L$GMP_LIBDIR"
if test "$enable_rpath" = "yes"; then
if (echo "$ECL_LDRPATH" | grep '~A') > /dev/null; then
GMP_LDFLAGS=`echo $ECL_LDRPATH | sed "s,~A,$GMP_LIBDIR,"`" $GMP_LDFLAGS"
fi
fi
fi
CPPFLAGS="$CPPFLAGS $GMP_CPPFLAGS"
LDFLAGS="$LDFLAGS $GMP_LDFLAGS"
AS_CASE([${enable_gmp}],
[portable], [with_system_gmp=no; with_c_gmp=yes],
[included], [with_system_gmp=no],
[system], [with_system_gmp=yes],
[AC_CHECK_LIB( [gmp], [__gmpz_init],
[with_system_gmp=yes],
[with_system_gmp=no] )])
ECL_GMP_HEADER=
if test "${with_system_gmp}" = "yes"; then
AC_CHECK_LIB( [gmp], [__gmpz_init],
[FASL_LIBS="${FASL_LIBS} -lgmp"],
[AC_MSG_ERROR([System gmp library requested but not found.])])
AC_CHECK_HEADER( [gmp.h], [ECL_GMP_HEADER='gmp.h'] )
if test "x$ECL_GMP_HEADER" = "x"; then
AC_CHECK_HEADER( [gmp/gmp.h], [ECL_GMP_HEADER='gmp/gmp.h'] )
fi
else
SUBDIRS="${SUBDIRS} gmp"
CORE_LIBS="-leclgmp ${CORE_LIBS}"
if test ${enable_shared} = "no"; then
LIBRARIES="${LIBRARIES} ${LIBPREFIX}eclgmp.${LIBEXT}"
fi
fi
dnl ----------------------------------------------------------------------
dnl Configure local GMP if needed
AC_SUBST(ECL_GMP_HEADER)
EXTRA_OBJS="${EXTRA_OBJS} big.o"
if test "x${with_system_gmp}" = "xno" ; then
AC_MSG_NOTICE(Configuring included GMP library:)
test -d gmp && rm -rf gmp
if test -z "$gmp_build"; then
gmp_build="${build}"
fi
if test "x$with_c_gmp" = "xyes"; then
gmp_build=`echo ${gmp_build} | sed 's,@<:@^-@:>@*\(-.*\),none\1,'`
echo '***'
echo '***' BUILDING GMP WITH C!
echo '***' This is a last resort, either because of license or
echo '***' porting issues.
echo '***'
fi
ECL_GMP_HEADER='ecl/gmp.h'
if test "x$ABI" = "x"; then
GMP_ABI=""
else
GMP_ABI="ABI=$ABI"
fi
# Crosscompilation for Android on Darwin requires replacing 'NM=nm'
# below with 'NM=$PLATFORM_PREFIX/bin/arm-linux-androideabi-nm'.
mkdir gmp
dnl Notice we need -DPIC to force the assembler to generate PIC code
(destdir=`${PWDCMD}`; cd gmp && CC="${CC} ${PICFLAG}" \
$srcdir/gmp/configure --disable-shared --prefix=${destdir} \
-infodir=${destdir}/doc --includedir=${destdir}/ecl --with-pic \
--libdir=${destdir} --build=${gmp_build} --host=${host_alias} \
CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" CPPFLAGS="$CPPFLAGS" CC="${CC} ${PICFLAG}" \
"$GMP_ABI" $with_gmp_args)
if test ! -f gmp/config.status; then
AC_MSG_ERROR([Failed to configure the GMP library.])
fi
else
if test "x$ECL_GMP_HEADER" = "x"; then
AC_MSG_ERROR([Can not find GMP header.])
fi
fi
dnl -----------------------------------------------------------------------
dnl GMP-based search of C/C++ compiler and linker flags
AC_MSG_CHECKING([GMP autoconf])
AC_MSG_RESULT(["${with_system_gmp}.${enable_slow_config}"])
if test "x${enable_slow_config}" = "xyes"; then
with_system_gmp=no
fi
if test "x${with_system_gmp}" = "xno"; then
ECL_GMP_BASED_CONFIG
fi
dnl ======================================================================
dnl LIBFFI library
if test "x$LIBFFI_INCDIR" != "x"; then
LIBFFI_CPPFLAGS="-I$LIBFFI_INCDIR"
fi
if test "x$LIBFFI_LIBDIR" != "x"; then
LIBFFI_LDFLAGS="-L$LIBFFI_LIBDIR"
if test "$enable_rpath" = "yes"; then
if (echo "$ECL_LDRPATH" | grep '~A') > /dev/null; then
LIBFFI_LDFLAGS=`echo $ECL_LDRPATH | sed "s,~A,$LIBFFI_LIBDIR,"`" $LIBFFI_LDFLAGS"
fi
fi
fi
CPPFLAGS="$CPPFLAGS $LIBFFI_CPPFLAGS"
LDFLAGS="$LDFLAGS $LIBFFI_LDFLAGS"
dnl ======================================================================
dnl LIBGC library
if test "x$LIBGC_INCDIR" != "x"; then
LIBGC_CPPFLAGS="-I$LIBGC_INCDIR"
fi
if test "x$LIBGC_LIBDIR" != "x"; then
LIBGC_LDFLAGS="-L$LIBGC_LIBDIR"
if test "$enable_rpath" = "yes"; then
if (echo "$ECL_LDRPATH" | grep '~A') > /dev/null; then
LIBGC_LDFLAGS=`echo $ECL_LDRPATH | sed "s,~A,$LIBGC_LIBDIR,"`" $LIBGC_LDFLAGS"
fi
fi
fi
CPPFLAGS="$CPPFLAGS $LIBGC_CPPFLAGS"
LDFLAGS="$LDFLAGS $LIBGC_LDFLAGS"
dnl =====================================================================
dnl Checks for libraries
AC_CHECK_LIB(sun, getpwnam) # on IRIX adds -lsun
AC_SEARCH_LIBS([strerror],[cposix])
dnl ----------------------------------------------------------------------
dnl Profiling & debug flags
dnl
if test "$with_debug_cflags" = "yes"; then
with_debug_cflags="-g"
fi
if test "$with_debug_cflags" != "no"; then
DEBUG_CFLAGS="$with_debug_cflags"
CFLAGS="$with_debug_cflags $CFLAGS"
CXXFLAGS="$with_debug_cflags $CXXFLAGS"
LDFLAGS="$with_debug_cflags $LDFLAGS"
fi
if test "$with_profile_cflags" = "yes"; then
with_profile_cflags="-pg"
fi
if test "$with_profile_cflags" != "no"; then
CFLAGS="$with_profile_cflags $CFLAGS"
CXXFLAGS="$with_profile_cflags $CFLAGS"
LDFLAGS="$with_profile_cflags $LDFLAGS"
fi
dnl ----------------------------------------------------------------------
dnl Version of the compiler
ECL_CMPDIR=cmp
AC_SUBST(ECL_CMPDIR)
dnl ----------------------------------------------------------------------
dnl Native thread support
if test "${enable_threads}" = "auto"; then
AC_MSG_CHECKING([for threads support])
if test -z "${THREAD_OBJ}"; then
AC_MSG_RESULT([no])
enable_threads="no"
else
AC_MSG_RESULT([yes])
enable_threads="yes"
fi
fi
if test "${enable_threads}" = "yes" ; then
if test -z "${THREAD_OBJ}"; then
AC_MSG_ERROR([Threads aren't supported on this system.])
else
LIBS="${THREAD_LIBS} ${LIBS}"
CFLAGS="${CFLAGS} ${THREAD_CFLAGS}"
ECL_POSIX_RWLOCK
boehm_configure_flags="${boehm_configure_flags} ${THREAD_GC_FLAGS}"
for k in $THREAD_OBJ; do EXTRA_OBJS="$EXTRA_OBJS ${k}.${OBJEXT}"; done
AC_MSG_CHECKING([for thread object files])
AC_MSG_RESULT([${THREAD_OBJ}])
AC_DEFINE( [ECL_THREADS], [1], [Userland threads?])
fi
else
boehm_configure_flags="${boehm_configure_flags} --disable-threads"
fi
dnl ----------------------------------------------------------------------
dnl Boehm-Weiser garbage collector
if test ${enable_boehm} = "no" ; then
AC_MSG_ERROR([Boehm GC library is currently needed to build ECL]);
EXTRA_OBJS="${EXTRA_OBJS} alloc.${OBJEXT} gbc.${OBJEXT}"
enable_smallcons="no"
else
ECL_BOEHM_GC
fi
if test ${enable_smallcons} = "yes" ; then
AC_DEFINE([ECL_SMALL_CONS], [], [ECL_SMALL_CONS])
fi
ECL_LIBFFI
dnl ----------------------------------------------------------------------
dnl SONAME is only active when SONAME_LDFLAGS and SONAME are non nil
dnl
AC_MSG_CHECKING(for soname flags)
PACKAGE_MAJOR=`echo ${PACKAGE_VERSION} | sed -e 's,\(.*\)\..*\..*,\1,g'`
PACKAGE_MINOR=`echo ${PACKAGE_VERSION} | sed -e 's,.*\.\(.*\)\..*,\1,g'`
PACKAGE_LEAST=`echo ${PACKAGE_VERSION} | sed -e 's,.*\..*\.\(.*\),\1,g'`
if test "${enable_soname}" != yes; then
SONAME=''
SONAME1=''
SONAME2=''
SONAME3=''
SONAME_ALIASES=''
SONAME_LDFLAGS=''
AC_MSG_RESULT([none])
else
i="${PACKAGE_MAJOR}.${PACKAGE_MINOR}.${PACKAGE_LEAST}"
SONAME3=`echo $SONAME | sed "s,.SOVERSION,.$i,g"`
i="${PACKAGE_MAJOR}.${PACKAGE_MINOR}"
SONAME2=`echo $SONAME | sed "s,.SOVERSION,.$i,g"`
i="${PACKAGE_MAJOR}"
SONAME1=`echo $SONAME | sed "s,.SOVERSION,.$i,g"`
SONAME=`echo $SONAME | sed "s,.SOVERSION,,g"`
SONAME_LDFLAGS=`echo $SONAME_LDFLAGS | sed "s,SONAME,$SONAME2,g"`
AC_MSG_RESULT([${SONAME_LDFLAGS}])
fi
AC_SUBST(SONAME3)
AC_SUBST(SONAME2)
AC_SUBST(SONAME1)
AC_SUBST(SONAME)
AC_SUBST(SONAME_LDFLAGS)
dnl Related to that, the package version number
ECL_VERSION_NUMBER=$(($PACKAGE_MAJOR * 10000 + $PACKAGE_MINOR * 100 + $PACKAGE_LEAST))
AC_SUBST(ECL_VERSION_NUMBER)
dnl ----------------------------------------------------------------------
dnl Deactivate floating point exceptions if asked to
if test "${with_ieee_fp}" = yes; then
with_signed_zero="yes"
AC_DEFINE([ECL_IEEE_FP], [], [ECL_IEEE_FP])
fi
if test "${with_fpe}" != yes; then
AC_DEFINE([ECL_AVOID_FPE_H], [], [ECL_AVOID_FPE_H])
fi
if test "${with_signed_zero}" = yes; then
AC_DEFINE([ECL_SIGNED_ZERO], [], [ECL_SIGNED_ZERO])
fi
dnl =====================================================================
dnl Checks for header files
dnl !!! autoscan
AC_PATH_X
AC_HEADER_DIRENT
AC_HEADER_STDBOOL
AC_HEADER_STDC
AC_HEADER_TIME
AC_CHECK_HEADERS( [fcntl.h limits.h netdb.h netinet/in.h] \
[stddef.h stdlib.h string.h sys/param.h] \
[sys/socket.h sys/time.h unistd.h fenv.h] \
[sched.h] )
dnl !!! end autoscan
AC_CHECK_HEADERS( [sys/utsname.h float.h pwd.h dlfcn.h link.h] \
[mach-o/dyld.h dirent.h sys/ioctl.h sys/select.h] \
[sys/wait.h semaphore.h] )
AC_CHECK_HEADERS([ulimit.h], [], [],
[[#ifdef HAVE_ULIMIT_H
# include <ulimit.h>
#endif
]])
dnl =====================================================================
dnl Checks for typedefs, structures, and compiler characteristics.
dnl !!! autoscan
AC_C_CONST dnl !!! DNLed
AC_C_INLINE
AC_TYPE_SIZE_T dnl !!! DNLed
AC_STRUCT_TM
AC_C_VOLATILE
AC_CHECK_TYPES([ptrdiff_t])
ECL_LONG_LONG
dnl !!! end autoscan
dnl !!! dnled in original
dnl AC_TYPE_PID_T # DEFS pid_t
dnl AC_TYPE_UID_T # DEFS uid_t, gid_t
dnl AC_TYPE_OFF_T # DEFS off_t
dnl AC_C_CHAR_UNSIGNED # DEFS __CHAR_UNSIGNED__ if char is unsigned
dnl !!! end dnled
AC_C_BIGENDIAN([], [],
[AC_DEFINE(WORDS_BIGENDIAN, [/* EDIT! - Undefine if small endian */])])
dnl ----------------------------------------------------------------------
dnl This flag is an optimization for GNU
dnl if test "${GCC}" = "yes"; then
dnl CFLAGS="${CFLAGS} -fstrict-aliasing"
dnl fi
dnl ----------------------------------------------------------------------
dnl Check the appropriate type for cl_fixnum/cl_index
ECL_FIXNUM_TYPE
ECL_INTEGER_TYPES
ECL_LINEFEED_MODE
ECL_FIND_SETJMP
ECL_FILE_STRUCTURE
ECL_FPE_MODEL
ECL_SSE
ECL_COMPLEX_C99
dnl -----------------------------------------------------------------------
dnl Stack size and growth direction
ECL_STACK_DIRECTION
ECL_STACK_SIZE
dnl =====================================================================
dnl Checks for library functions
dnl !!! autoscan
AC_FUNC_CLOSEDIR_VOID
AC_FUNC_ERROR_AT_LINE
AC_FUNC_FORK
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_MMAP
AC_FUNC_REALLOC
AC_FUNC_SELECT_ARGTYPES
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_FUNC_STRTOD
AC_CHECK_FUNCS( [floor getcwd gethostbyaddr gethostbyname getpagesize] \
[memmove memset mkdir putenv socket sqrt] \
[strcasecmp strchr strerror strtol] )
dnl !!! end autoscan
AC_CHECK_FUNCS( [nanosleep alarm times select setenv putenv] \
[lstat mkstemp sigprocmask isatty tzset] \
[gettimeofday getrusage system] )
AC_CHECK_FUNCS( [expf powf logf sqrtf cosf sinf tanf sinhf coshf tanhf] \
[floorf ceilf fabsf frexpf ldexpf log1p log1pf log1pl] \
[copysign] )
AC_CHECK_FUNCS( [sched_yield uname fseeko dladdr backtrace backtrace_symbols] )
AC_CHECK_HEADER( [sys/mman.h],
AC_DEFINE([ECL_USE_MPROTECT], [], [ECL_USE_MPROTECT])
AC_DEFINE([HAVE_SYS_MMAN_H], [], [HAVE_SYS_MMAN_H])
)
ECL_POSIX_ENVIRON
ECL_FLOATING_POINT_EXCEPTIONS
dnl =====================================================================
dnl Checks for system services
dnl =====================================================================
dnl Final pass over configuration files
dnl
dnl Notice that we build ${builddir}/ecl/configpre.h from
dnl ${srcdir}/ecl/config.h.in, and then use all AC_DEF* to build
dnl ecl/config.h from ecl/configpre.h
dnl ----------------------------------------------------------------------
dnl Do we use C or C++ compiler to compile ecl?
if test ${with_cxx} = "no" ; then
AC_SUBST([ECL_CC], [${CC}])
else
AC_SUBST([ECL_CC], [${CXX}])
AC_DEFINE([ECL_CXX_CORE], [1],
[Do we use C or C++ compiler to compile ecl?])
boehm_configure_flags="${boehm_configure_flags} --enable-cplusplus"
fi
ECL_LIBATOMIC_OPS
dnl ----------------------------------------------------------------------
dnl Lisp library and libecl features
if test ${enable_shared} = "yes"; then
AC_DEFINE(ENABLE_DLOPEN, [1], [Allow loading dynamically linked code])
LSP_LIBRARIES="${SHAREDPREFIX}ecl.${SHAREDEXT}"
ECL_ADD_LISP_MODULE([dlopen])
else
enable_soname=no
LSP_LIBRARIES="${LIBPREFIX}ecl.${LIBEXT}"
ECL_LDRPATH=''
fi
if test "x${enable_rpath}" = "xno"; then
ECL_LDRPATH=''
fi
if test "${with_cmuformat}" = "yes"; then
with_clos_streams="yes"
AC_DEFINE([ECL_CMU_FORMAT], [1], [Use CMU Common-Lisp's FORMAT routine])
fi
if test "${with_clos_streams}" = "yes"; then
AC_DEFINE( ECL_CLOS_STREAMS, [1],
[Allow STREAM operations to work on arbitrary objects])
fi
if test "${with_cmp}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([cmp])
with_cmp=yes
fi
if test "${with_cmp}" = "yes"; then
ECL_ADD_LISP_MODULE([cmp])
fi
if test "${with_tcp}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([sockets])
with_tcp=yes
fi
if test "${with_tcp}" = "yes"; then
AC_DEFINE(TCP, [1], [Network streams])
EXTRA_OBJS="${EXTRA_OBJS} tcp.${OBJEXT}"
ECL_ADD_LISP_MODULE([sockets])
LIBS="${LIBS} ${TCPLIBS}"
fi
if test "${with_serve_event}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([serve_event])
with_serve_event=yes
fi
if test "${with_serve_event}" = "yes"; then
case "${host_os}" in
mingw*|cygwin*) ;;
*)
ECL_ADD_LISP_MODULE([serve-event])
;;
esac
fi
if test "${with_asdf}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([asdf])
with_asdf=yes
fi
if test "${with_asdf}" = "yes"; then
ECL_ADD_LISP_MODULE([asdf])
fi
if test "${with_defsystem}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([defsystem])
with_defsystem=yes
fi
if test "${with_defsystem}" = "yes"; then
ECL_ADD_LISP_MODULE([defsystem])
fi
if test "${with_profile}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([profile])
with_profile=yes
fi
if test "${with_profile}" = "yes"; then
if test "${enable_boehm}" != "no"; then
ECL_ADD_LISP_MODULE([profile])
fi
fi
if test "${with_bytecmp}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([bytecmp])
with_bytecmp=yes
fi
if test "${with_bytecmp}" = "yes"; then
ECL_ADD_LISP_MODULE([bytecmp])
fi
if test "${with_rt}" = "builtin"; then
ECL_ADD_BUILTIN_MODULE([rt])
with_rt=yes
fi
if test "${with_rt}" = "yes"; then
ECL_ADD_LISP_MODULE([rt])
fi
if test "x${enable_unicode}" != "xno"; then
if test "${enable_unicode}" = 16; then
AC_DEFINE([ECL_UNICODE], [16], [Support for Unicode])
CHAR_CODE_LIMIT=65536
ECL_CHARACTER=$ECL_INT16_T
EXTRA_OBJS="$EXTRA_OBJS unicode/ucd16.o unicode/ucd16-0000.o unicode/ucd16-0016.o unicode/ucd16-0032.o unicode/ucd16-0048.o unicode/ucd16-0064.o"
else
AC_DEFINE([ECL_UNICODE], [21], [Support for Unicode])
CHAR_CODE_LIMIT=1114112
ECL_CHARACTER=$ECL_INT32_T
EXTRA_OBJS="$EXTRA_OBJS unicode/ucd.o unicode/ucd-0000.o unicode/ucd-0016.o unicode/ucd-0032.o unicode/ucd-0048.o unicode/ucd-0064.o unicode/ucd-0080.o unicode/ucd-0096.o"
fi
AC_DEFINE([ECL_UNICODE_NAMES], [1], [Link in the database of Unicode names])
EXTRA_OBJS="$EXTRA_OBJS unicode/ucd_names_char.o unicode/ucd_names_codes.o unicode/ucd_names_pair.o unicode/ucd_names_str.o"
else
CHAR_CODE_LIMIT=256
ECL_CHARACTER="int"
fi
AC_SUBST(ECL_CHARACTER)
AC_SUBST(CHAR_CODE_LIMIT)
AC_SUBST(ECL_EXTRA_LISP_FILES)
ECL_EXTRA_LISP_FILES=""
for i in $with_extra_files; do
ECL_EXTRA_LISP_FILES="${ECL_EXTRA_LISP_FILES} \"$i\""
done
AC_SUBST(ECL_INIT_FORM)
echo ${with_init_form} = init form
if test "x${with_init_form}" = "x"; then
ECL_INIT_FORM='(SI::TOP-LEVEL T)'
else
ECL_INIT_FORM="${with_init_form}"
fi
AC_CONFIG_FILES([
bare.lsp
lsp/load.lsp
clos/load.lsp
cmp/load.lsp
../Makefile
Makefile
c/Makefile
doc/Makefile
doc/ecl.man
doc/ecl-config.man
ecl/configpre.h:h/config.h.in
ecl/configpre-int.h:h/config-internal.h.in
bin/ecl-config.pre:util/ecl-config
lsp/config.lsp:lsp/config.lsp.in
compile.pre:compile.lsp.in
cmp/cmpdefs.pre:cmp/cmpdefs.lsp
tests/config.lsp
tests/Makefile
])
AC_CONFIG_HEADERS([ecl/config.h:ecl/configpre.h])
AC_CONFIG_HEADERS([ecl/config-internal.h:ecl/configpre-int.h])
AC_OUTPUT
for i in $srcdir/c/*/; do mkdir -p c/`basename $i`; done