This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/autoconf/configure.in
Vitor Santos Costa 0e58a8f41e update README to refer to cmake, and to use MD format.
Moved autoconf files out of the way so that people won't try using them.
Removed INSTALL, as it just duplicates README.md. Maybe in the future.
2016-02-18 13:20:49 +00:00

2301 lines
65 KiB
Plaintext
Executable File

dnl
dnl Process this file with autoconf to produce a configure script.
dnl
AC_PREREQ([2.50])
dnl VARIABLES EXPORTED
dnl
dnl ARCH
dnl
dnl DefHeapSpace= Default DB space
dnl DefStackSpace= Default global+local
dnl DefTrailSpace= Default trail
dnl
dnl ENVIRONMENT to run YAP before Install is complete
dnl PRE_INSTALL_ENV= prefix to run YAP after libYap.so and yap are available
dnl but before make install
dnl INSTALL_ENV= prefix to run YAP while doing make install
dnl
dnl EXEC_SUFFIX=suffix for executable (.exe)
dnl
dnl INSTALL_DLLS= we can do dynamic linking
dnl SO= suffix for loadable binary (.so,.dll,.o)
dnl MERGE_DLL_OBJS= we need to merge several .o files into a single dll.
dnl
dnl CXXFLAGS= C++-flags
dnl SHLIB_FLAGS= C-flags used to compile a file that will be loaded dynamically
dnl DO_SECOND_LD= call a separate dll ld
dnl YAPLIB_LD= construct libYap.DLL
dnl SHLIB_LD= dll ld (C)
dnl SHLIB_CXX_LD= dll ld (C++)
dnl SHLIB_CFLAGS= cflags to use when constructing a DLL
dnl SHLIB_CXXCFLAGS= c++flags to use when constructing a DLL
dnl YAPLIB_CFLAGS=flags to construct libYap
dnl EXTRA_LIBS_FOR_DLLS= libs that are required when lding a so
dnl EXTRA_LIBS_FOR_SWIDLLS= libs that are required when lding a SWI so
AC_INIT(YAP, 6.3.4, yap-users@sf.net, yap )
DOC_VERSION=4.2.9
AC_ARG_WITH(sysroot,
[ --with-sysroot[=DIR] set sysroot in compiler],
[ SYSROOT="$withval"
CPPFLAGS="$CPPFLAGS --sysroot=$SYSROOT"
CFLAGS="$CFLAGS --sysroot=$SYSROOT"
CXXFLAGS="$CXXFLAGS --sysroot=$SYSROOT"
LDFLAGS="$LDFLAGS --sysroot=$SYSROOT" ],
[])
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX
AC_CHECK_TOOL([RC], [windres], [:])
# if we are trying to use -m32 in a WIN32/mingw setup then
# we cannot trust lpthread
# we cannot trust RC
AC_ARG_ENABLE(abi,
[ --enable-abi support an ABI ],
[ CC="$CC -m$enableval"; CPP="$CPP -m$enableval"; CXX="$CXX -m$enableval"; RCFLAGS="--output-format=coff --target=pe-i386" ; pthreadlib="`pwd`/pthreadGC2.dll"; win_abi="$enableval" ] , win_abi=no )
AC_CONFIG_HEADER(config.h)
AC_CONFIG_HEADER(YapTermConfig.h)
dnl store the environments compilation flags
mycflags="$CFLAGS"
AC_PROG_AWK
AC_SUBST(GCC)
AC_SUBST(RC)
AC_SUBST(RCFLAGS)
AC_SUBST(C_INTERF_FLAGS)
AC_SUBST(C_PARSER_FLAGS)
AC_SUBST(ECPP)
AC_LANG(C)
AC_CANONICAL_SYSTEM
dnl dnl includes _POSIX_C_SOURCE=200809
dnl AC_MSG_CHECKING(_XOPEN_SOURCE)
dnl AC_CACHE_VAL(ac_cv_xopen,
dnl [AC_TRY_COMPILE([
dnl #define _XOPEN_SOURCE 700
dnl #include <unistd.h>
dnl ],
dnl [],
dnl [ac_cv_xopen=true],
dnl [ac_cv_xopen=false])])
dnl if test "$ac_cv_xopen" = true; then
dnl AC_DEFINE(_XOPEN_SOURCE, 700, [Define if _XOPEN_SOURCE is needed])
dnl AC_MSG_RESULT(yes)
dnl else
dnl AC_MSG_RESULT(no)
dnl fi
dnl AC_MSG_CHECKING(_FILE_OFFSET_BITS)
dnl AC_CACHE_VAL(ac_cv_file_offset_bits,
dnl [AC_TRY_COMPILE([
dnl #define _FILE_OFFSET_BITS
dnl #include <unistd.h>
dnl ],
dnl [],
dnl [ac_cv_file_offset_bits=true],
dnl [ac_cv_file_offset_bits=false])])
dnl if test "$ac_cv_file_offset_bits" = true; then
dnl AC_DEFINE(_FILE_OFFSET_BITS, 64, [Define if _FILE_OFFSET_BITS is needed])
dnl AC_MSG_RESULT(yes)
dnl else
dnl AC_MSG_RESULT(no)
dnl fi
dnl AC_MSG_CHECKING(_ISOC99_SOURCE)
dnl AC_CACHE_VAL(ac_cv_isoc99_source,
dnl [AC_TRY_COMPILE([
dnl #define _ISOC99_SOURCE
dnl #include <unistd.h>
dnl ],
dnl [],
dnl [ac_cv_isoc99_source=true],
dnl [ac_cv_isoc99_source=false])])
dnl if test "$ac_cv_isoc99_source" = true; then
dnl AC_DEFINE(_ISOC99_SOURCE, 1, [Define if _ISOC99_SOURCE is needed])
dnl AC_MSG_RESULT(yes)
dnl else
dnl AC_MSG_RESULT(no)
dnl fi
dnl AC_MSG_CHECKING(_ISOC11_SOURCE)
dnl AC_CACHE_VAL(ac_cv_isoc11_source,
dnl [AC_TRY_COMPILE([
dnl #define _ISOC11_SOURCE
dnl #include <unistd.h>
dnl ],
dnl [],
dnl [ac_cv_isoc11_source=true],
dnl [ac_cv_isoc11_source=false])])
dnl if test "$ac_cv_isoc11_source" = true; then
dnl AC_DEFINE(_ISOC11_SOURCE, 1, [Define if _ISOC11_SOURCE is needed])
dnl AC_MSG_RESULT(yes)
dnl else
dnl AC_MSG_RESULT(no)
dnl fi
if test "$yap_cv_minisat" = no -a "$INSTALL_DLLS" = "no"
then
PKG_MINISAT=""
else
PKG_MINISAT="packages/swi-minisat2 packages/swi-minisat2/C"
fi
AC_DEFINE_UNQUOTED(HOST_ALIAS,"${target}",[what is the configure host name])
m4_define([HAS_TOP])
AC_DEFUN([AX_SPLIT_VERSION],[
AC_REQUIRE([AC_PROG_SED])
YAP_VERSION="$PACKAGE_VERSION"
YAP_MAJOR_VERSION=`echo "$PACKAGE_VERSION" | $SED 's/\([[^.]][[^.]]*\).*/\1/'`
YAP_MINOR_VERSION=`echo "$PACKAGE_VERSION" | $SED 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
YAP_POINT_VERSION=`echo "$PACKAGE_VERSION" | $SED 's/[[^.]][[^.]]*.[[^.]][[^.]]*.\(.*\)/\1/'`
AC_MSG_CHECKING([Major version])
AC_MSG_RESULT([$YAP_MAJOR_VERSION])
AC_MSG_CHECKING([Minor version])
AC_MSG_RESULT([$YAP_MINOR_VERSION])
AC_MSG_CHECKING([Point version])
AC_MSG_RESULT([$YAP_POINT_VERSION])
])
AX_SPLIT_VERSION
case "$target_cpu" in
i*86*)
YAP_TARGET=i386
;;
x86*)
YAP_TARGET=amd64
;;
sparc*)
YAP_TARGET=sparc
;;
*)
YAP_TARGET=unknown
;;
esac
dnl Check for nullptr (bug 626472)
AC_LANG_CPLUSPLUS
AC_MSG_CHECKING(for nullptr)
AC_CACHE_VAL(ac_cv_nullptr,
[AC_TRY_COMPILE([],
[int* foo = nullptr;],
[ac_cv_nullptr=true],
[ac_cv_nullptr=false])])
if test x"$ac_cv_nullptr" = xtrue -o 0$_MSC_VER -ge 01600; then
AC_DEFINE(HAVE_NULLPTR, [], [c++ nullptr support])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_LANG_C
dnl hardware/engine
AC_DEFINE(MSHIFTOFFS, 1, [compiler should shift offsets.])
AC_DEFINE(ALIGN_LONGS, 1, [longs should be in addresses that are multiple of four.])
# AC_DEFINE(LOW_ABSMI, 1, [absmi located at initial addresses, unused.])
AC_ARG_ENABLE(tabling,
[ --enable-tabling support tabling ],
tabling="$enableval", tabling=yes)
AC_ARG_ENABLE(or-parallelism,
[ --enable-or-parallelism support or-parallelism as: copy,sba,a-cow,threads ],
orparallelism="$enableval", orparallelism=no)
AC_ARG_ENABLE(depth-limit,
[ --enable-depth-limit support depth-bound computation ],
depthlimit="$enableval", depthlimit=yes)
AC_ARG_ENABLE(wam-profile,
[ --enable-wam-profile support low level profiling of abstract machine ],
wamprofile="$enableval", wamprofile=no)
AC_ARG_ENABLE(low-level-tracer,
[ --enable-low-level-tracer support support for procedure-call tracing ],
lowleveltracer="$enableval", lowleveltracer=no)
AC_ARG_ENABLE(threads,
[ --enable-threads support system threads ],
threads="$enableval", threads=no)
AC_ARG_ENABLE(pthread-locking,
[ --enable-pthread-locking use pthread locking primitives for internal locking (requires threads) ],
pthreadlocking="$enableval", pthreadlocking=yes)
AC_ARG_ENABLE(max-performance,
[ --enable-max-performance try using the best flags for specific architecture ],
maxperformance="$enableval", maxperformance=no)
AC_ARG_ENABLE(max-memory,
[ --enable-max-memory try using the best flags for using the memory to the most ],
maxmemory="$enableval", maxmemory=yes)
AC_ARG_ENABLE(debug-yap,
[ --enable-debug-yap enable C-debugging for YAP ],
debugyap="$enableval", debugyap=no)
AC_ARG_ENABLE(eam,
[ --enable-eam enable EAM on YAP ],
eam="$enableval", eam=no)
AC_ARG_ENABLE(cygwin,
[ --enable-cygwin use cygwin library in WIN32 ],
cygwin="$enableval", cygwin=no)
AC_ARG_ENABLE(prism,
[ --enable-prism use PRISM system in YAP ],
prism="$enableval", prism=yes)
AC_ARG_ENABLE(dynamic_loading,
[ --enable-dynamic-loading compile YAP as a DLL ],
dynamic_loading="$enableval", dynamic_loading=no)
AC_ARG_ENABLE(static_compilation,
[ --enable-static-compilation compile YAP statically ],
static_compilation="$enableval", static_compilation=no)
AC_ARG_ENABLE(use-malloc,
[ --enable-use-malloc use malloc to allocate memory ],
use_malloc="$enableval", use_malloc=yes)
AC_ARG_ENABLE(condor,
[ --enable-condor allow YAP to be used from condor ],
use_condor="$enableval", use_condor=no)
AC_ARG_ENABLE(april,
[ --enable-april compile Yap to support April ILP system],
use_april="$enableval", use_april=no)
AC_ARG_ENABLE(dlcompat,
[ --enable-dlcompat use dlcompat library for dynamic loading on Mac OS X],
use_dlcompat="$enableval", use_dlcompat=no)
AC_ARG_ENABLE(horus,
[ --enable-horus enable CLPBN HORUS library. ],
yap_cv_horus="$enableval", yap_cv_horus=yes)
AC_ARG_WITH(gmp,
[ --with-gmp[=DIR] use GNU Multiple Precision in DIR],
if test "$withval" = yes; then
yap_cv_gmp=yes
gmp_in_usr=`echo /usr/lib/gmp*`
GMPDIR=/usr:/usr/lo
elif test "$withval" = no; then
yap_cv_gmp=no
else
yap_cv_gmp="$withval"
GMPDIR="$withval"
LDFLAGS="$LDFLAGS -L${yap_cv_gmp}/lib"
LIBS="$LIBS -L${yap_cv_gmp}/lib"
CPPFLAGS+=" -I${yap_cv_gmp}/include"
CFLAGS+=" -I${yap_cv_gmp}/include"
CXXFLAGS+=" -I${yap_cv_gmp}/include"
fi,
[yap_cv_gmp=yes])
AC_ARG_WITH(judy,
[ --with-judy[=DIR] UDI needs judy library],
if test "$withval" = yes; then
yap_cv_judy=yes
elif test "$withval" = no; then
yap_cv_judy=no
else
yap_cv_judy=$withval
fi,
[yap_cv_judy=yes])
AC_ARG_WITH(minisat,
[ --enable-minisat use minisat interface],
if test "$withval" = yes; then
yap_cv_minisat=yes
elif test "$withval" = no; then
yap_cv_minisat=no
else
yap_cv_minisat="$GXX"
fi,
[yap_cv_minisat=yes])
AC_ARG_WITH(java,
[ --with-java=JAVA_HOME use JPL with Java setup in JAVA_HOME],
if test "$withval" = yes; then
yap_cv_java=yes
dynamic_loading=yes
maxmemory=yes
dnl threads=yes
elif test "$withval" = no; then
yap_cv_java=no
else
yap_cv_java=$with_java
dynamic_loading=yes
maxmemory=yes
dnl threads=yes
fi,
[yap_cv_java=no])
AC_ARG_WITH(readline,
[ --with-readline[=DIR] use GNU Readline Library in DIR],
if test "$withval" = yes; then
yap_cv_readline=yes
elif test "$withval" = no; then
yap_cv_readline=no
else
yap_cv_readline=$with_readline
if test -d "${yap_cv_readline}/lib64" -a "$YAP_TARGET" = amd64; then
LDFLAGS="-L${yap_cv_readline}/lib64 -L${yap_cv_readline}/lib $LDFLAGS"
else
LDFLAGS="-L${yap_cv_readline}/lib $LDFLAGS"
fi
CPPFLAGS="-I${yap_cv_readline}/include $CPPFLAGS"
fi,
[yap_cv_readline=yes])
AC_ARG_WITH(heap-space,
[ --with-heap-space[=space] default heap size in Kbytes],
if test "$withval" = yes; then
yap_cv_heap_space=0
elif test "$withval" = no; then
yap_cv_heap_space=0
else
yap_cv_heap_space=$withval
fi,
[yap_cv_heap_space=0])
AC_ARG_WITH(stack-space,
[ --with-stack-space[=space] default stack size in Kbytes],
if test "$withval" = yes; then
yap_cv_stack_space=0
elif test "$withval" = no; then
yap_cv_stack_space=0
else
yap_cv_stack_space=$withval
fi,
[yap_cv_stack_space=0])
AC_ARG_WITH(trail-space,
[ --with-trail-space[=space] default trail size in Kbytes],
if test "$withval" = yes; then
yap_cv_trail_space=0
elif test "$withval" = no; then
yap_cv_trail_space=0
else
yap_cv_trail_space=$withval
fi,
[yap_cv_trail_space=0])
AC_ARG_WITH(max-workers,
[ --with-max-workers[=integer] maximum number of or-parallel processes],
if test "$withval" = yes; then
yap_cv_max_workers="(8*SIZEOF_INT_P)"
elif test "$withval" = no; then
yap_cv_max_workers="1"
else
yap_cv_max_workers=$withval
fi,
[yap_cv_max_workers="(8*SIZEOF_INT_P)"])
AC_ARG_WITH(max-threads,
[ --with-max-threads[=integer] maximum number of or-parallel processes],
if test "$withval" = yes; then
yap_cv_max_threads="1024"
elif test "$withval" = no; then
yap_cv_max_threads="1"
else
yap_cv_max_threads=$withval
fi,
[yap_cv_max_threads="1024"])
AC_DEFINE(MinHeapSpace, (2048*SIZEOF_INT_P), [at least 2M Cells for Heap])
AC_DEFINE(MinStackSpace,(1024*SIZEOF_INT_P), [at least 1M Cells for Stack])
AC_DEFINE(MinTrailSpace,(256*SIZEOF_INT_P), [at least 1/2M Cells for Trail])
if test "$orparallelism" = threads
then
orparallelism="yes"
threads="yes"
fi
if test "$orparallelism" = copy || test "$orparallelism" = yes -a "$threads" = no
then
orparallelism="copy"
use_malloc="no"
elif test "$orparallelism" != no
then
tabling="no"
fi
if test "$orparallelism" != no
then
AC_DEFINE_UNQUOTED(MAX_WORKERS,$yap_cv_max_workers,[maximum amount of or-parallelism])
else
AC_DEFINE(MAX_WORKERS,1)
fi
AC_DEFINE_UNQUOTED(DefHeapSpace,$yap_cv_heap_space, [Default Heap Space.])
AC_DEFINE_UNQUOTED(DefStackSpace,$yap_cv_stack_space, [Default Global+Local Space.])
AC_DEFINE_UNQUOTED(DefTrailSpace,$yap_cv_trail_space, [Default Trail Space.])
if test "$threads" = no
then
yap_cv_max_threads=1
fi
AC_DEFINE_UNQUOTED(MAX_THREADS,$yap_cv_max_threads,[max number of threads, default 1 or 1024])
if test "$yap_cv_prism" = no
then
INSTALL_PRISM=""
else
INSTALL_PRISM="packages/prism/src/c packages/prism/src/prolog"
fi
if test "$yap_cv_horus"="yes"; then
AC_LANG_PUSH([C++])
my_save_cxxflags="$CXXFLAGS"
CXXFLAGS=-std=c++0x
AC_MSG_CHECKING([whether CXX supports -std-c++0x])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])]
[yap_cv_horus=no]
)
CXXFLAGS="$my_save_cxxflags"
AC_LANG_POP()
fi
if test "$yap_cv_horus" = no
then
PKG_CLPBN="packages/CLPBN"
else
PKG_CLPBN="packages/CLPBN packages/CLPBN/horus"
fi
dnl condor universe does not like dynamic linking on Linux, DEC, and HP-UX platforms.
if test "$use_condor" = yes
then
static_compilation="yes"
use_malloc="yes"
CC="condor_compile $CC"
CXX="condor_compile $CXX"
dnl no readline with condor.
yap_cv_readline="no"
AC_DEFINE(SUPPORT_CONDOR, 1, [enable condor distributed execution, static compilation])
dnl and it disables minisat
yap_cv_minisat=no
STATIC_MODE=""
else
static_compilation="no"
STATIC_MODE="# "
fi
AC_CHECK_DECL(__clang_major__, CLANG=yes, CLANG=no)
dnl Compilation Flags
if test "$GCC" = "yes"
then
if test "$debugyap" = "yes"
then
CXXFLAGS="-O -g -Wall $CXXFLAGS"
C_INTERF_FLAGS="-O -g -Wall -Wstrict-prototypes -Wmissing-prototypes $CFLAGS"
CFLAGS="-O -g -Wall -Wstrict-prototypes -Wmissing-prototypes $CFLAGS"
else
CXXFLAGS="-O3 -fomit-frame-pointer -Wall $CXXFLAGS"
C_INTERF_FLAGS="-O3 -Wall -Wstrict-prototypes -Wmissing-prototypes $CFLAGS"
C_PARSER_FLAGS="-O3 -Wall -Wstrict-prototypes -Wmissing-prototypes $CFLAGS"
CFLAGS="-O3 -fomit-frame-pointer -Wall -Wstrict-prototypes -Wmissing-prototypes $CFLAGS"
case "`$CC --version < /dev/null`" in
gcc-3.4*)
CFLAGS="-fno-gcse -fno-crossjumping $CFLAGS"
;;
esac
case "$target_cpu" in
i*86*)
CFLAGS="-DBP_FREE $CFLAGS"
CXXFLAGS="-DBP_FREE $CXXFLAGS"
;;
sparc*)
case "$target_os" in
*solaris[2-9]*) dnl
CFLAGS="-mno-app-regs -DOPTIMISE_ALL_REGS_FOR_SPARC=1 $CFLAGS"
CXXFLAGS="-mno-app-regs -DOPTIMISE_ALL_REGS_FOR_SPARC=1 $CXXFLAGS"
;;
esac
;;
esac
if test "$tcpu"; then
target_cpu=$tcpu
fi
if test "$maxperformance" = "yes"
then
case "$target_cpu" in
athlon)
CFLAGS="-march=athlon $CFLAGS"
CXXFLAGS="-march=athlon $CXXFLAGS"
;;
i686*)
CFLAGS="-march=i686 $CFLAGS"
CXXFLAGS="-march=i686 $CXXFLAGS"
;;
i586*)
CFLAGS="-march=i586 $CFLAGS"
CXXFLAGS="-march=i586 $CXXFLAGS"
;;
i486*)
CFLAGS="-march=i486 $CFLAGS"
CXXFLAGS="-march=i486 $CXXFLAGS"
;;
esac
fi
fi
if test "$CC" = "sslittle-na-sstrix-gcc"
then
RANLIB="sslittle-na-sstrix-ranlib"
AR="sslittle-na-sstrix-ar"
PRE_INSTALL_ENV="sim-fast"
INSTALL_ENV="sim-fast"
fi
else
case "$target_cpu" in
i?86*)
if test "$CC" = "lcc"
then
CFLAGS="-A -A $CFLAGS"
elif test "$CC" = "cl"
then
CXXFLAGS="-/nologo $CXXFLAGS"
CFLAGS="/nologo $CFLAGS"
CPP="/nologo /E"
fi
;;
hppa*)
if test "$CC" = "cc" -o $CC = c89
then
if test "$debugyap" = "yes"
then
CXXFLAGS="-Ae -g -O $CXXFLAGS"
CFLAGS="-Ae -g -O $CFLAGS"
else
CXXFLAGS="-Ae +O3 +Onolimit $CXXFLAGS"
CFLAGS="-Ae +O3 +Onolimit $CFLAGS"
fi
fi
dnl LDFLAGS="+e UserCPredicate $LDFLAGS"
;;
esac
C_INTERF_FLAGS="$CFLAGS"
C_PARSER_FLAGS="$CFLAGS"
fi
dnl Checks for programs.
AC_PROG_LN_S
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_CHECK_TOOL(AR,[ar],:)
dnl ECPP: cpp calls for non-C programs.
case "$CC" in
*gcc*)
ECPP=${s/CC/gcc/pp}
;;
*icc*)
ECPP=${s/CC/icc/cpp}
;;
*cc*)
ECPP=${s/CC/cc/cpp}
;;
**)
ECPP=cpp
;;
esac
echo $ECPP
AC_CHECK_TOOL(ECPP,[$ECPP],[cpp])
AC_PATH_PROG(INSTALL_INFO,install-info,true,$PATH:/sbin:/usr/sbin:/usr/etc:/usr/local/sbin)
dnl do this before windows.h
AC_CHECK_HEADERS(winsock.h winsock2.h windows.h shlobj.h )
AC_PATH_PROG(SHELL,sh)
AC_CHECK_TOOL([INDENT], [indent], [:])
dnl Check for libraries.
dnl mingw does not get along well with libm
dnl cygnus and mingw32 also need wsock32 to use sockets.
dnl
i_am_cross_compiling=$cross_compiling
if test "$target_os" = "cygwin" -o "$target_os" = "mingw32" -o "$target_os" = "mingw64"
then
INSTALL_COMMAND=install_win32
EXTRA_INCLUDES_FOR_WIN32="-I\$(srcdir)/packages/PLStream/windows"
if test "$cygwin" = "no" -o "$target_os" = "mingw32"
then
# locale complaints without this.
if test "$threads" = yes; then
if test $win_abi = 32; then
LIBS="$LIBS $pthreadlib"
else
AC_CHECK_LIB(pthread, main)
fi
fi
AC_CHECK_LIB(mscrt,main)
if test "$target_cpu" = x86_64; then
YAP_TARGET=amd64
AC_CHECK_LIB(ws2_32,main)
AC_CHECK_LIB(comdlg32,main)
AC_CHECK_LIB(shell32,main)
AC_CHECK_LIB(shlwapi,main)
EXTRA_LIBS_FOR_DLLS="-lws2_32"
elif test "$target_os" = "cygwin"; then
CC="${CC} -mno-cygwin"
CXX="${CXX} -mno-cygwin"
AC_CHECK_LIB(comdlg32,main)
AC_CHECK_LIB(wsock32,main)
AC_CHECK_LIB(shell32,main)
AC_CHECK_LIB(shlwapi,main)
else
AC_CHECK_LIB(wsock32,main)
AC_CHECK_LIB(comdlg32,main)
AC_CHECK_LIB(shell32,main)
AC_CHECK_LIB(shlwapi,main)
fi
AC_DEFINE(__WINDOWS__, 1, [compiling for Windows])
EXTRA_LIBS_FOR_DLLS="\$(abs_top_builddir)/yap.dll $EXTRA_LIBS_FOR_DLLS"
AC_CHECK_LIB(psapi,main)
yap_cv_readline=no
#mingw64??
case "$build_os" in
*linux*)
if test "${WINEPREFIX}x" = x
then
SYSTEMDRIVE=$HOME/.wine/drive_c
else
SYSTEMDRIVE="$WINEPREFIX"
fi
if test "$target_cpu" = "x86_64"
then
PRE_INSTALL_ENV="wine64"
prefix="$SYSTEMDRIVE/Yap64"
else
PRE_INSTALL_ENV="wine"
prefix="$SYSTEMDRIVE/Yap"
fi
i_am_cross_compiling=yes
;;
**)
if test "$target_cpu" = "x86_64"
then
prefix="\${SYSTEMDRIVE}/Yap64"
else
prefix="\${SYSTEMDRIVE}/Yap"
fi
;;
esac
WINDOWS=""
PKG_WINCONSOLE="swi/console"
else
WINDOWS="#"
PKG_WINCONSOLE=""
LIBS="-lcygwin"
EXTRA_LIBS_FOR_DLLS="\$(abs_top_builddir)/yap.dll"
EXTRA_INCLUDES_FOR_WIN32="-I\$(srcdir)/packages/PLStream/windows"
AC_CHECK_LIB(pthread,pthread_create)
fi
else
if test "$prefix" = "NONE" -a x"$SYSROOT" = x
then
prefix=/usr/local
fi
if test -d "${prefix}/lib64" -a "$YAP_TARGET" = amd64
then
LDFLAGS="$LDFLAGS -L${prefix}/lib64"
fi
if test x"$SYSROOT" = x
then
LDFLAGS="$LDFLAGS -L${prefix}/lib"
CPPFLAGS="$CPPFLAGS -I${prefix}/include"
fi
if test "$exec_prefix" != "NONE" -a "$exec_prefix" != "$prefix"
then
if test -d "${exec_prefix}/lib64" -a "$YAP_TARGET" = amd64; then
LDFLAGS="$LDFLAGS -L${exec_prefix}/lib64"
fi
LDFLAGS="$LDFLAGS -L${exec_prefix}/lib"
fi
INSTALL_COMMAND="install_unix"
WINDOWS="#"
PKG_WINCONSOLE=""
case "$host" in
*android*)
AC_CHECK_LIB(android,main)
AC_CHECK_LIB(log,main)
;;
**)
STARTUP_ANDROID="x"
STARTUP_DEFAULT=""
;;
esac
AC_CHECK_LIB(m,sin)
AC_CHECK_LIB(socket,socket)
dnl X/Open Networking is sometimes a separate library
AC_CHECK_LIB(xnet,getsockname)
AC_CHECK_LIB(stdc++,main)
AC_CHECK_LIB(nsl,main,
have_nsl=yes
,
have_nsl=no)
AC_CHECK_LIB(crypt,main)
AC_CHECK_LIB(nss_files,main)
AC_CHECK_LIB(nss_dns,main)
AC_CHECK_LIB(resolv,main)
AC_CHECK_LIB(pthread,pthread_create)
fi
if test "$yap_cv_gmp" != "no"
then
AC_CHECK_LIB(gmp,main)
fi
if test "$yap_cv_judy" != "no"; then
AC_CHECK_LIB(Judy, Judy1Set,,[AC_MSG_RESULT([libJudy not found, UDI will only work with one Index at a time])])
fi
if test "$threads" = yes
then
AC_CHECK_HEADERS(pthread.h)
AC_CHECK_FUNCS(pthread_mutexattr_setkind_np pthread_mutexattr_settype pthread_setconcurrency)
if test "$pthreadlocking" = yes
then
AC_DEFINE(USE_PTHREAD_LOCKING, 1, [do not use our own locking routines])
fi
use_malloc=yes
fi
if test ! -z "$GCC"; then
COFLAGS="${COFLAGS--O2 -cc-options,-fno-strict-aliasing}"
CWFLAGS="${CWFLAGS--Wall}"
else
COFLAGS="${COFLAGS--O}"
CWFLAGS="${CWFLAGS-}"
fi
CMFLAGS=-fpic
CIFLAGS=-I.
dnl Packages
if test "$use_prism" = no; then
PKG_PRISM=""
else
PKG_PRISM="packages/prism/src/c packages/prism/src/prolog"
fi
AC_SUBST(PKG_PRISM)
if test -e "$srcdir"/packages/archive/Makefile.in
then
PKG_LIBARCHIVE="packages/archive"
else
PKG_LIBARCHIVE=""
fi
if test "$use_chr" = no
then
PKG_CHR=""
elif test -e "$srcdir"/packages/chr/Makefile.in
then
PKG_CHR="packages/chr"
else
PKG_CHR=""
fi
if test "$use_clpqr" = no
then
PKG_CLPQR=""
elif test -e "$srcdir"/packages/clpqr/Makefile.in
then
PKG_CLPQR="packages/clpqr"
else
PKG_CLPQR=""
fi
if test -e "$srcdir"/packages/clib/Makefile.in
then
PKG_CLIB="packages/clib/maildrop/rfc2045 packages/clib/maildrop/rfc822 packages/clib"
else
PKG_CLIB=""
fi
if test -e "$srcdir"/packages/http/Makefile.in
then
PKG_HTTP="packages/http"
else
PKG_HTTP=""
fi
if test -e "$srcdir"/packages/plunit/Makefile.in
then
PKG_PLUNIT="packages/plunit"
else
PKG_PLUNIT=""
fi
if test -e "$srcdir"/packages/R/Makefile.in
then
PKG_R="packages/R"
else
PKG_R=""
fi
if test -e "$srcdir"/packages/raptor/Makefile.in
then
ENABLE_RAPTOR="packages/raptor"
else
ENABLE_RAPTOR=""
fi
if test -e "$srcdir"/packages/RDF/Makefile.in
then
PKG_RDF="packages/RDF"
else
PKG_RDF=""
fi
if test -e "$srcdir"/packages/semweb/Makefile.in
then
PKG_SEMWEB="packages/semweb"
else
PKG_SEMWEB=""
fi
if test -e "$srcdir"/packages/sgml/Makefile.in
then
PKG_SGML="packages/sgml"
else
PKG_SGML=""
fi
if test -e "$srcdir"/packages/zlib/Makefile.in
then
PKG_ZLIB="packages/zlib"
else
PKG_ZLIB=""
fi
dnl --enable-new-dtags seems to enable the use of --runpath
dnl instead of --rpath.
if test "$static_compilation" = "no"
then
OLDLDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags"
AC_MSG_CHECKING([whether ld supports --enable-new-dtags])
AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
LDFLAGS="$OLDLDFLAGS"]
)
fi
if test "$cross_compiling" = "yes"
then
YAP_EXTRAS=""
else
AC_SYS_RESTARTABLE_SYSCALLS
fi
dnl defaults
INSTALL_DLLS="no"
EXTRA_OBJS=""
SHLIB_LD="#"
SHLIB_CXX_LD="#"
DO_SECOND_LD="#"
M4="m4"
MERGE_DLL_OBJS="#"
IN_UNIX=""
dnl This has to be before $target_os
YAPLIB="libYap.a"
dnl now this is where things get nasty.
dnl trying to get the libraries
case "$target_os" in
*linux*)
if test "$static_compilation" = "no"
then
AC_CHECK_LIB(dl,dlopen,
have_dl=yes
,
have_dl=no)
if test "$have_dl" = "yes"
then
SO="so"
SOPATH="LD_LIBRARY_PATH"
SHLIB_LD="$CC -shared -export-dynamic"
SHLIB_CXX_LD="$CXX -shared -export-dynamic"
DO_SECOND_LD=""
LIBS="$LIBS -ldl"
case "$target_cpu" in
alpha*)
LDFLAGS="-dynamic $LDFLAGS"
;;
*)
if test "$CC" != "lcc"
then
LDFLAGS="-rdynamic $LDFLAGS"
fi
;;
esac
fi
if test "$ac_cv_prog_gcc" = "yes"
then
SHLIB_CFLAGS="-shared -fPIC $CFLAGS"
SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS"
INSTALL_DLLS="yes"
fi
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"."$YAP_VERSION"
EXTRAYAPLIBS="libYap.$SO libYap.$SO.$YAP_MAJOR_VERSION"
SONAMEFLAG="-Wl,-soname=libYap.$SO.$YAP_MAJOR_VERSION"
fi
if test "$have_nsl" = yes
then
LIBS="$LIBS -lnsl"
fi
if test "$dynamic_loading" = "yes"
then
YAPLIB_LD="\$(CC) -shared"
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-rpath=\$(YAPLIBDIR) -Wl,-rpath=\$(LIBDIR)"
INSTALL_ENV="LD_LIBRARY_PATH=:\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
else
YAPLIB_LD="\$(CC)"
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
INSTALL_ENV="YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
fi
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
;;
*sunos4*)
M4="/usr/5bin/m4"
LDFLAGS="$LDFLAGS -N"
if test "$have_nsl" = yes
then
LIBS="$LIBS -lnsl"
fi
SO="o"
INSTALL_DLLS="yes"
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG=""
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*hpux*)
#do not use the first memory quadrant
AC_DEFINE(FORCE_SECOND_QUADRANT, 1, [old HP-UX VM magic, should be irrelevant now])
M4="/usr/bin/m4"
if test ${use_condor} = no
then
SHLIB_INTERFACE="load_shl.o"
if test "$CC" = cc -o "$CC" = c89
then
#this tells ld to export all non-static symbols,
#otherwise no external predicates.
SHLIB_LD="$CC -shared -export-dynamic"
SHLIB_CXX_LD="$CXX -shared -export-dynamic"
DO_SECOND_LD=""
SO="sl"
SHLIB_CFLAGS="+z $CFLAGS"
SHLIB_CXXFLAGS="+z $CXXFLAGS"
INSTALL_DLLS="yes"
# If the xnet library was found, turn on X/Open networking
if test "$ac_cv_lib_xnet_getsockname" = yes
then
AC_DEFINE(_XOPEN_SOURCE, 1, [HP-UX old socket stuff])
AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [HP-UX old socket stuff])
fi
else
INSTALL_DLLS="no"
fi
fi
if test ${target_os} = hpux10.20
then
AC_DEFINE(MPI_AVOID_REALLOC,1,[o not use realloc() from HP-UX 10.20 together with MPI])
fi
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG=""
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir) YAPLIBDIR=\$(abs_top_builddir):\$(abs_top_builddir)/library/system $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*aix*)
# To actually use dlls in AIX I'd need to build YAP as a DLL first.
# I won't bother for now.
#
# SO="a"
#SHLIB_LD="\$(srcdir)/../../ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
#INSTALL_DLLS="yes"
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG=""
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*osf*)
if ${use_condor} = no
then
AC_CHECK_LIB(dl,dlopen,
dnl Linux has both elf and a.out, in this case we found elf
have_dl=yes
,
have_dl=no)
SO="so"
SOPATH="LD_LIBRARY_PATH"
SHLIB_LD="ld -shared -expect_unresolved '*'"
DO_SECOND_LD=""
fi
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG=""
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*irix6*)
SHLIB_CFLAGS="$CFLAGS"
SHLIB_CXXFLAGS="$CXXFLAGS"
SO="so"
SOPATH="LD_LIBRARY_PATH"
DO_SECOND_LD=""
SHLIB_LD="ld -n32 -shared -rdata_shared"
SHLIB_CXX_LD="$SHLIB_LD"
INSTALL_DLLS="yes"
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG=""
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*darwin*)
if test ${use_dlcompat} = yes
then
AC_CHECK_LIB(dl,dlopen,
have_dl=yes
1 ,
have_dl=no)
if test ${have_dl} = yes
then
LIBS="$LIBS -ldl"
fi
fi
SO="dylib"
SOPATH="DYLD_LIBRARY_PATH"
DO_SECOND_LD=""
if test "$dynamic_loading" = "yes"
then
SHLIB_LD="$CC -dynamiclib"
SHLIB_CXX_LD="$CXX -dynamiclib"
EXTRA_LIBS_FOR_DLLS="-L\$(abs_top_builddir) $LIBS $EXTRA_LIBS_FOR_DLLS -lYap -Wl,-install_name,\$(YAPLIBDIR)/\$@"
INSTALL_ENV="DYLD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
LDFLAGS="-L\$(abs_top_builddir) $LDFLAGS "
else
SHLIB_LD="$CC -dynamiclib -Wl,-undefined,dynamic_lookup"
SHLIB_CXX_LD="$CXX -dynamiclib -Wl,-undefined,dynamic_lookup"
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -Wl,-install_name,\$(YAPLIBDIR)/\$@"
INSTALL_ENV="YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
fi
if test "$ac_cv_prog_gcc" = "yes"
then
if test "$CLANG" = "yes"
then
SHLIB_CFLAGS="-fPIC $CFLAGS"
SHLIB_CXXFLAGS="-fPIC $CXXFLAGS"
else
SHLIB_CFLAGS="-shared -fPIC $CFLAGS"
SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS"
fi
INSTALL_DLLS="yes"
fi
if test "$CLANG" = "yes"
then
# CC="$CC -fstrict-aliasing -fno-diagnostics-fixit-info -fno-color-diagnostics -fno-caret-diagnostics -fno-show-column -fsched-interblock -Wall"
CC="$CC -fstrict-aliasing -fsched-interblock -Wall"
else
CC="$CC -fstrict-aliasing -freorder-blocks -fsched-interblock -Wall"
fi
DYNYAPLIB=libYap."$YAP_VERSION.$SO"
SONAMEFLAG="-Wl,-install_name,$prefix/lib/libYap.$YAP_MAJOR_VERSION.$SO -Wl,-compatibility_version,$YAP_MAJOR_VERSION.$YAP_MINOR_VERSION -Wl,-current_version,$YAP_VERSION"
YAPLIB_LD="$CC -dynamiclib"
PRE_INSTALL_ENV="DYLD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$DYLD_LIBRARY_PATH $PRE_INSTALL_ENV"
EXTRAYAPLIBS="libYap.$SO libYap.$YAP_MAJOR_VERSION.$SO"
;;
*netbsd*|*openbsd*|*freebsd*|*dragonfly*)
if echo __ELF__ | ${CC:-cc} -E - | grep -q __ELF__
then
#an a.out system
SHLIB_CFLAGS="$CFLAGS"
SHLIB_CXXFLAGS="$CXXFLAGS"
SO="o"
SOPATH="LD_AOUT_LIBRARY_PATH"
else
#an elf system
LDFLAGS="-Wl,--export-dynamic $LDFLAGS"
SHLIB_CFLAGS="-fPIC $CFLAGS"
SHLIB_CXXFLAGS="-fPIC $CXXFLAGS"
SHLIB_LD="$CC -shared -export-dynamic"
SHLIB_CXX_LD="$CXX -shared -export-dynamic"
DO_SECOND_LD=""
SO="so"
SOPATH="LD_LIBRARY_PATH"
INSTALL_DLLS="yes"
fi
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR)"
DYNYAPLIB=libYap."$SO"
YAPLIB_LD=$SHLIB_LD
SONAMEFLAG="-Wl,--soname=$DYNYAPLIB"
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -Wl,-R,\$(YAPLIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*solaris*)
#an elf system
LDFLAGS="-dynamic $LDFLAGS"
SHLIB_CFLAGS="-fPIC $CFLAGS"
SHLIB_CXXFLAGS="-fPIC $CXXFLAGS"
SHLIB_LD="$CC -shared"
SHLIB_CXX_LD="$CXX -shared"
DO_SECOND_LD=""
SO="so"
SOPATH="LD_LIBRARY_PATH"
INSTALL_DLLS="yes"
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG="-Wl,--soname=$DYNYAPLIB"
if test "$dynamic_loading" = "yes"
then
YAPLIB_LD="\$(CC)"
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
else
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
YAPLIB_LD="\$(CC) -shared"
INSTALL_ENV="YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
fi
;;
*cyg*|*mingw*|*msys*)
# gcc on cygwin seems to have trouble with longjmp
# and -fomit-frame-point -DBP_FREE
YAPLIB="yap.dll"
DYNYAPLIB="yap.dll"
SONAMEFLAG=""
SHLIB_CFLAGS="$CFLAGS"
SHLIB_CXXFLAGS="$CXXFLAGS"
if test "$target_win64" = no
then
LDFLAGS="-Wl,--large-address-aware $LDFLAGS"
fi
SHLIB_LD="\$(CC) -shared -Wl,--export-all-symbols"
SHLIB_CXX_LD="\$(CXX) -shared -Wl,--export-all-symbols"
SO="dll"
SOPATH="PATH"
C_PARSER_FLAGS="$C_INTERF_FLAGS"
EXEC_SUFFIX=".exe"
INSTALL_DLLS="yes"
DO_SECOND_LD=""
MERGE_DLL_OBJS=""
IN_UNIX="#"
YAPLIB_LD="\$(CC) -shared -Wl,--export-all-symbols"
INSTALL_ENV="YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
*)
AC_CHECK_LIB(dl,dlopen,
have_dl=yes
,
have_dl=no)
if test "$have_dl" = yes
then
SO="o"
SOPATH="LD_LIBRARY_PATH"
LIBS="$LIBS -ldl"
INSTALL_DLLS="yes"
if test "$GCC" = "yes"
then
SHLIB_CXXFLAGS="-fPIC $CXXFLAGS"
fi
fi
if test "$have_nsl" = yes
then
LIBS="$LIBS -lnsl"
fi
LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R,\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
DYNYAPLIB=libYap."$SO"
SONAMEFLAG=""
EXTRA_LIBS_FOR_DLLS="$EXTRA_LIBS_FOR_DLLS -L\$(abs_top_builddir) -lYap -Wl,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:$LD_LIBRARY_PATH $PRE_INSTALL_ENV"
INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
;;
esac
dnl use the current files, even if older
PRE_INSTALL_ENV="YAPLIBDIR=\$(abs_top_builddir):\$(abs_top_builddir)/library/system:\$(abs_top_builddir)/packages/clib $PRE_INSTALL_ENV "
if test "$dynamic_loading" = "yes"
then
YAPLIB_CFLAGS="$SHLIB_CFLAGS"
YAPLIB="$DYNYAPLIB"
else
YAPLIB_CFLAGS="$CFLAGS"
fi
YAP_EXTRAS="$YAP_EXTRAS -DCOROUTINING=1 -DRATIONAL_TREES=1"
if test "$tabling" = yes
then
YAP_EXTRAS="$YAP_EXTRAS -DTABLING=1"
fi
if test "$debugyap" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DDEBUG=1"
fi
if test "$eam" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DBEAM"
fi
if test "$wamprofile" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DANALYST=1"
fi
if test "$depthlimit" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DDEPTH_LIMIT=1"
fi
if test "$use_april" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DDEPTH_LIMIT=1 -DAPRIL"
LDFLAGS="$LDFLAGS -L."
LIBS="$LIBS -lApril"
fi
if test "$lowleveltracer" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DLOW_LEVEL_TRACER=1"
fi
if test "$threads" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -DTHREADS=1"
if test "$GCC" = "yes"
then
YAP_EXTRAS="$YAP_EXTRAS -D_GNU_SOURCE"
fi
case "$orparallelism" in
sba|a-cow|copy)
AC_MSG_FAILURE(
[--or-parallelism=$orparallelism incompatible with threads]
)
;;
yes)
YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_THREADS=1"
;;
esac
else
case "$orparallelism" in
sba)
YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_SBA=1"
;;
a-cow)
YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_COW=1"
;;
copy)
YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_COPY=1"
;;
esac
fi
AC_SUBST(INSTALL_ENV)
AC_SUBST(PRE_INSTALL_ENV)
dnl Checks for header files.
AC_HEADER_STDBOOL
dnl check stdlib, stdarg, string, float
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(arpa/inet.h alloca.h crtdbg.h crypt.h)
AC_CHECK_HEADERS(ctype.h direct.h dirent.h dlfcn.h)
AC_CHECK_HEADERS(errno.h execinfo.h fcntl.h fenv.h)
AC_CHECK_HEADERS(float.h fpu_control.h ieeefp.h inttypes.h io.h)
AC_CHECK_HEADERS(libgen.h limits.h)
AC_CHECK_HEADERS(malloc.h math.h memory.h)
AC_CHECK_HEADERS(netdb.h netinet/in.h netinet/tcp.h openssl/ripemd.h pwd.h regex.h shlobj.h)
AC_CHECK_HEADERS(siginfo.h signal.h stdarg.h stdbool.h)
AC_CHECK_HEADERS(stdint.h string.h strings.h stropts.h)
AC_CHECK_HEADERS(sys/conf.h sys/dir.h sys/file.h)
AC_CHECK_HEADERS(sys/mman.h sys/ndir.h sys/param.h)
AC_CHECK_HEADERS(sys/resource.h sys/select.h)
AC_CHECK_HEADERS(sys/shm.h sys/socket.h sys/stat.h)
AC_CHECK_HEADERS(sys/time.h sys/times.h sys/types.h)
AC_CHECK_HEADERS(sys/ucontext.h sys/uio.h sys/un.h sys/wait.h)
AC_CHECK_HEADERS(time.h ucontext.h unistd.h utime.h)
AC_CHECK_HEADERS(wctype.h wordexp.h)
AC_CHECK_HEADERS(zlib.h zutil.h)
AC_CHECK_HEADERS(mach-o/dyld.h LibLoaderAPI.h)
if test "$yap_cv_readline" != "no"
then
AC_CHECK_LIB([ncurses], [main],[
LIBS="-lncurses $LIBS"
])
AC_CHECK_LIB([readline], [main],[
AC_CHECK_HEADERS( readline/readline.h)
AC_CHECK_HEADERS( readline/history.h )
if test "x$ac_cv_header_readline_readline_h" = xyes
then
AC_DEFINE([HAVE_LIBREADLINE], [1], [Define if you have libreadline])
LIBS="-lreadline $LIBS"
AC_CHECK_TYPES([rl_hook_func_t, rl_completion_func_t], [], [], [
[#include <stdio.h>]
[#include <readline/readline.h>]
] )
AC_CHECK_FUNCS( rl_completion_matches rl_clear_pending_input rl_reset_after_signal )
AC_CHECK_FUNCS( rl_filename_completion_function rl_free_line_state rl_insert_close )
AC_CHECK_FUNCS( rl_set_prompt rl_free_line_state rl_insert_close add_history )
AC_CHECK_FUNCS( rl_begin_undo_group rl_discard_argument rl_set_keyboard_input_timeout )
AC_CHECK_DECLS( [ rl_event_hook, rl_catch_signals , rl_readline_state, rl_done ], [], [], [
[#include <stdio.h>]
[#include <readline/readline.h>]
] )
else
yap_cv_readline=no
AC_MSG_RESULT( [test for readline failed])
fi
],
[
AC_MSG_RESULT( [test for readline failed])
]
)
fi
if test "$yap_cv_gmp" != "no"
then
AC_CHECK_HEADERS(gmp.h)
if test "x$ac_cv_header_gmp_h" = xyes -a "x$ac_cv_lib_gmp_main" = xyes
then
AC_DEFINE(USE_GMP, 1, [use bignums/rationals in YAP code.])
fi
fi
if test "$yap_cv_judy" != "no"; then
AC_CHECK_HEADERS(Judy.h)
if test "x$ac_cv_header_Judy_h" = xyes -a "x$ac_cv_lib_Judy_Judy1Set" = xyes
then
AC_DEFINE(USE_JUDY, 1, [use Judy library for UDI indexing in YAP code.])
fi
fi
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
AC_STRUCT_TM
AC_CHECK_SIZEOF(int *,4)
AC_CHECK_SIZEOF(short int,2)
AC_CHECK_SIZEOF(int,4)
AC_CHECK_SIZEOF(long int,4)
AC_CHECK_SIZEOF(long long int,8)
AC_CHECK_SIZEOF(float,4)
AC_CHECK_SIZEOF(double,8)
AC_CHECK_SIZEOF(void *,4)
AC_DEFINE_UNQUOTED(CELLSIZE, $ac_cv_sizeof_void_p, [size of a cell in bytes.])
dnl check whether int64_t exists
AC_MSG_CHECKING(whether int64_t is defined)
AC_CACHE_VAL(yap_cv_int64_t_defined,[
AC_TRY_RUN(
#include <stdint.h>
int main() {
int64_t i;
return 0;
}
,
yap_cv_int64_t_defined=yes,yap_cv_int64_t_defined=no,yap_cv_int64_t_defined=no)])
AC_MSG_RESULT($yap_cv_int64_t_defined)
if test $yap_cv_int64_t_defined = yes
then
AC_DEFINE_UNQUOTED(INT64_T_DEFINED,1,[type of int64_t])
fi
AC_MSG_CHECKING(for int64_t)
AC_SUBST(INT64_T_DEFINED)
dnl check type of malloc (i.e. char * or void *)
AC_MSG_CHECKING(for type of malloc)
AC_CACHE_VAL(yap_cv_malloct,[
AC_TRY_RUN(
#include <stdlib.h>
char *malloc(size_t);
int main() {
void *p=malloc(1);
return 0;
}
,
yap_cv_malloct=char,yap_cv_malloct=void,yap_cv_malloct=void)])
AC_MSG_RESULT($yap_cv_malloct *)
if test "$yap_cv_malloct" = void
then AC_DEFINE_UNQUOTED(MALLOC_T,void *,[malloc_t])
else AC_DEFINE_UNQUOTED(MALLOC_T,char *,[malloc_t])
fi
dnl check how to generate headers (i.e. should we use GCC inline?)
AC_MSG_CHECKING(for gcc inline)
AC_CACHE_VAL(yap_cv_gcc,[
AC_TRY_RUN(
#undef inline
inline int f(int x) {return x+1;}
int main() { return 0;}
,
yap_cv_gcc=yes,yap_cv_gcc=no,yap_cv_gcc=yes)])
AC_MSG_RESULT($yap_cv_gcc)
if test "$yap_cv_gcc" = yes
then
M4GENHDRS=m4/gcc_genhdrs.m4
AC_DEFINE(HAVE_GCC,1,[Old m4 auto-heder generation, not really useful now])
else
M4GENHDRS=m4/cc_genhdrs.m4
fi
AC_SUBST(M4)
AC_SUBST(M4GENHDRS)
CMDEXT=sh
dnl SWI compatibility, I don't know why just use host...
changequote(,)dnl
if test "x$ARCH" = "x"; then
case "$host" in
*linux*)
ARCH=`echo $host | sed 's/-.*/-linux/'`
;;
*-gnu)
ARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)-gnu/\1-\2/'`
;;
*)
ARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)/\1-\2/'`
;;
esac
fi
changequote([,])dnl
AC_SUBST(ARCH)
case "$host" in
*android*)
STARTUP_ANDROID=""
STARTUP_DEFAULT="x"
;;
**)
STARTUP_ANDROID="x"
STARTUP_DEFAULT=""
;;
esac
AC_SUBST(STARTUP_ANDROID)
AC_SUBST(STARTUP_DEFAULT)
CMDEXT=sh
dnl System stuff for dynamic linking.
dnl
dnl Exports:
dnl
AC_SUBST(EXTRAYAPLIBS)
dnl "" if we can do dynamic linking, "#" otherwise\
AC_SUBST(INSTALL_DLLS)
dnl if we need to merge several .o files into a single dll.
AC_SUBST(MERGE_DLL_OBJS)
dnl C-flags used to compile a file that will be loaded dynamically
AC_SUBST(CXXFLAGS)
AC_SUBST(SHLIB_CFLAGS)
AC_SUBST(SHLIB_CXXFLAGS)
dnl suffix for loadable binary (.so,.dll,.o)
AC_SUBST(SO)
dnl suffix for executable (.exe)
AC_SUBST(EXEC_SUFFIX)
dnl how to call the loader
AC_SUBST(DO_SECOND_LD)
AC_SUBST(SHLIB_LD)
AC_SUBST(SHLIB_CXX_LD)
AC_SUBST(YAPLIB_LD)
AC_SUBST(YAPLIB_CFLAGS)
AC_SUBST(EXTRA_LIBS_FOR_DLLS)
dnl objects in YAP library
AC_SUBST(YAPLIB)
AC_SUBST(DYNYAPLIB)
AC_SUBST(LDFLAGS)
AC_SUBST(SONAMEFLAG)
AC_SUBST(GMPDIR)
dnl install_info
AC_SUBST(INSTALL_INFO)
dnl let YAP_EXTRAS fall through configure, from the env into Makefile
AC_SUBST(YAP_EXTRAS)
AC_SUBST(NO_BUILTIN_REGEXP)
AC_SUBST(PKG_CHR)
AC_SUBST(PKG_CLIB)
AC_SUBST(PKG_CLPQR)
AC_SUBST(PKG_HTTP)
AC_SUBST(PKG_JPL)
AC_SUBST(PKG_PLUNIT)
AC_SUBST(PKG_R)
AC_SUBST(PKG_RDF)
AC_SUBST(PKG_SEMWEB)
AC_SUBST(PKG_SGML)
AC_SUBST(PKG_ZLIB)
AC_SUBST(PKG_CLPBN)
AC_SUBST(IN_UNIX)
AC_SUBST(MPI_CC)
AC_SUBST(INSTALL_COMMAND)
AC_SUBST(INSTALLCLP)
AC_SUBST(MAX_WORKERS)
AC_SUBST(STATIC_MODE)
AC_SUBST(PKG_WINCONSOLE)
AC_SUBST(WINDOWS)
AC_SUBST(EXTRA_INCLUDES_FOR_WIN32)
AC_SUBST(INDENT)
AC_SUBST(PKG_MINISAT)
AC_SUBST(PKG_REAL)
AC_SUBST(INSTALL_PRISM)
AC_SUBST(SAVED_STATE_PREFIX)
dnl check for threaded code
AC_MSG_CHECKING(for gcc threaded code)
AC_CACHE_VAL(yap_cv_threaded_code,[
AC_TRY_RUN(
int main() {
void *t = &&l2;
l1: goto *t;
l2: return 0;
}
,
yap_cv_threaded_code=yes,yap_cv_threaded_code=no,yap_cv_threaded_code=yes)])
AC_MSG_RESULT($yap_cv_threaded_code)
if test "$yap_cv_threaded_code" = yes && test "$yap_cv_gcc" = yes
then
AC_DEFINE(USE_THREADED_CODE,1,[threaded emulator])
M4GENABSMI=gen_gcc.m4
else
M4GENABSMI=gen_ansi.m4
fi
AC_SUBST(M4GENABSMI)
dnl check for IEEE floats
AC_MSG_CHECKING(for IEEE floats)
AC_CACHE_VAL(yap_cv_ffieee,[
AC_TRY_RUN(
int main() {
union { float f; int i} a;
a.f = 1;
if (a.i==0x3f800000) return 0;
return 1;
}
,
yap_cv_ffieee=yes,yap_cv_ffieee=no,yap_cv_ffieee=yes)])
AC_MSG_RESULT($yap_cv_ffieee)
if test "$yap_cv_ffieee" = yes
then
AC_DEFINE(FFIEEE,1,[IEEE floating-point, basically everyone except old VAXEN])
fi
dnl check for sigsetjmp
AC_MSG_CHECKING(for sigsetjmp)
AC_CACHE_VAL(yap_cv_sigsetjmp,[
AC_TRY_COMPILE(
#include <setjmp.h>
,
sigjmp_buf RestartEnv;
siglongjmp (RestartEnv, 1);
,
yap_cv_sigsetjmp=yes,yap_cv_sigsetjmp=no)])
AC_MSG_RESULT($yap_cv_sigsetjmp)
if test "$yap_cv_sigsetjmp" = yes
then
AC_DEFINE(HAVE_SIGSETJMP,1,[support for sigsetjmp])
fi
dnl check for sigsegv
AC_MSG_CHECKING(for sigsegv)
AC_CACHE_VAL(yap_cv_sigsegv,[
AC_TRY_COMPILE(
#include <signal.h>
#include <stdio.h>
,
printf("Signal value is %d\n", SIGSEGV);
,
yap_cv_sigsegv=yes,yap_cv_sigsegv=no)])
AC_MSG_RESULT($yap_cv_sigsegv)
if test "$yap_cv_sigsegv" = yes
then
AC_DEFINE(HAVE_SIGSEGV,1,[UNIX signal SEGV])
fi
dnl check for sigsegv
AC_MSG_CHECKING(for sigprof)
AC_CACHE_VAL(yap_cv_sigprof,[
AC_TRY_COMPILE(
#include <signal.h>
#include <stdio.h>
,
printf("Signal value is %d\n", SIGPROF);
,
yap_cv_sigprof=yes,yap_cv_sigprof=no)])
AC_MSG_RESULT($yap_cv_sigprof)
if test "$yap_cv_sigsegv" = yes
then
AC_DEFINE(HAVE_SIGPROF,1, [UNIX Signal SIGPROF])
fi
dnl check for siginfo
AC_MSG_CHECKING(for siginfo)
AC_CACHE_VAL(yap_cv_siginfo,[
AC_TRY_COMPILE(
#include <signal.h>
#include <stdio.h>
,
printf("SIGINFO value is %d\n", SIGINFO);
,
yap_cv_siginfo=yes,yap_cv_siginfo=no)])
AC_MSG_RESULT($yap_cv_siginfo)
if test "$yap_cv_siginfo" = yes
then
AC_DEFINE(HAVE_SIGINFO,1, [Unix SIGINFO])
fi
dnl check for sigfpe
AC_MSG_CHECKING(for sigfpe)
AC_CACHE_VAL(yap_cv_sigfpe,[
AC_TRY_COMPILE(
#include <signal.h>
#include <stdio.h>
,
printf("SIGFPE value is %d\n", SIGFPE);
,
yap_cv_sigfpe=yes,yap_cv_sigfpe=no)])
AC_MSG_RESULT($yap_cv_sigfpe)
if test "$yap_cv_sigfpe" = yes
then
AC_DEFINE(HAVE_SIGFPE,1, [Unix SIGFPE])
fi
AC_MSG_CHECKING("variable timezone in tzset")
AC_TRY_RUN(
[ #include <time.h>
#include <stdlib.h>
#ifdef __CYGWIN__
#define timezone _timezone
#endif
extern long timezone;
main()
{ tzset();
if ( timezone > -15*3600 &&
timezone < 15*3600 &&
timezone % 60 == 0 )
return 0;
exit(1);
}
],
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_VAR_TIMEZONE, 1,
[Define if tzset sets timezone variable]),
AC_MSG_RESULT(no),
AC_MSG_RESULT(assuming no))
AC_CHECK_MEMBER(struct tm.tm_gmtoff,
AC_DEFINE(HAVE_STRUCT_TIME_TM_GMTOFF, 1,
[Define is struct tm has tm_gmtoff]),
[],
[#include <time.h>])
dnl this is copied from the Tcl code
dnl this code checks whether the system defines an union wait
AC_MSG_CHECKING([union wait])
AC_TRY_LINK([#include <sys/types.h>
#include <sys/wait.h>], [
union wait x;
wait(&x); /* make sure we can compile wait */
WIFEXITED(x); /* Generates compiler error if WIFEXITED
* uses an int. */
], union_wait_ok=yes, union_wait_ok=no)
AC_MSG_RESULT($union_wait_ok)
if test "$union_wait_ok" = no; then
AC_DEFINE(NO_UNION_WAIT, 1, [compile wait in UNIX])
fi
dnl check whether the system supports the environ variable
AC_MSG_CHECKING([environ])
AC_TRY_LINK([], [
extern char **environ;
], environ_ok=yes, environ_ok=no)
AC_MSG_RESULT($environ_ok)
if test "$environ_ok" = yes; then
AC_DEFINE(HAVE_ENVIRON, 1,[environment access])
fi
dnl Checks for library functions.
AC_TYPE_SIGNAL
AC_CHECK_FUNCS(_NSGetEnviron _chsize_s access acosh)
AC_CHECK_FUNCS(alloca asinh atanh basename chdir clock clock_gettime)
AC_CHECK_FUNCS(ctime dlopen dup2)
AC_CHECK_FUNCS(erf feclearexcept)
AC_CHECK_FUNCS(feenableexcept fesetexceptflag fesettrapenable fesetround ffsl ffsll __builtin_ffsll fgetpos finite)
AC_CHECK_FUNCS(flsl flsll fpclass ftime ftruncate getcwd getenv)
AC_CHECK_FUNCS(getexecname)
AC_CHECK_FUNCS(gethostbyname gethostent gethostid gethostname)
AC_CHECK_FUNCS(gethrtime getpagesize getpid)
AC_CHECK_FUNCS(getpwnam getrlimit getrusage gettimeofday getwd)
AC_CHECK_FUNCS(isatty isnan isfinite isinf kill labs link lgamma)
AC_CHECK_FUNCS(LoadLibrary)
AC_CHECK_FUNCS(localeconv localtime lstat mallinfo)
AC_CHECK_FUNCS(mbscoll)
AC_CHECK_FUNCS(mbscasecoll)
AC_CHECK_FUNCS(mbsnrtowcs)
AC_CHECK_FUNCS(memcpy memmove mkstemp mktemp)
AC_CHECK_FUNCS(nanosleep mktime opendir)
AC_CHECK_FUNCS(putenv rand random drand48)
AC_CHECK_FUNCS(readlink realpath regexec)
AC_CHECK_FUNCS(rename rint sbrk select setbuf setlinebuf)
AC_CHECK_FUNCS(setitimer setsid setlinebuf sigaction)
AC_CHECK_FUNCS(siggetmask siginterrupt)
AC_CHECK_FUNCS(signal sigprocmask socket srand srand48 srandom stat)
AC_CHECK_FUNCS(strchr strerror stricmp)
AC_CHECK_FUNCS(strnlen strlwr strncat strncpy strtod)
AC_CHECK_FUNCS(time times tmpnam usleep utime vsnprintf)
AC_CHECK_FUNCS(wordexp wcsdup wcsnlen)
# android does not really have locale stuff..
case "$host" in
*android*)
echo "no locale"
SAVED_STATE_PREFIX="/assets/lib/Yap/"
AC_SUBST(C_PARSER_FLAGS)
AC_SUBST(GCC_VERSION)
;;
**)
AC_CHECK_HEADERS(locale.h)
AC_CHECK_FUNCS(localeconv setlocale)
;;
esac
AC_CHECK_FUNC(regexec, [NO_BUILTIN_REGEXP="#"], [NO_BUILTIN_REGEXP=""])
AC_CHECK_FUNCS(NSLinkModule)
if test "$use_condor" = "no"
then
AC_CHECK_FUNCS(alarm mmap popen shmat sleep system ttyname waitpid)
fi
if test "$target_os" != "mingw32"
then
AC_CHECK_FUNCS(fetestexcept snprintf)
fi
dnl check for mpz_xor
AC_MSG_CHECKING(for mpz_xor)
AC_CACHE_VAL(yap_cv_mpz_xor,[
AC_TRY_LINK(
#include <gmp.h>
void check(mpz_t rop,mpz_t op1,mpz_t op2) {
mpz_xor(rop,op1,op2);
}
,
,
yap_cv_mpz_xor=yes,yap_cv_mpz_xor=no)])
AC_MSG_RESULT($yap_cv_mpz_xor)
if test "$yap_cv_mpz_xor" = yes
then
AC_DEFINE(HAVE_MPZ_XOR,1,[Older versions of MPZ didn't have XOR])
fi
if test "$use_malloc" = "yes" -a "$maxmemory" = "yes"
then
maxmemory="no"
fi
dnl On some systems doing a fflush(NULL) to flush all output streams
dnl has the side-effect of making all charactes waiting in input
dnl pipes disapear.
AC_CACHE_CHECK(
[if fflush(NULL) clobbers input pipes],
[yap_cv_broken_fflush_null],
[ cat >conftest.$ac_ext <<EOF
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
char *buf;
int i;
char *bp;
bp = buf = malloc(1024);
while (1) {
while ((i = getc(stdin)) != -1
&& (*bp++ = i) != '\n'
&& (bp - buf < 1024) )
/* DO NOTHING */ ;
*bp = '\0';
fprintf(stdout, "%s", buf);
fflush(NULL);
if( i == EOF ) return 0;
bp = buf;
}
}
EOF
AC_TRY_EVAL(ac_link)
if test "$?" = 0
then
cat conftest.$ac_ext | ./conftest$ac_exeext > conftest.out
AC_TRY_COMMAND(cmp conftest.$ac_ext conftest.out)
if test "$?" = 0
then
AC_MSG_RESULT(no)
yap_cv_broken_fflush_null=no
else
AC_MSG_RESULT(yes)
yap_cv_broken_fflush_null=yes
fi
else
dnl This should never happen
AC_MSG_RESULT(failed)
yap_cv_broken_fflush_null=failed
fi
rm -f conftest.$ac_ext conftest.$ac_objext conftest$ac_exeext conftest.out ])
if test "$yap_cv_broken_fflush_null" = yes
then
dnl be conservative: if the test failed, assume fflush(NULL) is
dnl not working properly
AC_DEFINE([BROKEN_FFLUSH_NULL],[],[if fflush(NULL) clobbers input pipes]1)
fi
dnl disable smart memory management
if test "$threads" = "yes"
then
if test "$use_malloc" = "no"
then
AC_DEFINE(USE_DL_MALLOC,1,[use Doug Lea's malloc for all allocation])
else
AC_DEFINE(USE_SYSTEM_MALLOC,1,[use OS malloc for all allocation])
fi
else
case "$orparallelism" in
sba|copy)
if test x"$ac_cv_func_mmap" = x"yes"
then
AC_DEFINE(USE_SYSTEM_MMAP,1,[use mmap in or-parallel allocation])
else
AC_DEFINE(USE_SYSTEM_SHM,1,[use shm in or-parallel allocation])
fi
;;
# a-cow)
esac
if test "$use_malloc" = "no"
then
AC_DEFINE(USE_DL_MALLOC,1,[use Doug Lea's malloc for all allocation])
else
AC_DEFINE(USE_SYSTEM_MALLOC,1,[use OS malloc for all allocation])
fi
fi
AC_DEFINE(GC_NO_TAGS,1,[use Barts idea of allocating extra memory])
dnl SWI compatibility support!
PROLOG_SYSTEM=yap
IN_YAP=
IN_SWI="#"
CHR_TARGETS=chr_support."$SO"
AC_SUBST(PROLOG_SYSTEM)
AC_SUBST(IN_YAP)
AC_SUBST(IN_SWI)
AC_SUBST(TARGETS)
AC_SUBST(PLTARGETS)
AC_SUBST(CHR_TARGETS)
# use the lib directly in mingw setups
if test "$win_abi" = "32"; then
CLIB_PTHREADS="$pthreadlib"
else
AC_CHECK_LIB(pthread, pthread_create,
[CLIB_PTHREADS="-lpthread"],[CLIB_PTHREADS=""])
fi
AC_SUBST(CLIB_PTHREADS)
AC_CHECK_TYPES(socklen_t, [], [],
[
#include <sys/types.h>
#include <sys/socket.h>
])
AC_CHECK_TYPES(ssize_t, [], [],
[
#include <sys/types.h>
#include <sys/socket.h>
])
EXTRA_LIBS_FOR_SWIDLLS="$EXTRA_LIBS_FOR_DLLS $CLIB_PTHREADS"
AC_SUBST(EXTRA_LIBS_FOR_SWIDLLS)
dnl tszet and timezone trouble
AC_MSG_CHECKING("variable timezone in tzset")
AC_TRY_RUN(
[ #include <time.h>
#include <stdlib.h>
#ifdef __CYGWIN__
#define timezone _timezone
#endif
extern long timezone;
main()
{ tzset();
if ( timezone > -15*3600 &&
timezone < 15*3600 &&
timezone % 60 == 0 )
return 0;
exit(1);
}
],
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_VAR_TIMEZONE, 1,
[Define if tzset sets timezone variable]),
AC_MSG_RESULT(no),
AC_MSG_RESULT(assuming no))
AC_CHECK_MEMBER(struct tm.tm_gmtoff,
AC_DEFINE(HAVE_STRUCT_TIME_TM_GMTOFF, 1,
[Define is struct tm has tm_gmtoff]),
[],
[#include <time.h>])
if test "x$PLARCH" = "x"; then
case "$host" in
*linux*)
PLARCH=`echo $host | sed 's/-.*/-linux/'`
;;
i?86-*mingw32*|i?86-msys*)
# Make PLARCH match the definition in src/config/win32.h
PLARCH=i386-win32
;;
x86_64-*mingw32*|x86_64-msys*)
# Make PLARCH match the definition in src/config/win64.h
PLARCH=x64-win64
;;
*-gnu)
PLARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)-gnu/\1-\2/'`
;;
*)
PLARCH=`echo $host | sed 's/\([^-]*\)-[^-]*-\([^-]*\)/\1-\2/'` #'
;;
esac
fi
m4_include([packages/myddas/configure.in])
m4_include([JIT/configure.in])
if test "$PKG_CLIB" != ""
then
m4_include([packages/clib/maildrop/rfc2045/configure.in])
m4_include([packages/clib/maildrop/rfc822/configure.in])
m4_include([packages/clib/configure.in])
fi
if test "$PKG_LIBARCHIVE" != ""
then
m4_include([packages/archive/configure.in])
if test "$ARCHIVE_TARGETS" = "nolib"
then
PKG_LIBARCHIVE=""
fi
fi
m4_include([packages/bdd/configure.in])
m4_include([packages/cplint/configure.in])
dnl zlib
if test "$PKG_ZLIB" != ""
then
m4_include([packages/zlib/configure.in])
if test "$ZLIB_TARGETS" = "nolib"
then
PKG_ZLIB=""
fi
fi
if test "$yap_cv_R" != "no" -a -e "$srcdir"/packages/real/Makefile.in; then
PKG_REAL="packages/real"
m4_include([packages/real/configure.in])
else
REAL_TARGET="dummy"
PKG_REAL=""
fi
dnl
dnl java is hard
dnl
if test "$yap_cv_java" = no
then
PKG_JPL=""
elif test -e "$srcdir"/packages/jpl/Makefile.in
then
PKG_JPL="packages/jpl"
if test "$yap_cv_java" != "yes"; then
JAVA_HOME=$yap_cv_java
JAVAPREFIX="$JAVA_HOME"/bin
elif test -n "$JAVA_HOME"; then
JAVAPREFIX="$JAVA_HOME"/bin
fi
m4_include([packages/jpl/configure.in])
fi
if test -e "$srcdir"/packages/raptor/Makefile.in
then
PKG_RAPTOR="packages/raptor"
m4_include([packages/raptor/configure.in])
else
PKG_RAPTOR=""
fi
m4_include([library/matlab/configure.in])
m4_include([library/lammpi/configure.in])
m4_include([packages/python/configure.in])
m4_include([packages/swig/configure.in])
m4_include([packages/cuda/configure.in])
m4_include([packages/gecode/configure.in])
AC_SUBST(PKG_LIBARCHIVE)
yap_timestamp=`date`
yap_nversion=`expr $YAP_MAJOR_VERSION \* 10000 + $YAP_MINOR_VERSION \* 100 + $YAP_POINT_VERSION`
yap_startup=startup.yss
BINDIR=$bindir
DATAROOTDIR="$prefix"/share
BINDIR="$bindir"
AC_DEFINE_UNQUOTED( C_CC, [ "$CC" ], [c-compiler used])
AC_DEFINE_UNQUOTED( C_CFLAGS, ["$CFLAGS $YAP_EXTRAS $ -D_YAP_NOT_INSTALLED_=1 $CPPFLAGS -I. -I$srcdir/H -I$srcdir/include -I$srcdir/os -I$srcdir/OPTYap -I$srcdir/BEAM" ], [compilation flags])
AC_DEFINE_UNQUOTED( C_LDFLAGS, [ "$LDFLAGS" ], [linking flags])
AC_DEFINE_UNQUOTED( C_LIBS, [ "$LIBS" ], [main libs for YAP])
AC_DEFINE_UNQUOTED( C_LIBPLSO, [ "$LIBS $EXTRA_LIBS_FOR_DLLS" ], [libs for linking with DLLs])
AC_DEFINE_UNQUOTED( SO_EXT, [ "$SO" ], [relocable objects])
AC_DEFINE_UNQUOTED( SO_PATH, [ "$SOPATH" ], [library search variable])
AC_DEFINE_UNQUOTED( YAP_ARCH, [ "$ARCH" ], [architecture])
AC_DEFINE_UNQUOTED( YAP_BINDIR, [ "$BINDIR" ], [where the yap executable lives])
AC_DEFINE_UNQUOTED( YAP_FULL_VERSION, [ "YAP $YAP_VERSION ($ARCH): $yap_timestamp" ], [YAP version string])
AC_DEFINE_UNQUOTED( YAP_LIBDIR, [ "$prefix/lib/Yap" ], [where to look for shared libraries])
AC_DEFINE_UNQUOTED(YAP_STARTUP, [ "$yap_startup" ], [saved state file])
AC_DEFINE_UNQUOTED( YAP_NUMERIC_VERSION, [ $yap_nversion ], [numerical version])
AC_DEFINE_UNQUOTED( YAP_ROOTDIR, [ "$prefix" ], [where YAP lives])
AC_DEFINE_UNQUOTED( YAP_SHAREDIR, [ "$DATAROOTDIR" ], [where YAP lives])
AC_DEFINE_UNQUOTED( YAP_PL_SRCDIR, [ "$DATAROOTDIR/Yap/pl" ], [where YAP lives])
AC_DEFINE_UNQUOTED( YAP_TIMESTAMP, [ "$yap_timestamp" ], [date of compilation])
AC_DEFINE_UNQUOTED( YAP_VERSION, [ "$YAP_VERSION" ], [yap version])
AC_DEFINE_UNQUOTED( YAP_YAPLIB, [ "$YAPLIB" ], [name of YAP library])
mkdir -p library/matrix
mkdir -p library/mpi
mkdir -p library/random
mkdir -p library/regex
mkdir -p library/system
mkdir -p library/tries
mkdir -p library/rltree
mkdir -p LGPL
mkdir -p packages/
mkdir -p packages/clib
mkdir -p packages/clib/sha1
mkdir -p packages/clib/maildrop
mkdir -p packages/clib/maildrop/rfc822
mkdir -p packages/clib/maildrop/rfc2045
mkdir -p packages/CLPBN
mkdir -p packages/CLPBN/clpbn
mkdir -p packages/CLPBN/horus
mkdir -p packages/clpqr
mkdir -p packages/http
mkdir -p packages/jpl
mkdir -p packages/jpl/src
mkdir -p packages/jpl/src/c
mkdir -p packages/jpl/src/java
mkdir -p packages/jpl/src/java/jpl
mkdir -p packages/jpl/src/java/jpl/fli
mkdir -p packages/jpl/src/java/jpl/test
mkdir -p packages/jpl/examples
mkdir -p packages/jpl/examples/java
mkdir -p packages/meld
mkdir -p packages/myddas
mkdir -p packages/PLStream
mkdir -p packages/PLStream/libtai
mkdir -p packages/plunit
mkdir -p packages/prism
mkdir -p packages/prism/src
mkdir -p packages/prism/src/c
mkdir -p packages/prism/src/c/core
mkdir -p packages/prism/src/c/mp
mkdir -p packages/prism/src/c/up
mkdir -p packages/prism/src/prolog
mkdir -p packages/ProbLog
mkdir -p packages/ProbLog/simplecudd
mkdir -p packages/ProbLog/simplecudd_lfi
mkdir -p packages/R
mkdir -p packages/RDF
mkdir -p packages/real
mkdir -p packages/semweb
mkdir -p packages/sgml
mkdir -p packages/xml
mkdir -p packages/yap-lbfgs
mkdir -p packages/zlib
mkdir -p packages/archive
mkdir -p swi
mkdir -p swi/console
mkdir -p swi/library
mkdir -p swi/library/clp
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([library/Makefile])
AC_CONFIG_FILES([library/lammpi/Makefile])
AC_CONFIG_FILES([library/matrix/Makefile])
AC_CONFIG_FILES([library/mpi/Makefile])
AC_CONFIG_FILES([library/random/Makefile])
AC_CONFIG_FILES([library/regex/Makefile])
AC_CONFIG_FILES([library/rltree/Makefile])
AC_CONFIG_FILES([library/system/Makefile])
AC_CONFIG_FILES([library/tries/Makefile])
AC_CONFIG_FILES([packages/Makefile.defs])
AC_CONFIG_FILES([packages/Dialect.defs])
AC_CONFIG_FILES([packages/meld/Makefile])
AC_CONFIG_FILES([packages/xml/Makefile])
AC_CONFIG_FILES([packages/ProbLog/Makefile ])
AC_CONFIG_FILES([swi/library/Makefile])
AC_CONFIG_FILES([swi/library/clp/Makefile])
if test "$PKG_CHR" != ""; then
AC_CONFIG_FILES([packages/chr/Makefile])
fi
if test "$PKG_CLIB" != ""; then
AC_CONFIG_FILES([packages/clib/maildrop/rfc2045/Makefile])
AC_CONFIG_FILES([packages/clib/maildrop/rfc2045/config.h])
AC_CONFIG_FILES([packages/clib/maildrop/rfc2045/rfc2045charset.h])
AC_CONFIG_FILES([packages/clib/maildrop/rfc822/Makefile])
AC_CONFIG_FILES([packages/clib/maildrop/rfc822/config.h])
AC_CONFIG_FILES([packages/clib/Makefile])
fi
if test "$PKG_CLPQR" != ""; then
AC_CONFIG_FILES([packages/clpqr/Makefile])
fi
if test "$PKG_HTTP" != ""; then
AC_CONFIG_FILES([packages/http/Makefile])
fi
if test "$PKG_JPL" != ""; then
AC_CONFIG_FILES([packages/jpl/Makefile packages/jpl/src/java/Makefile ])
fi
if test "$PKG_PLUNIT" != ""; then
AC_CONFIG_FILES([packages/plunit/Makefile])
fi
if test "$PKG_R" != ""; then
AC_CONFIG_FILES([packages/R/Makefile])
fi
if test "$PKG_RDF" != ""; then
AC_CONFIG_FILES([packages/RDF/Makefile])
fi
if test "$PKG_SEMWEB" != ""; then
AC_CONFIG_FILES([packages/semweb/Makefile])
fi
if test "$PKG_SGML" != ""; then
AC_CONFIG_FILES([packages/sgml/Makefile])
fi
if test "$PKG_ZLIB" != ""; then
AC_CONFIG_FILES([packages/zlib/Makefile])
fi
if test "$PKG_LIBARCHIVE" != ""; then
AC_CONFIG_FILES([packages/archive/Makefile])
fi
if test "$PKG_MINISAT" != ""; then
AC_CONFIG_FILES([packages/swi-minisat2/Makefile])
AC_CONFIG_FILES([packages/swi-minisat2/C/Makefile])
fi
if test "$PKG_REAL" != ""; then
AC_CONFIG_FILES([packages/real/Makefile])
AC_CONFIG_FILES([packages/real/rconfig.h])
fi
if test "$PKG_MYDDAS" != ""; then
AC_CONFIG_FILES([packages/myddas/Makefile])
fi
if test "$PKG_CLPBN" != ""; then
AC_CONFIG_FILES([packages/CLPBN/Makefile])
AC_CONFIG_FILES([packages/CLPBN/horus/Makefile])
fi
if test "$PKG_PRISM" != ""; then
AC_CONFIG_FILES([packages/prism/src/c/Makefile])
AC_CONFIG_FILES([packages/prism/src/prolog/Makefile])
fi
if test "$PKG_WINCONSOLE" != ""; then
AC_CONFIG_FILES([swi/console/Makefile])
fi
AC_CONFIG_FILES([packages/yap-lbfgs/Makefile])
AC_OUTPUT()
cp config.h YapConfig.h