aboutsummaryrefslogtreecommitdiff
path: root/config/open-axiom.m4
diff options
context:
space:
mode:
Diffstat (limited to 'config/open-axiom.m4')
-rw-r--r--config/open-axiom.m41184
1 files changed, 0 insertions, 1184 deletions
diff --git a/config/open-axiom.m4 b/config/open-axiom.m4
deleted file mode 100644
index 34fcaa6d..00000000
--- a/config/open-axiom.m4
+++ /dev/null
@@ -1,1184 +0,0 @@
-dnl ------------------------
-dnl -- OPENAXIOM_MAKEFILE --
-dnl ------------------------
-AC_DEFUN([OPENAXIOM_MAKEFILE],
-[AC_CONFIG_FILES([$1:config/var-def.mk:$1.in:config/setup-dep.mk])])
-
-dnl --------------------------------
-dnl -- OPENAXIOM_CANONICAL_SYSTEM --
-dnl --------------------------------
-AC_DEFUN([OPENAXIOM_CANONICAL_SYSTEM],[
-AC_CANONICAL_BUILD
-AC_CANONICAL_HOST
-AC_CANONICAL_TARGET
-
-AC_SUBST(oa_src_srcdir,'$(top_srcdir)/src')
-AC_SUBST(oa_src_docdir,'$(oa_src_srcdir)/doc')
-AC_SUBST(oa_src_datadir,'$(oa_src_srcdir)/share')
-AC_SUBST(oa_src_algdir,'$(oa_src_srcdir)/algebra')
-AC_SUBST(oa_src_texdir,'$(oa_src_datadir)/tex')
-
-AC_SUBST(oa_targetdir,'$(top_builddir)/$(target)')
-AC_SUBST(oa_target_bindir,'$(oa_targetdir)/bin')
-AC_SUBST(oa_target_libdir,'$(oa_targetdir)/lib')
-AC_SUBST(oa_target_srcdir,'$(oa_targetdir)/src')
-AC_SUBST(oa_target_docdir,'$(oa_targetdir)/doc')
-AC_SUBST(oa_target_datadir,'$(oa_targetdir)/share')
-AC_SUBST(oa_target_texdir,'$(oa_target_datadir)/texmf/tex')
-AC_SUBST(oa_target_includedir,'$(oa_targetdir)/include')
-
-AC_SUBST(oa_configdir,'$(top_builddir)/config')
-AC_SUBST(oa_c_macros,'$(oa_configdir)/axiom-c-macros.h')
-])
-
-dnl ----------------------
-dnl -- OPENAXIOM_SHELLS --
-dnl ----------------------
-dnl Check for shell availability, specifically PowerShell on
-dnl Windows platforms.
-AC_DEFUN([OPENAXIOM_SHELLS],[
-AC_SYS_INTERPRETER
-case $host in
- *mingw*)
- AC_PATH_PROG([OA_WINDOWS_POWERSHELL],[powershell.exe])
- ;;
-esac
-])
-
-dnl ------------------------------------------
-dnl -- OPENAXIOM_CHECK_FOR_ADDITIONAL_PATHS --
-dnl ------------------------------------------
-AC_DEFUN([OPENAXIOM_CHECK_FOR_ADDITIONAL_PATHS],[
-# If there is a MacPort installation of QT5, use it.
-case $host in
- *darwin*)
- if test -d /opt/local/libexec/qt5; then
- PATH=/opt/local/libexec/qt5/bin:$PATH
- fi
- ;;
-esac
-])
-
-dnl ----------------------------------
-dnl -- OPENAXIOM_REJECT_ROTTED_LISP --
-dnl ----------------------------------
-dnl Check for Lisp systems we know are just too buggy for use.
-AC_DEFUN([OPENAXIOM_REJECT_ROTTED_LISP],[
-if test x"$oa_include_gcl" != xyes; then
- case $OA_LISP in
- *gcl*)
- AC_MSG_CHECKING([$OA_LISP version])
- oa_lisp_version=`$OA_LISP -batch -eval "(format t \"~S\" (lisp-implementation-version))"`
- AC_MSG_RESULT([$oa_lisp_version])
- case $oa_lisp_version in
- *2.6.7*|*2.6.8*|*2.6.9*|*2.6.10*) ;; # OK
- *)
- AC_MSG_WARN([$oa_lisp_version is not supported by this version of OpenAxiom.])
- ;;
- esac
- ;;
- # SBCL-1.0.29 has a nasty regression that prevents OpenAxiom build
- *sbcl*)
- AC_MSG_CHECKING([$OA_LISP version])
- oa_lisp_version=`$OA_LISP --version`
- AC_MSG_RESULT([$oa_lisp_version])
- case $oa_lisp_version in
- *1.0.29)
- AC_MSG_ERROR([This version of SBCL has a bug that breaks OpenAxiom build. Consider SBCL-1.0.30 or higher.])
- ;;
- esac
- ;;
- esac
-fi
-])
-
-dnl -------------------------
-dnl -- OPENAXIOM_PROG_LISP --
-dnl -------------------------
-dnl Find the host Lisp compiler to use
-AC_DEFUN([OPENAXIOM_PROG_LISP],[
-## Was a host Lisp system specified?
-oa_user_lisp=
-AC_ARG_WITH([lisp], [ --with-lisp=L use L as Lisp platform],
- [oa_user_lisp=$withval])
-
-## For all values of L, except gcl, the assumption is that the Lisp
-## image L is available in the build environment. For gcl,
-## we make an exception: if no GCL image is available, or if
-## the option --enable-gcl is specified then OpenAxiom builds its
-## own version from the source tree.
-## If --enable-gcl is specified, we need to check for coonsistency
-oa_include_gcl=
-AC_ARG_ENABLE([gcl], [ --enable-gcl build GCL from OpenAxiom source],
- [case $enableval in
- yes|no) oa_include_gcl=$enableval ;;
- *) AC_MSG_ERROR([erroneous value for --enable-gcl]) ;;
- esac])
-
-## If nothing was said about preferred Lisp, guess one.
-AC_SUBST(OA_LISP)
-if test -n "$oa_user_lisp"; then
- ## Honor use of Lisp image specified on command line
- OA_LISP=$oa_user_lisp
-elif test -z "$oa_include_gcl"; then
- AC_CHECK_PROGS([OA_LISP], [sbcl gcl ecl clisp ccl64 ccl32 ccl])
-fi
-])
-
-dnl -----------------------------------
-dnl -- OPENAXIOM_CHECK_GCL_INCLUSION --
-dnl -----------------------------------
-dnl Check for consistency of configure options when GCL is requested.
-AC_DEFUN([OPENAXIOM_CHECK_GCL_INCLUSION],[
-case $oa_include_gcl,$OA_LISP in
- no,)
- ## It doesn't make sense not to include GCL when no Lisp image
- ## is available. Give up.
- AC_MSG_ERROR([--disable-gcl specified but no Lisp system found])
- ;;
-
- ,|yes,)
- ## No Lisp image was specified and none was available from
- ## the build environment; build GCL from OpenAxiom source.
- ## User may explicilty specify --enable-gcl, but may be missing
- ## the dependency tarball.
- if test -d ${srcdir}/gcl; then
- OA_LISP='$(oa_build_bindir)/gcl'
- oa_include_gcl=yes
- elif test -z "$oa_include_gcl"; then
- AC_MSG_ERROR([OpenAxiom requires a Lisp system. Either separately build one (GCL-2.6.7, GCL-2.6.8, SBCL, ECL, CLisp, Clozure CL), or get the dependency tarball from OpenAxiom download website.])
- else
- AC_MSG_ERROR([The OpenAxiom dependency tarball is missing; please get it from our website.])
- fi
- ;;
- yes,*)
- AC_MSG_ERROR([--with-lisp=$OA_LISP conflicts with --enable-gcl])
- ;;
-esac
-])
-
-dnl ---------------------------
-dnl -- OPENAXIOM_LISP_FLAVOR --
-dnl ---------------------------
-dnl Determine the flavor of the host Lisp system.
-AC_DEFUN([OPENAXIOM_LISP_FLAVOR],[
-OPENAXIOM_CHECK_GCL_INCLUSION
-
-oa_lisp_flavor=unknown
-AC_SUBST(oa_lisp_flavor)
-
-## Most Lisp systems don't use conventional methods for building programs.
-oa_standard_linking=no
-AC_SUBST(oa_standard_linking)
-oa_lnkext='$(FASLEXT)'
-## The pipe below is OK, for as of this writting, the free Lisp systems
-## ECL, GCL, SBCL, CLisp, and Clozure CL all exit at end of standard input.
-AC_MSG_CHECKING([which flavor of Lisp])
-if test x"$oa_include_gcl" = xyes; then
- oa_lisp_flavor=gcl
-else
- case `echo '(lisp-implementation-type)' | $OA_LISP` in
- *GCL*)
- oa_lisp_flavor=gcl
- ;;
- *"ECL"*)
- oa_lisp_flavor=ecl
- oa_standard_linking=yes
- oa_lnkext='$(OBJEXT)'
- ;;
- *"SBCL"*)
- oa_lisp_flavor=sbcl
- ;;
- *"CLISP"*)
- ## Not all variants of CLisp have FFI support. FFI is used
- ## internally used by OpenAxiom in essential way.
- if ! $OA_LISP -q -x '*features*' | grep ':FFI' > /dev/null
- then
- AC_MSG_ERROR([$OA_LISP does not support Foreign Function Interface. Please upgrade to a better version of CLisp or install SBCL.])
- fi
- oa_lisp_flavor=clisp
- ;;
- *"Armed Bear Common Lisp"*)
- oa_lisp_flavor=abcl
- ;;
- *"Clozure Common Lisp"*)
- oa_lisp_flavor=clozure
- ;;
- esac
-fi
-AC_MSG_RESULT([$oa_lisp_flavor])
-AM_CONDITIONAL([OA_ECL_RT],[test $oa_lisp_flavor = ecl])
-AM_CONDITIONAL([OA_GCL_RT],[test $oa_lisp_flavor = gcl])
-AM_CONDITIONAL([OA_STANDARD_LINKING],[test $oa_standard_linking = yes])
-
-AC_DEFINE_UNQUOTED([OPENAXIOM_BASE_RTS],
- [Runtime::${oa_lisp_flavor}],
- [The kind of base runtime system for this build.])
-AC_SUBST(LNKEXT,[$oa_lnkext])
-])
-
-dnl ---------------------------------
-dnl -- OPENAXIOM_CHECK_DELAYED_FFI --
-dnl ---------------------------------
-dnl Check whether loading modules for dynamic FFI support
-dnl should be delayed to runtime. This is needed for Lisp
-dnl systems that have trouble with DLLs.
-AC_DEFUN([OPENAXIOM_CHECK_DELAYED_FFI], [
-case ${oa_lisp_flavor},$host in
- sbcl,* | clozure,* | clisp,*)
- oa_delay_ffi=yes
- ;;
- *)
- oa_delay_ffi=no
- ;;
-esac
-AC_SUBST([oa_delay_ffi])
-])
-
-dnl --------------------------------------------
-dnl -- OPENAXIOM_CPPFLAGS_FOR_VENDOR_LOCK_INS --
-dnl --------------------------------------------
-dnl Adjust CPPFLAGS before detecting several vendor lock-ins (or not.)
-AC_DEFUN([OPENAXIOM_CPPFLAGS_FOR_VENDOR_LOCK_INS],[
-case $host in
- *linux*)
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- ;;
- *bsd*|*dragonfly*)
- CPPFLAGS="$CPPFLAGS -D_BSD_SOURCE"
- ;;
- *mingw*)
- CPPFLAGS="$CPPFLAGS -DOPENAXIOM_MS_WINDOWS_HOST"
- ;;
- *solaris*)
- ## FIXME: This should disappear
- CPPFLAGS="$CPPFLAGS -DSUNplatform"
- ;;
-esac
-])
-
-dnl ---------------------------
-dnl -- OPENAXIOM_REQUIRE_CXX --
-dnl ---------------------------
-AC_DEFUN([OPENAXIOM_REQUIRE_CXX],[
-oa_saved_cxxflags=$CXXFLAGS
-CXXFLAGS="-std=c++$1"
-AC_MSG_CHECKING([whether $CXX supports $CXXFLAGS])
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
- [AC_MSG_RESULT([yes])]
- [CXXFLAGS="$CXXFLAGS $oa_saved_cxxflags"],
- [AC_MSG_ERROR([OpenAxiom requires a C++$1 compiler])])
-])
-
-dnl -------------------------------
-dnl -- OPENAXIOM_CXX_GROK_OPTION --
-dnl -------------------------------
-dnl Check whether the C++ compiler accepts a given option.
-dnl In case of success, augment the accumulator passed in
-dnl (optional) second argument -- default: CXXFLAGS.
-AC_DEFUN([OPENAXIOM_CXX_GROK_OPTION], [
-opt=$1 # mandatory
-accumulator=$2 # optional
-if test -z $accumulator; then
- accumulator=CXXFLAGS
-fi
-current_options=\$${accumulator}
-oa_saved_cxxflags="$CXXFLAGS"
-AC_MSG_CHECKING([whether $CXX supports "$opt"])
-CXXFLAGS="$CXXFLAGS $opt"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
- [AC_MSG_RESULT([yes])]
- [CXXFLAGS=$oa_saved_cxxflags]
- [eval "$accumulator=\"$current_options $opt\""],
- [AC_MSG_RESULT([no])]
- [CXXFLAGS=$oa_saved_cxxflags])
-])
-
-
-dnl --------------------------
-dnl -- OPENAXIOM_CHECK_LLVM --
-dnl --------------------------
-dnl Do we have recent enough LLVM?
-AC_DEFUN([OPENAXIOM_CHECK_LLVM],[
-oa_use_llvm=no
-AC_CHECK_PROGS([LLVM_CONFIG],[llvm-config])
-if test -n "$LLVM_CONFIG"; then
- case `$LLVM_CONFIG --version` in
- 3.[[5-9]].*)
- oa_use_llvm=yes
- ;;
- *)
- ;;
- esac
- AC_DEFINE_UNQUOTED([OPENAXIOM_HOST_HAS_LLVM],[],[Host has LLVM.])
-fi
-AC_SUBST(oa_use_llvm)
-])
-
-dnl ------------------------------
-dnl -- OPENAXIOM_HOST_COMPILERS --
-dnl ------------------------------
-dnl Check for the host C, C++, and Lisp compilers
-AC_DEFUN([OPENAXIOM_HOST_COMPILERS],[
-OPENAXIOM_PROG_LISP
-OPENAXIOM_LISP_FLAVOR
-OPENAXIOM_REJECT_ROTTED_LISP
-OPENAXIOM_HOST_LISP_CPU_PRECISION
-OPENAXIOM_CHECK_DELAYED_FFI
-## Force Clang on Apple platforms; that is the only way we get
-## anything sane going on on this fine platform.
-case $host in
- *apple*)
- oa_cc_list="clang"
- oa_cxx_list="clang++"
- ;;
- *)
- oa_cc_list="gcc clang cc"
- oa_cxx_list="g++ clang++ CC c++"
- ;;
-esac
-AC_PROG_CC([$oa_cc_list])
-AC_PROG_CXX([$oa_cxx_list])
-## Where are the compilers coming from? GNU? Clang?
-oa_cxx_compiler_lineage=unknown
-case `$CXX -v` in
- *clang*)
- oa_cxx_compiler_lineage=clang
- ;;
- *)
- if test x$GCC = xyes || test x$GXX = xyes; then
- oa_cxx_compiler_lineage=gnu
- fi
- ;;
-esac
-
-## Augment C and C++ compiler flags with ABI directives as appropriate
-## before we proceed to infer other host datatype properties.
-if test -n "$oa_host_lisp_precision"; then
- if test $oa_cxx_compiler_lineage = gnu; then
- CPPFLAGS="$CPPFLAGS -m$oa_host_lisp_precision"
- LDFLAGS="$LDFLAGS -m$oa_host_lisp_precision"
- ## else, cross fingers and pray.
- fi
-fi
-OPENAXIOM_SATISFY_GCL_NEEDS
-AC_PROG_CPP
-AC_PROG_CXXCPP
-OPENAXIOM_CPPFLAGS_FOR_VENDOR_LOCK_INS
-OPENAXIOM_CHECK_LLVM
-])
-
-dnl ---------------------------------
-dnl -- OPENAXIOM_CXX_EXTRA_OPTIONS --
-dnl ---------------------------------
-AC_DEFUN([OPENAXIOM_EXTRA_CXX_OPTIONS], [
-oa_extra_cxxflags=
-OPENAXIOM_CXX_GROK_OPTION([-Wno-mismatched-tags],[oa_extra_cxxflags])
-OPENAXIOM_CXX_GROK_OPTION([-Wno-string-plus-int],[oa_extra_cxxflags])
-
-AC_SUBST(oa_extra_cxxflags)
-])
-
-dnl ---------------------------------
-dnl -- OPENAXIOM_SATISFY_GCL_NEEDS --
-dnl ---------------------------------
-dnl GCL assumes that the C compiler is from GNU.
-AC_DEFUN([OPENAXIOM_SATISFY_GCL_NEEDS],[
-## If we are using GCL as the base runtime system, then we do really need
-## a C compiler from GNU. Well, at least for the moment.
-case $oa_lisp_flavor,$oa_cxx_compiler_lineage in
- gcl,gnu)
- oa_cflags="-O2 -Wall -D_GNU_SOURCE"
- ;;
-
- gcl,*)
- AC_MSG_ERROR([We need a GNU C compiler])
- ;;
-esac
-AC_SUBST(oa_cflags)
-])
-
-dnl ---------------------------------
-dnl -- OPENAXIOM_GCL_BUILD_OPTIONS --
-dnl ---------------------------------
-dnl Determine options needed to build included GCL, if need be.
-AC_DEFUN([OPENAXIOM_GCL_BUILD_OPTIONS],[
-oa_host_has_libbfd=
-## Check for these only if we are going to build GCL from source.
-if test x"$oa_include_gcl" = xyes; then
- AC_CHECK_HEADER([bfd.h])
- AC_CHECK_LIB([bfd], [bfd_get_mtime], [oa_host_has_libbfd=yes])
-
- oa_gcl_bfd_option=
- if test x"$ac_cv_header_bfd_h" = xyes \
- && test x"$oa_host_has_libbfd" = xyes; then
- oa_gcl_bfd_option="--disable-dynsysbfd"
- else
- oa_gcl_bfd_option="--disable-statsysbfd"
- fi
-fi
-
-case $host in
- powerpc*darwin*)
- axiom_gcl_bfd_option="--disable-statsysbfd \
- --enable-machine=powerpc-macosx"
- axiom_gcl_mm_option="--enable-vssize=65536*2"
- ;;
-esac
-
-## We don't need GCL to build support for X Window system or TCL/TK:
-oa_gcl_x_option="--disable-tkconfig --disable-x --disable-xgcl --disable-tcltk"
-
-GCLOPTS="$oa_gcl_bfd_option $oa_gcl_mm_option $oa_gcl_x_option"
-AC_SUBST(GCLOPTS)
-])
-
-dnl --------------------------
-dnl -- OPENAXIOM_LISP_FLAGS --
-dnl --------------------------
-dnl Determine how to invoke the host Lisp system in batch mode.
-dnl We also take the opportunity to determine whether we can use
-dnl dynamically loaded modules.
-AC_DEFUN([OPENAXIOM_LISP_FLAGS],[
-AC_SUBST(oa_quiet_flags)
-AC_SUBST(oa_eval_flags)
-
-## Can we use dynamically linked libraries?
-## Tentatively answer `yes' -- this is modern time.
-oa_use_dynamic_lib=yes
-AC_SUBST(oa_use_dynamic_lib)
-
-## How are we supposed to tell the Lisp system to eval an expression
-## in batch mode? What is the extension of a compiled Lisp file?
-case $oa_lisp_flavor in
- gcl)
- oa_quiet_flags='-batch'
- oa_eval_flags='-eval'
- oa_use_dynamic_lib=no
- ;;
- ecl)
- oa_quiet_flags=
- oa_eval_flags='-norc -eval'
- oa_use_dynamic_lib=no
- ;;
- sbcl)
- oa_quiet_flags='--noinform --noprint'
- oa_eval_flags='--no-sysinit --no-userinit --disable-debugger --eval'
- ;;
- clisp)
- oa_quiet_flags='--quiet'
- oa_eval_flags='-norc -x'
- ;;
- clozure)
- oa_quiet_flags='--quiet --no-init'
- oa_eval_flags='--eval'
- ;;
- *) AC_MSG_ERROR([We do not know how to build OpenAxiom this $OA_LISP]) ;;
-esac
-])
-
-
-dnl -------------------------------
-dnl -- OPENAXIOM_FILE_EXTENSIONS --
-dnl -------------------------------
-dnl Compute various file extensions used by the build system.
-AC_DEFUN([OPENAXIOM_FILE_EXTENSIONS],[
-# What is the extension of object and executable files on this platform?
-AC_OBJEXT
-AC_DEFINE_UNQUOTED([OPENAXIOM_EXEEXT], ["$ac_cv_exeext"],
- [Extension of executable file.])
-
-oa_fasl_type=
-AC_MSG_CHECKING([compiled Lisp file extension])
-if test x"$oa_include_gcl" = xyes; then
- oa_fasl_type=o
-else
- ## We set the IFS to <space> as we don't want automatic
- ## replacement of <newline> by <space>.
- openaxiom_save_IFS=$IFS
- IFS=' '
- oa_fasl_type=`$OA_LISP $oa_quiet_flags $oa_eval_flags '(progn (format t "oa_fasl_type=~a" (pathname-type (compile-file-pathname "foo.lisp"))) (quit))'`
-
- ## Now pull out the fasl type. ECL has the habit of spitting noise
- ## about internal loading. Therefore, we must look only for a line that
- ## begins with oa_fasl_type.
- oa_fasl_type=`echo $oa_fasl_type | grep '^oa_fasl_type'`
- IFS=$openaxiom_save_IFS
- oa_fasl_type=`echo $oa_fasl_type | sed -e 's/oa_fasl_type=//'`
- if test -z "$oa_fasl_type"; then
- AC_MSG_ERROR([Could not determine extension for compiled Lisp files])
- fi
-fi
-AC_MSG_RESULT([$oa_fasl_type])
-AC_SUBST(FASLEXT,$oa_fasl_type)
-])
-
-dnl ------------------------------
-dnl -- OPENAXIOM_FFI_TYPE_TABLE --
-dnl ------------------------------
-dnl Build FFI type translation table used by
-dnl the Boot translator and the Spad compiler
-AC_DEFUN([OPENAXIOM_FFI_TYPE_TABLE],[
-AC_SUBST(void_type)
-AC_SUBST(char_type)
-AC_SUBST(int_type)
-AC_SUBST(float_type)
-AC_SUBST(double_type)
-AC_SUBST(string_type)
-AC_SUBST(pointer_type)
-
-case $oa_lisp_flavor in
- gcl)
- void_type='void'
- char_type='char'
- int_type='int'
- float_type='float'
- double_type='double'
- string_type='string'
- case $oa_host_lisp_precision,$openaxiom_gcl_version in
- 64,*2.6.7*|64,*2.6.8*) pointer_type='(signed-integer 64)' ;;
- *) pointer_type='fixnum' ;;
- esac
- ;;
- sbcl)
- void_type='void'
- char_type='char'
- int_type='int'
- float_type='float'
- double_type='double'
- string_type='c-string'
- pointer_type='(* t)'
- ;;
- clisp)
- void_type='nil'
- char_type='character'
- int_type='int'
- float_type='single-float'
- double_type='double-float'
- string_type='c-string'
- pointer_type='c-pointer'
- ;;
- ecl)
- void_type=':void'
- char_type=':char'
- int_type=':int'
- float_type=':float'
- double_type=':double'
- string_type=':cstring'
- pointer_type=':pointer-void'
- ;;
- clozure)
- void_type=':void'
- # FIXME: this is not really what we want, but good enough for now.
- char_type=':unsigned-byte'
- int_type=':signed-fullword'
- float_type=':single-float'
- double_type=':double-float'
- # Clozure CL wants you to deal with your own mess
- string_type=':address'
- pointer_type=':address'
- ;;
- *)
- AC_MSG_ERROR([We do not know how to translate native types for this Lisp])
- ;;
-esac
-])
-
-
-dnl ---------------------------------------
-dnl -- OPENAXIOM_HOST_LISP_CPU_PRECISION --
-dnl ---------------------------------------
-dnl Determine the register precision as seen by the host Lisp system, and
-dnl set the global variable oa_host_lisp_precision.
-AC_DEFUN([OPENAXIOM_HOST_LISP_CPU_PRECISION], [
-if test x"$oa_include_gcl" != xyes; then
- AC_MSG_CHECKING([CPU precision as seen by $OA_LISP])
- # All Lisp systems we support put the relevant information
- # on the *FEATURES* list.
- case `echo '*features*' | $OA_LISP` in
- *X86-64*|*X86_64*|*WORD-SIZE=64*|*64-BIT*)
- # PORTME: the pattern above covers only the supported free Lisps, i.e.
- # GCL, SBCL, CLisp, ECL and Clozure CL.
- oa_host_lisp_precision=64
- ;;
- *)
- # assume everything else is 32-bit
- # FIXME: this is bold assumption.
- oa_host_lisp_precision=32
- ;;
- esac
- AC_MSG_RESULT([$oa_host_lisp_precision])
-fi
-])
-
-
-dnl ------------------------------------
-dnl -- OPENAXIOM_HOST_DATA_PROPERTIES --
-dnl ------------------------------------
-AC_DEFUN([OPENAXIOM_HOST_DATA_PROPERTIES],[
-## Byte order of the host.
-AC_C_BIGENDIAN
-AC_CHECK_SIZEOF([void*])
-if test x"$oa_include_gcl" = xyes; then
- ## PORTME: does GCL really care about system where CHAR_BITS is not 8?
- oa_host_lisp_precision=`expr "$ac_cv_sizeof_voidp * 8"`
-fi
-
-## Now that we have full knowledge of the host Lisp to use, tell
-## the rest of the runtime about the host natural integer precision.
-AC_DEFINE_UNQUOTED([OPENAXIOM_HOST_LISP_PRECISION],
- [$oa_host_lisp_precision],
- [The width of the host Lisp and CPU registers.])
-])
-
-dnl --------------------------------------
-dnl -- OPENAXIOM_DYNAMIC_MODULE_SUPPORT --
-dnl --------------------------------------
-dnl Infer compiler flags, file prefix and extensions associated
-dnl with dynamic module support.
-dnl We need to link some C object files into in the Lisp images we
-dnl use. Some Lisps (e.g. GCL, ECL) support inclusion of ``ordinary''
-dnl object files. Other Lisps (e.g. SBCL, Clozure CL) support only dynamic
-dnl or shared libraries. However, the exact minutia of portably
-dnl building shared libraries are known to be fraught with all kinds
-dnl of traps. Consequently, we sought to use dedicated tools such
-dnl Libtool. Unfortunately, Libtool has been steadily improved over the years
-dnl to become nearly useless when mixed with non-libtool components.
-AC_DEFUN([OPENAXIOM_DYNAMIC_MODULE_SUPPORT],[
-AC_SUBST(oa_use_libtool_for_shared_lib)
-AC_SUBST(oa_shrobj_flags)
-AC_SUBST(oa_shrlib_flags)
-AC_SUBST(oa_shrlib_prefix)
-oa_use_libtool_for_shared_lib=no
-oa_shrobj_flags=
-oa_shrlib_flags=
-## Tell Libtool to assume `dlopen' so that it does not have to
-## emulate it.
-LT_PREREQ([2.2.6])
-LT_INIT([pic-only dlopen win32-dll shared])
-AC_SUBST([LIBTOOL_DEPS])
-# Most targets use 'lib' prefix, as in 'libOpenAxiom'.
-oa_shrlib_prefix='lib'
-# Give me extension of libraries
-AC_SUBST(shared_ext)
-AC_SUBST(libext)
-module=yes
-eval shared_ext=\"$shrext_cmds\"
-case $host in
- *mingw*|*cygwin*)
- oa_shrobj_flags='-prefer-pic'
- oa_shrlib_flags="-shared -Wl,--export-all-symbols"
- # Windows platforms don't need a prefix
- oa_shrlib_prefix=
- ;;
- *darwin*)
- oa_shrobj_flags='-dynamic'
- oa_shrlib_flags='-bundle -undefined suppress -flat_namespace'
- ;;
- *)
- oa_shrobj_flags='-prefer-pic'
- oa_shrlib_flags='-shared'
- ;;
-esac
-])
-
-
-dnl ---------------------------
-dnl -- OPENAXIOM_BUILD_TOOLS --
-dnl ---------------------------
-dnl Check for utilities we need for building the system.
-AC_DEFUN([OPENAXIOM_BUILD_TOOLS],[
-AC_CHECK_PROG([TOUCH], [touch],
- [touch], [AC_MSG_ERROR(['touch' program is missing.])])
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_SED
-AC_CHECK_PROGS([MKTEMP], [mktemp])
-AC_PROG_AWK
-
-## Find GNU Make
-case $build in
- *linux*)
- # GNU/Linux systems come equipped with GNU Make, called `make'
- AC_CHECK_PROGS([MAKE], [make],
- [AC_MSG_ERROR([Make utility missing.])])
- ;;
- *)
- # Other systems tend to spell it `gmake' and such
- AC_CHECK_PROGS([MAKE], [gmake make],
- [AC_MSG_ERROR([Make utility missing.])])
- if ! $MAKE --version | grep 'GNU' 2>/dev/null; then
- AC_MSG_ERROR([OpenAxiom build system needs GNU Make.])
- fi
- ;;
-esac
-])
-
-dnl ---------------------------
-dnl -- OPENAXIOM_HOST_EDITOR --
-dnl ---------------------------
-dnl Check for a text editor for use when
-dnl the system is up and running.
-AC_DEFUN([OPENAXIOM_HOST_EDITOR],[
-AC_SUBST(oa_editor)
-## On Windows system, we prefer the default installation
-## location to be 'C:/OpenAxiom'. We cannot use AC_PREFIX_DEFAULT
-## directly as it seems to operate unconditionally. Therefore, we
-## resort to this dirty trick stepping over Autoconf's internals.
-case $host in
- *mingw*)
- ac_default_prefix="C:/OpenAxiom"
- AC_PATH_PROGS([oa_editor],[notepad.exe])
- ;;
- *)
- AC_PATH_PROGS([oa_editor],[vi])
- ;;
-esac
-])
-
-dnl --------------------------
-dnl -- OPENAXIOM_HOST_PROGS --
-dnl --------------------------
-dnl Check for programs we need in the host environment.
-AC_DEFUN([OPENAXIOM_HOST_PROGS],[
-OPENAXIOM_HOST_EDITOR
-AC_PATH_PROG([PDFLATEX], [pdflatex])
-if test -z "$PDFLATEX"; then
- AC_PATH_PROG([LATEX], [latex],
- [AC_MSG_NOTICE([Documentation is disabled.])])
-fi
-AC_CHECK_PROGS([MAKEINDEX], [makeindex])
-])
-
-
-dnl -----------------------------
-dnl -- OPENAXIOM_BUILD_OPTIONS --
-dnl -----------------------------
-dnl Process build options specified on the command line.
-AC_DEFUN([OPENAXIOM_BUILD_OPTIONS],[
-## Does it make sense to pretend that we support multithreading?
-oa_enable_threads=no
-AC_ARG_ENABLE([threads], [ --enable-threads turn on threads support],
- [case $enableval in
- yes|no) oa_enable_threads=$enableval ;;
- *) AC_MSG_ERROR([erroneous value for --enable-threads]) ;;
- esac])
-# GNU compilers want hints about multithreading.
-case $oa_cxx_compiler_lineage,$oa_enable_threads in
- gnu,yes)
- oa_cflags="$oa_cflags -pthread"
-esac
-AC_SUBST(oa_enable_threads)
-
-## Occaionally, we may want to keep intermediary files.
-oa_keep_files=
-AC_ARG_ENABLE([int-file-retention],
- [ --enable-int-file-retention keep intermediary files],
- [case $enableval in
- yes|no) oa_keep_files=$enableval ;;
- *) AC_MSG_ERROR([erroneous value for --enable-int-file-retention]) ;;
- esac])
-AC_SUBST(oa_keep_files)
-
-## Parse args for profiling-enabled build.
-oa_enable_profiling=no
-AC_ARG_ENABLE([profiling], [ --enable-profiling turn profiling on],
- [case $enableval in
- yes|no) oa_enable_profiling=$enableval ;;
- *) AC_MSG_ERROR([erroneous value for --enable-profiling]) ;;
- esac])
-AC_SUBST(oa_enable_profiling)
-
-## Lisp optimization settings
-oa_optimize_options=speed
-## Shall we proclaim safety?
-oa_enable_checking=no # don't turn on checking by default.
-AC_ARG_ENABLE([checking], [ --enable-checking turn runtime checking on],
- [case $enableval in
- yes|no) oa_enable_checking=$enableval ;;
- *) AC_MSG_ERROR([erroneous value for --enable-checking]) ;;
- esac])
-if test x"$oa_enable_checking" = xyes; then
- case $oa_lisp_flavor in
- gcl) # GCL-2.6.x does not understand debug.
- oa_optimize_options="$oa_optimize_options safety"
- ;;
- *) oa_optimize_options="$oa_optimize_options safety debug"
- ;;
- esac
- AC_MSG_NOTICE([runtime checking may increase compilation time])
-fi
-AC_SUBST(oa_enable_checking)
-AC_SUBST(oa_optimize_options)
-])
-
-
-dnl -----------------------------
-dnl -- OPENAXIOM_CHECK_SIGNALS --
-dnl -----------------------------
-dnl The host platform must be able to handle signals. Although, this is
-dnl not strictly necessary, that is the way OpenAxiom source code
-dnl is currently written. We ask for a POSIX or ISO C semantics, though
-dnl we have a strong preference for POSIX-conformant semantics.
-AC_DEFUN([OPENAXIOM_CHECK_SIGNALS],[
-AC_CHECK_HEADERS([signal.h],
- [],
- [AC_MSG_ERROR([OpenAxiom needs signal support.])])
-AC_CHECK_DECLS([sigaction], [], [],
- [#include <signal.h>])
-AC_CHECK_DECLS([kill], [], [],
- [#include <signal.h>])
-])
-
-
-dnl -----------------------------
-dnl -- OPENAXIOM_CHECK_SOCKETS --
-dnl -----------------------------
-dnl The host environment must be capable of handling communication through
-dnl sockets. This is required for interfacing AXIOMsys
-dnl and Superman. Notice that ideally, we should decouple
-dnl that interface in such a way that we can still build OpenAxiom
-dnl when Superman is not needed or a socket library is not
-dnl available.
-AC_DEFUN([OPENAXIOM_CHECK_SOCKETS],[
-case $host in
- *mingw*)
- AC_CHECK_HEADERS([winsock2.h],
- [oa_host_has_socket=yes],
- [])
- oa_c_runtime_extra="-lwsock32"
- ;;
- *)
- AC_CHECK_HEADERS([sys/socket.h],
- [oa_host_has_socket=yes],
- [])
- ;;
-esac
-if test x$oa_host_has_socket != xyes; then \
- AC_MSG_ERROR([OpenAxiom needs suport for sockets.])
-fi
-## solaris-based systems tend to hide the socket library.
-case $host in
- *solaris*)
- AC_SEARCH_LIBS([accept], [socket],
- [], [AC_MSG_ERROR([socket library not found])])
- AC_SEARCH_LIBS([gethostbyname], [nsl])
- ;;
- *) ;;
-esac
-
-AC_EGREP_CPP([has_af_local],
- [#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#else
-# include <winsock2.h>
-#endif
-#ifdef AF_LOCAL
- has_af_local
-#endif
- ],
- [AC_DEFINE([HAVE_AF_LOCAL], [1], [Host has AF_LOCAL])])
-
-
-AC_EGREP_CPP([has_af_unix],
- [#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#else
-# include <winsock2.h>
-#endif
-#ifdef AF_UNIX
- has_af_unix
-#endif
- ],
- [AC_DEFINE([HAVE_AF_UNIX], [1], [Host has AF_UNIX])])
-])
-
-dnl --------------------------------
-dnl -- OPENAXIOM_CHECK_FILESYSTEM --
-dnl --------------------------------
-dnl Some parts of OpenAxiom manipulate files and directories. They
-dnl more or less directly reflect the underlying platform semantics.
-dnl For the moment, we require POSIX semantics, though that does not
-dnl seem necessary. That restriction should be removed as soon as possible.
-AC_DEFUN([OPENAXIOM_CHECK_FILESYSTEM],[
-AC_CHECK_HEADERS([sys/stat.h],
- [],
- [AC_MSG_ERROR([OpenAxiom needs <sys/stat.h>])])
-case $host in
- *mingw*)
- ;;
- *)
- AC_CHECK_HEADERS([dirent.h],
- [],
- [AC_MSG_ERROR([OpenAxiom needs <dirent.h>])])
- ;;
-esac
-
-AC_CHECK_HEADERS([unistd.h], [],
- [AC_MSG_ERROR([OpenAxiom needs <unistd.h>])])
-])
-
-dnl -----------------------------
-dnl -- OPENAXIOM_CHECK_PROCESS --
-dnl -----------------------------
-AC_DEFUN([OPENAXIOM_CHECK_PROCESS],[
-AC_CHECK_HEADERS([setenv, putenv], [], [], [#include <stdlib.h>])
-AC_CHECK_DECLS([getuid, geteuid, getgid, getegid], [], [],
- [#include <unistd.h>])
-AC_CHECK_HEADERS([sys/wait.h])
-if test x"$ac_cv_header_sys_wait_h" = xyes; then \
- AC_CHECK_DECLS([wait],
- [],
- [],
- [#include <sys/wait.h>])
-fi
-AC_CHECK_DECLS([fork],
- [],
- [],
- [#include <unistd.h>])
-])
-
-dnl ----------------------------------
-dnl -- OPENAXIOM_CHECK_CORE_SUPPORT --
-dnl ----------------------------------
-AC_DEFUN([OPENAXIOM_CHECK_CORE_SUPPORT],[
-oa_c_runtime=
-AC_SUBST(oa_c_runtime)
-
-oa_c_runtime_extra=
-AC_SUBST(oa_c_runtime_extra)
-
-OPENAXIOM_CHECK_FILESYSTEM
-OPENAXIOM_CHECK_SIGNALS
-OPENAXIOM_CHECK_SOCKETS
-OPENAXIOM_CHECK_PROCESS
-#OPENAXIOM_CHECK_GMP
-])
-
-dnl ------------------------
-dnl -- OPENAXIOM_CHECK_IO --
-dnl ------------------------
-AC_DEFUN([OPENAXIOM_CHECK_IO],[
-# Utility for temporary pathnames.
-if test -n $ac_cv_header_unistd_h; then
- AC_CHECK_DECLS([mktemp, mkdtemp, mkstemp], [], [], [[#include <unistd.h>]])
-fi
-if test -n $ac_cv_have_decl_mktemp; then
- AC_CHECK_DECLS([tempnam],[],[],[[#include <stdio.h>]])
-fi
-# Honor support for large files
-AC_SYS_LARGEFILE
-# What about long file names?
-AC_SYS_LONG_FILE_NAMES
-# Posix terminal IO?
-AC_SYS_POSIX_TERMIOS
-## Does this system have openpty or shall we emulate?
-AC_CHECK_HEADERS([sys/ioctl.h pty.h util.h libutil.h termios.h])
-AC_CHECK_DECLS([openpty],[],[],
- [#if HAVE_PTY_H
-# include <pty.h>
-#endif
-#if HAVE_UTIL_H
-# include <util.h>
-#endif
-#if HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif
-#if HAVE_TERMIOS_H
-# include <termios.h>
-#endif
-#if HAVE_LIBUTIL_H
-# include <sys/types.h>
-# include <libutil.h>
-#endif
- ])
-if test x"$ac_cv_have_decl_openpty" = xyes; then \
- AC_SEARCH_LIBS([openpty],[util])
-fi
-
-oa_use_sman=1
-if test x"$ac_cv_have_decl_fork" = xyes \
- -a x"$ac_cv_have_decl_wait" = xyes; then \
- oa_c_runtime="$oa_c_runtime terminal_io"
-else
- oa_use_sman=0
- AC_MSG_NOTICE([Superman component is disabled.])
-fi
-
-AC_DEFINE_UNQUOTED([OPENAXIOM_USE_SMAN], [$oa_use_sman],
- [Whether to use the session manager as driver.])
-])
-
-
-dnl -------------------------
-dnl -- OPENAXIOM_CHECK_X11 --
-dnl -------------------------
-dnl One of the thorniest issues with programs that use the X Window System
-dnl is portability. There exist many implementations of the X11
-dnl specification, each with its own variations, extensions, and what
-dnl not. Designing hand-written makefiles for such programs can be a
-dnl daunting task, fraut with all kinds of traps. Fortunately, Autoconf
-dnl provides us with some help, namely the macro [[AC_PATH_X]] and
-dnl [[AC_PATH_XTRA]]. The former searches the directories where the
-dnl X11 include files and the library files reside. The latter is an
-dnl enhanced version that:
-dnl 1. computes the C compiler flags required by X11;
-dnl 2. computes the linker flags required by X11;
-dnl 3. checks for special libraries that some systems need in order to
-dnl compile X11 programs;
-dnl 4. checks for special X11R6 libraries that need to be linked before
-dnl the flag [[-lX11]].
-AC_DEFUN([OPENAXIOM_CHECK_X11],[
-AC_PATH_XTRA
-
-## Finally, output the list of libraries that need to appear before -lX11
-## Some part of OpenAxiom depends on Xpm. That library has kind of uncertain
-## future. At some point in the past, it was deprecated, to be
-## replaced by xpm-nox; then came back again. So, its support may
-## vary from system to system. For the moment, we assume that if X11
-## is found then, Xpm is also present. Though, clearly that is a
-## very optimistic assumption. Long term, OpenAxiom should get rid of
-## dependence on Xpm. A nearly fool-proof test would be probably
-## inspired by AC_PATH_XTRA. I don't have time to get to that
-## complication right now. Will fix later.
-## But we can check for the existence of <X11/xpm.h>
-## Also check for Xt headers
-X_PRE_LIBS="-lXpm -lXt $X_PRE_LIBS"
-AC_SUBST(X_PRE_LIBS)
-
-## If the system supports X11, then build graphics
-oa_use_x=no
-if test x"$no_x" = xyes; then
- AC_MSG_NOTICE([The Graphics component is disabled.])
-else
- oa_saved_cxxflags=$CXXFLAGS
- oa_saved_cppflags=$CPPFLAGS
- oa_saved_ldflags=$LDFLAGS
- CXXFLAGS="$CXXFLAGS $X_CFLAGS"
- CPPFLAGS="$CPPFLAGS $X_CFLAGS"
- LDFLAGS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS"
- AC_CHECK_HEADERS([X11/xpm.h],[],
- [AC_MSG_ERROR([The header <X11/xpm.h> could not be found. Install Xpm development package and re-start the configuration process.])])
- AC_CHECK_HEADERS([X11/Intrinsic.h],[],
- [AC_MSG_ERROR([The header <X11/Intrinsic.h> could not be found. Install Xt development package and re-start the configuration process.])])
- oa_use_x=yes
- oa_c_runtime="$oa_c_runtime graphics"
- LDFLAGS=$oa_saved_ldflags
- CPPFLAGS=$oa_saved_cppflags
- CXXFLAGS=$oa_saved_cxxflags
-fi
-AC_SUBST(oa_use_x)
-])
-
-dnl ------------------------
-dnl -- OPENAXIOM_CHECK_QT --
-dnl ------------------------
-AC_DEFUN([OPENAXIOM_CHECK_QT],[
-# Check for Qt utilities.
-oa_has_qt=no
-AC_CHECK_PROGS([OA_QT_MOC], [moc])
-AC_CHECK_PROGS([OA_QT_QMAKE], [qmake])
-if test -n "$OA_QT_MOC"; then
- AC_MSG_CHECKING([Qt version])
- oa_qt_version=`"$OA_QT_MOC" -v 2>&1 | sed -e 's/^.*(\(.*\))$/\1/'`
- AC_MSG_RESULT([$oa_qt_version])
- case $oa_qt_version in
- *[1-3]\.[0-9]+\.[0-9]+)
- AC_MSG_WARN([This version of Qt is too old for OpenAxiom.])
- ;;
- *)
- oa_has_qt=yes
- ;;
- esac
-fi
-AC_DEFINE_UNQUOTED([OPENAXIOM_USE_GUI], [`expr x$oa_has_qt = xyes`],
- [Whether to use the QT-based GUI interface as driver.])
-])
-
-dnl -------------------------------------
-dnl -- OPENAXIOM_CHECK_BROWSER_SUPPORT --
-dnl -------------------------------------
-dnl The HyperDoc component needs string pattern matching.
-dnl We require [[<regex.h>]], with POSIX-conformant definition. We used
-dnl to key build of HyperDoc component on the availability of X11
-dnl functionalities. That, however, is a severe restriction. Not all
-dnl of the HyperDoc components need X11. Some, such as [[htadd]], don't
-dnl need X11 at all. Therefore we have lifted part of the restrictions.
-dnl See \File{src/hyper/Makefile} for more details. Note that is we don't
-dnl build the HyperDoc component, the compilation of algebra files are
-dnl drawn in [[Unexpected HT command]] noise.
-AC_DEFUN([OPENAXIOM_CHECK_BROWSER_SUPPORT],[
-oa_host_has_regex=
-AC_CHECK_HEADER([regex.h],
- [oa_host_has_regex=yes],
- [oa_host_has_regex=no])
-AC_SUBST(oa_host_has_regex)
-])
-
-dnl ------------------------------
-dnl -- OPENAXIOM_CHECK_GRAPHICS --
-dnl ------------------------------
-AC_DEFUN([OPENAXIOM_CHECK_GRAPHICS],[
-OPENAXIOM_CHECK_X11
-OPENAXIOM_CHECK_QT
-OPENAXIOM_CHECK_BROWSER_SUPPORT
-])
-
-
-dnl ------------------------
-dnl -- OPENAXIOM_CHECK_MM --
-dnl ------------------------
-dnl Check for host capability of memory mapping.
-AC_DEFUN([OPENAXIOM_CHECK_MM],[
-AC_CHECK_HEADERS([sys/mman.h fcntl.h])
-## We want anonymous mapping for memory allocation. Unfortunately,
-## the flag for anonymous mapping is not standardized. Popular names
-## are MAP_ANONYMOUS and MAP_ANON.
-if test x"$ac_cv_header_sys_mman_h" = xyes; then
- AC_MSG_CHECKING([for flag to request anonymous memory mapping])
- AC_EGREP_CPP([MAP_ANONYMOUS],
- [#include <sys/mman.h>
-#ifdef MAP_ANONYMOUS
- "MAP_ANONYMOUS"
-#endif],
- [openaxiom_mm_anonymous_flag=MAP_ANONYMOUS])
- if test -z "$openaxiom_mm_anonymous_flag"; then
- AC_EGREP_CPP([MAP_ANON],
- [#include <sys/mman.h>
-#ifdef MAP_ANON
- "MAP_ANON"
-#endif],
- [openaxiom_mm_anonymous_flag=MAP_ANON])
- fi
- ## It would be curious that we don't have an anonymous mapping
- ## capability. Let that be known loudly.
- if test -n "$openaxiom_mm_anonymous_flag"; then
- AC_MSG_RESULT([$openaxiom_mm_anonymous_flag])
- else
- AC_MSG_ERROR([Could not find flag for anonymous map])
- fi
- AC_DEFINE_UNQUOTED([OPENAXIOM_MM_ANONYMOUS_MAP_FLAG],
- [$openaxiom_mm_anonymous_flag],
- [mmap anonymous flag])
-fi
-])
-
-dnl -------------------------
-dnl -- OPENAXIOM_CHECK_GMP --
-dnl -------------------------
-AC_DEFUN([OPENAXIOM_CHECK_GMP],[
-AC_CHECK_HEADERS([gmp.h], [AC_CHECK_LIB([gmp],[__gmpz_init])])
-AM_CONDITIONAL([OA_HAS_GMP], [test -n $ac_cv_header_gmp_h])
-])
-
-dnl --------------------------
-dnl -- OPENAXIOM_CHECK_MISC --
-dnl --------------------------
-AC_DEFUN([OPENAXIOM_CHECK_MISC],[
-case $oa_cxx_compiler_lineage in
- gnu|clang)
- CFLAGS="$CFLAGS -O2 -Wall"
- CXXFLAGS="$CXXFLAGS -O2 -Wall"
- ;;
-esac
-])