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  CPLINT
dnl
dnl CPLINT_LIBS= 
dnl CPLINT_LIBS= 
dnl CPLINT_LDFLAGS= 
dnl CPLINT_SHLIB_LD= 
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_CXX_CFLAGS= 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(console/yap.c)
AC_CONFIG_HEADER(config.h)
AC_CONFIG_HEADER(YapTermConfig.h)

dnl store the environment's compilation flags
mycflags="$CFLAGS"

AC_PROG_CC
AC_PROG_CXX
AC_PROG_AWK
AC_SUBST(GCC)
AC_SUBST(C_INTERF_FLAGS)
AC_SUBST(C_PARSER_FLAGS)
AC_LANG(C)

AC_CANONICAL_SYSTEM

AC_DEFINE_UNQUOTED(HOST_ALIAS,"${target}")

case "$target_cpu" in
    i*86*)
     YAP_TARGET=i386
    ;;
    x86*)
      YAP_TARGET=amd64
    ;;
    sparc*)
      YAP_TARGET=sparc
    ;;
    *)
      YAP_TARGET=unknown
    ;;
 esac

dnl Gecode support
AC_CHECK_HEADER(gecode/support/config.hpp,
	have_gecode=yes, have_gecode=no)
AC_ARG_ENABLE(gecode,
	[ --enable-gecode            install gecode library],
        [use_gecode="$enableval"
	 if test "$use_gecode" = yes; then
	    if test "$have_gecode" = no; then
	       AC_MSG_ERROR([cannot enable gecode: gecode library not found])
	    fi
         fi], use_gecode=$have_gecode)
AC_MSG_CHECKING([if dynamic arrays are supported])
AC_COMPILE_IFELSE([
  AC_LANG_PROGRAM([[void foo(int n) { int a[n]; a[1]=0; }]],[[foo(3);]])
  ],[
  AC_MSG_RESULT([yes])
  AC_DEFINE([HAVE_DYNARRAY],[1],[Define if dynamic arrays are supported])
  ],[
  AC_MSG_RESULT([no])
  ])
GECODE_VERSION=unknown-gecode-version
GECODE_EXTRALIBS="-lgecodesupport -lgecodekernel -lgecodeint -lgecodeset -lgecodesearch"
AC_SUBST(GECODE_VERSION)
AC_SUBST(GECODE_EXTRALIBS)
if test "$use_gecode" = yes; then
  AC_MSG_CHECKING([gecode version])
  AC_RUN_IFELSE([AC_LANG_PROGRAM([[
#include "gecode/support/config.hpp"
#include <stdio.h>
]],[[
  FILE* out = fopen("conftest.out","w");
  fprintf(out,"%s\n",GECODE_VERSION);
  fclose(out);
  return 0;
]])],[GECODE_VERSION=$(cat conftest.out)
    AC_MSG_RESULT([$GECODE_VERSION])],
   [AC_MSG_ERROR([cannot determine gecode version])])
   case "$target_os" in
     *darwin*)
     AC_MSG_CHECKING([if -framework gecode is required])
     AC_LANG_PUSH([C++])
     saved_CXXFLAGS="$CXXFLAGS"
     CXXFLAGS="$CXXFLAGS -framework gecode"
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include "gecode/int.hh"
]],[[
Gecode::Exception e("","");
return 0;
]])],[GECODE_EXTRALIBS="-framework gecode"
      AC_MSG_RESULT([yes])],
     [AC_MSG_RESULT([no])])
     AC_LANG_POP()
     CXXFLAGS="$saved_CXXFLAGS"
     ;;
   esac
fi

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(rational-trees,
	[ --enable-rational-trees    support infinite rational trees ],
	rationaltrees="$enableval" , rationaltrees=yes)
AC_ARG_ENABLE(coroutining,
	[ --enable-coroutining       support co-routining, attributed variables and constraints],
	rationaltrees="$enableval";coroutining="$enableval", coroutining=yes)
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(bddlib,
	[ --enable-bddlib           dynamic bdd library ],
	dynamic_bdd="$enableval", dynamic_bdd=no)
AC_ARG_ENABLE(pthread-locking,
	[ --enable-pthread-locking   use pthread locking primitives for internal locking (requires threads)  ],
	pthreadlocking="$enableval", pthreadlocking=no)
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(chr,
	[ --enable-chr            install chr library ],
	use_chr="$enableval", use_chr=yes)
AC_ARG_ENABLE(clpqr,
	[ --enable-clpqr            install clpqr library ],
	use_clpqr="$enableval", use_clpqr=yes)
AC_ARG_ENABLE(win64,
	[ --enable-win64            compile YAP for win64 ],
	target_win64="$enableval", target_win64=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(cplint,
	[ --enable-cplint[=DIR]       enable the cplint library using the CUDD library in DIR/lib],
		yap_cv_cplint=$enableval, yap_cv_cplint=no)

AC_ARG_ENABLE(clpbn-bp,
	[ --enable-clpbn-bp           enable belief propagation solver in CLPBN.  ],
	yap_cv_clpbn_bp="$enableval", yap_cv_clpbn_bp=yes)

AC_ARG_WITH(gmp,
	[ --with-gmp[=DIR]           use GNU Multiple Precision in DIR],
	if test "$withval" = yes; then
		yap_cv_gmp=yes
	elif test "$withval" = no; then
		yap_cv_gmp=no
	else
		yap_cv_gmp=$with_gmp
		LDFLAGS="$LDFLAGS -L${yap_cv_gmp}/lib"
		LIBS="$LIBS -L${yap_cv_gmp}/lib"
		CPPFLAGS="$CPPFLAGS -I${yap_cv_gmp}/include"
		CFLAGS="$CFLAGS -I${yap_cv_gmp}/include"
	fi,
	[yap_cv_gmp=yes])
AC_ARG_WITH(R,
	[ --with-R[=DIR]              interface to R language],
	if test "$withval" = yes; then
	    yap_cv_R=yes
	elif test "$withval" = no; then
	    yap_cv_R=no
	else
	    yap_cv_R=$withval
	fi,
	[yap_cv_R=no])
AC_ARG_WITH(python,
	[ --with-python[=DIR]              interface to R language],
	if test "$withval" = yes; then
	    yap_cv_python=yes
	elif test "$withval" = no; then
	    yap_cv_python=no
	else
	    yap_cv_python=$withval
	fi,
	[yap_cv_python=no])
	
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(cudd,
	[ --with-cudd[=DIR]           use CUDD package in DIR],
	yap_cv_cudd="$withval",
	[yap_cv_cudd=no])

AC_ARG_ENABLE(myddas,
	[ --enable-myddas[[=DIR]]      enable the MYDDAS library],
	if test "$enableval" = yes; then
		yap_cv_myddas=/usr
	elif test "$enableval" = no; then
		yap_cv_myddas=no
	else
		yap_cv_myddas=$enable_myddas
		LDFLAGS="$LDFLAGS -L${yap_cv_myddas}/lib "
		CPPFLAGS="$CPPFLAGS -I${yap_cv_myddas}/include "
		ODBC_LDFLAGS="-L${yap_cv_myddas}/lib "
		ODBC_CFLAGS="-I${yap_cv_myddas}/include "
	fi,
	[yap_cv_myddas=/usr])

AC_ARG_ENABLE(myddas-stats,
	[ --enable-myddas-stats      enable the MYDDAS library statistics support],
	if test "$yap_cv_myddas" = no; then
		myddasstats=no
	else
		myddasstats="$enableval"
	fi, myddasstats=no)

AC_ARG_ENABLE(myddas-top-level,
	[ --enable-myddas-top-level  enable the MYDDAS top-level support to MySQL],
	if test "$yap_cv_myddas" = no; then
	   	myddastoplevel=no
	else
		myddastoplevel="$enableval"
	fi, myddastoplevel=no)

AC_ARG_WITH(java,
	[ --with-java=JAVA_HOME       use Java instalation in JAVA_HOME],
	if test "$withval" = yes; then
		yap_cv_java="$JAVA_HOME"
		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(matlab,
	[ --with-matlab[=DIR]      use MATLAB package in DIR],
	if test "$withval" = yes; then
		yap_cv_matlab=yes
	elif test "$withval" = no; then
		yap_cv_matlab=no
	else
		yap_cv_matlab=$with_matlab
		MATLAB_INCLUDE="-I${yap_cv_matlab}/extern/include"
	fi,
	[yap_cv_matlab=no])

AC_ARG_WITH(mpi,
	[ --with-mpi[=DIR]           use MPI library in DIR],
	if test "$withval" = yes; then
        dnl handle UBUNTU systems
		yap_cv_mpi=yes
	elif test "$withval" = no; then
		yap_cv_mpi=no
	else
		yap_cv_mpi=$with_mpi
		LDFLAGS="$LDFLAGS -L${yap_cv_mpi}/lib"
		CPPFLAGS="$CPPFLAGS -I${yap_cv_mpi}/include"
	fi,
	[yap_cv_mpi=no])


AC_ARG_WITH(mpe,
	[ --with-mpe[=DIR]           use MPE library in DIR],
	if test "$withval" = yes; then
		yap_cv_mpe=yes
	elif test "$withval" = no; then
		yap_cv_mpe=no
	else
		yap_cv_mpe=$with_mpe
		LDFLAGS="$LDFLAGS -L${yap_cv_mpe}/lib"
		CPPFLAGS="$CPPFLAGS -I${yap_cv_mpe}/include"
	fi,
	[yap_cv_mpe=no])

AC_ARG_WITH(lam,
	[ --with-lam[=DIR]           use LAM MPI library in DIR],
	if test "$withval" = yes; then
	        yap_cv_lam=yes
	elif test "$withval" = no; then
		yap_cv_lam=no
	else
		yap_cv_lam=$with_lam
		LDFLAGS="$LDFLAGS -L${yap_cv_lam}/lib"
		CPPFLAGS="$CPPFLAGS -I${yap_cv_lam}/include"
	fi,
	[yap_cv_lam=no])

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_ARG_WITH(junit, [  --with-junit=PATH	  Specify location of the junit JAR file],
	    [case "$withval" in
		 yes) JUNIT=/usr/share/java/junit.jar
			;;
		 no) JUNIT=""
			;;
		 *) JUNIT="$withval"
			;;
	     esac])

AC_DEFINE(MinHeapSpace, (1000*SIZEOF_INT_P))
AC_DEFINE(MinStackSpace,(300*SIZEOF_INT_P)) 
AC_DEFINE(MinTrailSpace,( 48*SIZEOF_INT_P))

AC_DEFINE_UNQUOTED(DefHeapSpace,$yap_cv_heap_space)
AC_DEFINE_UNQUOTED(DefStackSpace,$yap_cv_stack_space)
AC_DEFINE_UNQUOTED(DefTrailSpace,$yap_cv_trail_space)

AC_SUBST(DefHeapSpace)
AC_SUBST(DefStackSpace)
AC_SUBST(DefTrailSpace)

if test "$orparallelism" = no
then
  AC_DEFINE(MAX_WORKERS,1)
else
  AC_DEFINE_UNQUOTED(MAX_WORKERS,$yap_cv_max_workers)
  if test "$orparallelism" = copy -o "$orparallelism" = yes
  then
    use_malloc="no"
  fi
  tabling="no"
fi

if test "$threads" = no
then
  AC_DEFINE(MAX_THREADS,1)
else
 AC_DEFINE_UNQUOTED(MAX_THREADS,$yap_cv_max_threads)
fi


if test "$yap_cv_prism" = no 
then
  INSTALL_PRISM="@# "
else
  INSTALL_PRISM=""
fi

dnl condor does not like dynamic linking on Linux, DEC, and HP-UX platforms.
if test "$yap_cv_matlab" = no 
then
  INSTALL_MATLAB="@# "
elif test "$yap_cv_matlab" = yes 
then
  INSTALL_MATLAB=""
else
  case "$target_cpu" in
  i*86*)
     LDFLAGS="$LDFLAGS -L${yap_cv_matlab}/bin/glnx86"
  ;;
  x86*)
     LDFLAGS="$LDFLAGS -L${yap_cv_matlab}/bin/glnxa64"
  ;;
  sparc*)
     LDFLAGS="$LDFLAGS -L${yap_cv_matlab}/bin/sol2"
  ;;
  esac
  INSTALL_MATLAB=""
fi

if test "$yap_cv_clpbn_bp"="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_clpbn_bp=no]
  )
  CXXFLAGS="$my_save_cxxflags"
  AC_LANG_POP()
fi

if test "$yap_cv_clpbn_bp" = no 
then
  ENABLE_CLPBN_BP="@# "
else
  ENABLE_CLPBN_BP=""
fi



if test "$yap_cv_cudd" = no 
then
  ENABLE_CUDD="@# "
  ENABLE_BDDLIB="@# "
else
  if test "$dynamic_bdd" = yes
  then
    ENABLE_BDDLIB=""
  else
    ENABLE_BDDLIB="@# "
  fi
  ENABLE_CUDD=""
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)
  dnl and it disables minisat
  yap_cv_minisat=no
  STATIC_MODE=""
else
  static_compilation="no"
  STATIC_MODE="# "
fi

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(INDENT,indent,:)
AC_CHECK_TOOL(AR,ar,:)
AC_CHECK_TOOL(MPI_CC,mpicc,${CC})
AC_PATH_PROG(INSTALL_INFO,install-info,true,$PATH:/sbin:/usr/sbin:/usr/etc:/usr/local/sbin)
AC_PATH_PROG(SHELL,sh)


dnl Check for libraries.
dnl mingw does not get along well with libm
dnl cygnus and mingw32 also need wsock32 to use sockets.
dnl
if test "$target_os" = "cygwin"  -o "$target_os" = "mingw32"
then
  INSTALL_COMMAND=install_win32
  EXTRA_INCLUDES_FOR_WIN32="-I\$(srcdir)/packages/PLStream/windows"
  if test "$cygwin" = "no" -o "$target_os" = "mingw32"
  then
    if test "$target_win64" = yes
    then
      dnl configure messes up badly on this.
      target_cpu=x86_64
      YAP_TARGET=amd64
      AC_CHECK_LIB(ws2_32,main)
      AC_CHECK_LIB(comdlg32,main)
      AC_CHECK_LIB(shell32,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)
    else
      AC_CHECK_LIB(wsock32,main)
      AC_CHECK_LIB(comdlg32,main)
      AC_CHECK_LIB(shell32,main)
    fi
    EXTRA_LIBS_FOR_DLLS="\$(abs_top_builddir)/yap.dll $EXTRA_LIBS_FOR_DLLS"
    AC_CHECK_LIB(psapi,main)
    yap_cv_readline=no
    CLIB_NETLIBS="-lws2_32 -lpsapi -lgdi32"
    if test "$prefix" = "NONE"
    then
      if test "$target_win64" = yes
      then
        prefix="\${SYSTEMDRIVE}/Yap64"
	CLIB_NETLIBS="-lws2_32 -lwsock32 -lpsapi -lgdi32"
      else
        prefix="\${SYSTEMDRIVE}/Yap"
      fi
    fi
    ENABLE_WINCONSOLE=""   
  else
    ENABLE_WINCONSOLE="#"   
    LIBS="-lcygwin"
    EXTRA_LIBS_FOR_DLLS="\$(abs_top_builddir)/yap.dll"
    EXTRA_INCLUDES_FOR_WIN32="-I\$(srcdir)/packages/PLStream/windows"
  fi
else
  INSTALL_COMMAND="install_unix"
  ENABLE_WINCONSOLE="#"
  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)
  if test "$prefix" != "NONE"; then
     if test -d "${prefix}/lib64" -a "$YAP_TARGET" = amd64; then
       LDFLAGS="$LDFLAGS -L${prefix}/lib64"
     fi
     LDFLAGS="$LDFLAGS -L${prefix}/lib"
     CPPFLAGS="$CPPFLAGS -I${prefix}/include"
  fi
  if test "$exec_prefix" != "NONE"; 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
fi

if test "$yap_cv_readline" != "no"
then
  AC_CHECK_LIB([ncurses], [main],[
		LIBS="-lncurses $LIBS"
              ])
  AC_CHECK_LIB([readline], [main],[
                AC_DEFINE([HAVE_LIBREADLINE], [1],[Define if you have libreadline])
		LIBS="-lreadline $LIBS"
              ],
              [if test "x$with_readline" != xcheck; then
                 AC_MSG_FAILURE(
                   [--with-readline was given, but test for readline failed])
               fi
              ])
fi

if test "$yap_cv_gmp" != "no"
then
  AC_CHECK_LIB(gmp,main)
fi

if test "$yap_cv_R" = "no"; then
    REAL_TARGET="dummy"
    ENABLE_REAL="@# "
elif test -e "$srcdir"/packages/real/Makefile.in ; then
   REAL_TARGET="ritf"
   ENABLE_REAL=""
   AC_CHECK_PROGS(REXE, R, "none")
   if test "$yap_cv_R" = "yes"
   then
     case "$target_os" in
	*darwin*)
	  REAL_INCLUDES="-I/Library/Frameworks/R.framework/Headers"
	  REAL_LIBS="-framework R -L /Library/Frameworks/R.framework/Libraries -lR"
	;;
	  *cygwin*|*mingw*)
            REAL_INCLUDES="$($REXE CMD config --cppflags | grep -v ^WARNING)"
            REAL_LIBS="$($REXE CMD config --ldflags | grep -v ^WARNING)"
        ;;
	**)		
          dnl R is spread all over the place
	  dnl one of the two may work (Fedora/Ubuntu)
          if test -n "$R_HOME" ; then
	    REAL_INCLUDES="-I$R_HOME/include"
          elif test "$YAP_TARGET" = amd64 -a -d /usr/lib64/R/include ; then
	    REAL_INCLUDES="-I/usr/lib64/R/include"
          elif test -d /usr/include/R; then
	    REAL_INCLUDES="-I/usr/include/R"
          elif test -d /usr/share/R/include; then
	    REAL_INCLUDES="-I/usr/share/R/include"
          else
	    REAL_INCLUDES="$($REXE CMD config --cppflags | grep -v ^WARNING)"
	  fi	
          if test -n "$R_HOME" ; then
	    REAL_LIBS="-L $R_HOME/lib -lR"
          elif test "$YAP_TARGET" = amd64 -a -d /usr/lib64/R/lib; then
	    REAL_LIBS="-L /usr/lib64/R/lib -lR"
          elif test -d /usr/lib/R; then
	    REAL_LIBS="-L /usr/lib/R/lib -lR"
          else
            REAL_LIBS="$($REXE CMD config --ldflags | grep -v ^WARNING)"
	  fi
        ;;
	esac
   else
       case "$target_os" in
	  *cygwin*|*mingw*)
            REAL_INCLUDES="-I\"$yap_cv_R/include\""
	    if test "$YAP_TARGET" = i386; then
	      REAL_LIBS="\"$yap_cv_R/bin/i386/R.dll\""
	    else
	      REAL_LIBS="\"$yap_cv_R/bin/x64/R.dll\""
	    fi
	   ;;
	  *)
            REAL_INCLUDES="-I$yap_cv_R/include"
	    REAL_LIBS="-L $yap_cv_R/lib -lR"
	   ;;
         esac
  fi
  OLD_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $REAL_INCLUDES"
  AC_CHECK_HEADERS(Rinterface.h)  
  CFLAGS="$OLD_CFLAGS"
else
    REAL_TARGET="dummy"
    ENABLE_REAL="@# "
fi

if test "$yap_cv_python" = "no"; then
    PYTHON_TARGET="dummy"
    ENABLE_PYTHON="@# "
elif test -e "$srcdir"/packages/python/Makefile.in ; then
   PYTHON_TARGET="pitf"
   ENABLE_PYTHON=""
   if test "$yap_cv_python" = "yes"
   then
      AC_CHECK_PROGS(PYTHON, python, "none")
   else
     PYTHON="$yap_cv_python"
   fi
   PYTHONHOME=`$PYTHON -c'import sys; print sys.prefix'`
   PYTHONVERSION=`"$PYTHON" -c "import sys; print sys.version[[:3]]"`
   PYTHON_LIBS="-L $PYTHONHOME/lib -lpython$PYTHONVERSION"
   PYTHON_INCLUDES="-I $PYTHONHOME/include/python$PYTHONVERSION"
else
    PYTHON_TARGET="dummy"
    ENABLE_PYTHON="@# "
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

dnl if test "$yap_cv_cudd" != "no"
dnl then
dnl   AC_CHECK_LIB(cudd,Cudd_Init)
dnl fi

if test "$yap_cv_myddas" != "no"
then
	dnl check for mysql
	AC_SEARCH_LIBS(mysql_init, [mysqlclient], [yap_cv_mysql="yes"], [yap_cv_mysql="no"])
	if test "$yap_cv_mysql" = yes 
	then
                YAP_EXTRAS="$YAP_EXTRAS -DMYDDAS_MYSQL"
	fi
	
	dnl check for odbc
        case "$target_os" in
	  *darwin*)
	    LIBS="$LIBS -framework CoreFoundation"
	;;
	  **)		
	;;
	esac
	AC_SEARCH_LIBS(SQLAllocHandle, [odbc], [yap_cv_odbc="yes"], [yap_cv_odbc="no"])
	if test "$yap_cv_odbc" = yes
	then
	   ODBC_LIBS="$ODBC_LIBS -lodbc"
	else
	  AC_SEARCH_LIBS(SQLAllocHandle, [iodbc], [yap_cv_odbc="yes"], [yap_cv_odbc="no"])
	  if test "$yap_cv_odbc" = yes
	  then
	     ODBC_LIBS="$ODBC_LIBS -liodbc"
	  fi
        fi
	if test "$yap_cv_odbc" = yes 
	then
		YAP_EXTRAS="$YAP_EXTRAS -DMYDDAS_ODBC"
	fi
	
	if test "$myddasstats" = "yes"
	  then
	    YAP_EXTRAS="$YAP_EXTRAS -DMYDDAS_STATS"
	fi

	if test "$myddastoplevel" = "yes"
	  then
	    YAP_EXTRAS="$YAP_EXTRAS -DMYDDAS_TOP_LEVEL"
	fi

fi	

if test "$yap_cv_cudd" != no; then
   	    oldlibs="$LIBS"
	    if test "$yap_cv_cudd" != "NONE" -a "$yap_cv_cudd" != "yes"; then
	       CUDD_CPPFLAGS="-I $yap_cv_cudd/include"
	       cudd_dir="$yap_cv_cudd"
	    elif test "$prefix" != "NONE"; then
	       CUDD_CPPFLAGS="-I $prefix/include"
	       cudd_dir="$prefix"
	    else
	       CUDD_CPPFLAGS="-I /usr/local/include"
	       cudd_dir=/usr/local
	    fi
	    OLD_CPPFLAGS="$CPPFLAGS"
	    CPPFLAGS="$CPPFLAGS $CUDD_CPPFLAGS" 
	    AC_CHECK_HEADERS(util.h cudd/util.h cudd.h cudd/cudd.h)
	    AC_CHECK_HEADERS(cuddInt.h cudd/cuddInt.h)
            dnl cudd can be most everywhere
	    if test -d "$cudd_dir/lib64/cudd" -a "$YAP_TARGET" = amd64; then
	      LIBS="$LIBS -L $cudd_dir/lib64/cudd"
	    elif test -d "$cudd_dir/lib64" -a "$YAP_TARGET" = amd64; then
	      LIBS="$LIBS -L $cudd_dir/lib64  -L $cudd_dir/lib"
	    elif test -d "$cudd_dir/lib/cudd"; then
	      LIBS="$LIBS -L $cudd_dir/lib/cudd"
	    elif test -d "$cudd_dir/lib"; then
	      LIBS="$LIBS -L $cudd_dir/lib"
	    fi
	    if test -d "$cudd_dir/util"; then
	      LIBS="$LIBS -L $cudd_dir/util"
	    fi
	    AC_SEARCH_LIBS(util_print_cpu_stats, [cuddutil util])
	    if test -d "$cudd_dir/st"; then
	      LIBS="$LIBS -L $cudd_dir/st"
	    fi
	    AC_SEARCH_LIBS(st_insert, [cuddst st])
	    if test -d "$cudd_dir/epd"; then
	      LIBS="$LIBS -L $cudd_dir/epd"
	    fi
	    AC_SEARCH_LIBS(EpdAdd, [epd])
	    if test -d "$cudd_dir/mtr"; then
	      LIBS="$LIBS -L $cudd_dir/mtr"
	    fi
	    AC_SEARCH_LIBS(Mtr_InitTree, [mtr])
	    if test -d "$cudd_dir/cudd"; then
	      LIBS="$LIBS -L $cudd_dir/cudd"
	    fi
	    AC_SEARCH_LIBS(Cudd_Init, [cudd], [cudd_installed="yes"], [cudd_installed="no"])
	    CPPFLAGS="$OLD_CPPFLAGS"
	    if test "$cudd_installed" = yes; then
	      CUDD_LDFLAGS="$LIBS"
	    else
  cat << EOF
##################################################################
# ERROR: Could not find cudd library. Either I don't have the
# correct path, or CUDD is installed in some strange way
##################################################################
EOF
     	    fi
	    LIBS="$oldlibs"
fi

if test "$threads" = yes
then
  AC_CHECK_LIB(pthread,pthread_create)
  AC_CHECK_HEADERS(pthread.h)	
  AC_CHECK_FUNCS(pthread_mutexattr_setkind_np pthread_mutexattr_settype)
  if test "$pthreadlocking" = yes
  then
    AC_DEFINE(USE_PTHREAD_LOCKING, 1)
  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.

if test "$use_gecode" = no; then
  ENABLE_GECODE="@# "
else
  ENABLE_GECODE=""
fi
AC_SUBST(ENABLE_GECODE)

if test "$use_prism" = no; then
  ENABLE_PRISM="@# "
else
  ENABLE_PRISM=""
fi
AC_SUBST(ENABLE_PRISM)

if test -e "$srcdir"/packages/archive/Makefile.in; then
  ENABLE_LIBARCHIVE=""
else
  ENABLE_LIBARCHIVE="@# "
fi

if test -e "$srcdir"/packages/odbc/Makefile.in; then
  ENABLE_ODBC=""
else
  ENABLE_ODBC="@# "
fi

if test "$use_chr" = no; then
  ENABLE_CHR="@# "
elif test -e "$srcdir"/packages/chr/Makefile.in; then
  ENABLE_CHR=""
else
  ENABLE_CHR="@# "
fi

if test "$use_clpqr" = no; then
  ENABLE_CLPQR="@# " 
elif test -e "$srcdir"/packages/clpqr/Makefile.in; then
  ENABLE_CLPQR=""
else
  ENABLE_CLPQR="@# "
fi

if test -e "$srcdir"/packages/clib/Makefile.in; then
  ENABLE_CLIB=""
else
  ENABLE_CLIB="@# "
fi

if test -e "$srcdir"/packages/http/Makefile.in; then
  ENABLE_HTTP=""
else
  ENABLE_HTTP="@# "
fi

if test -e "$srcdir"/packages/pldoc/Makefile.in; then
  ENABLE_PLDOC=""
else
  ENABLE_PLDOC="@# "
fi

if test -e "$srcdir"/packages/plunit/Makefile.in; then
  ENABLE_PLUNIT=""
else
  ENABLE_PLUNIT="@# "
fi

if test -e "$srcdir"/packages/R/Makefile.in; then
  ENABLE_R=""
else
  ENABLE_R="@# "
fi

if test -e "$srcdir"/packages/RDF/Makefile.in; then
  ENABLE_RDF=""
else
  ENABLE_RDF="@# "
fi

if test -e "$srcdir"/packages/semweb/Makefile.in; then
  ENABLE_SEMWEB=""
else
  ENABLE_SEMWEB="@# "
fi

if test -e "$srcdir"/packages/sgml/Makefile.in; then
  ENABLE_SGML=""
else
  ENABLE_SGML="@# "
fi

if test -e "$srcdir"/packages/zlib/Makefile.in; then
  ENABLE_ZLIB=""
else
  ENABLE_ZLIB="@# "
fi

dnl
dnl java is hard
dnl
if test "$yap_cv_java" = no; then
	ENABLE_JPL="@#"   
elif test -e "$srcdir"/packages/jpl/Makefile.in; then
	ENABLE_JPL=""
	LIBJPL=libjpl
	JAVA=java
	JAVA_HOME="$yap_cv_java"
	case "$target_os" in
	    *cygwin*|*mingw*)
	       JAVALIBS="\"$JAVA_HOME\"/lib/jvm.lib"
	       JPLCFLAGS="-I\"$JAVA_HOME\"/include -I\"$JAVA_HOME\"/include/win32"
	       	  ;;
	       *darwin*)
	       LIBS="$LIBS -framework JavaVM"
	       JAVALIBS="-L/System/Library/Frameworks/JavaVM.framework/Libraries -Wl,-framework,JavaVM"
	       JPLCFLAGS="-I/System/Library/Frameworks/JavaVM.framework/Headers"
	       	  ;;
	       *)
              case "$target_os" in
	         *linux*)
		   JPLCFLAGS="-I\"$JAVA_HOME\"/include -I\"$JAVA_HOME\"/include/linux"
                ;;
	         *solaris*)
	        JPLCFLAGS="-I\"$JAVA_HOME\"/include -I\"$JAVA_HOME\"/include/solaris"
                ;;
              esac
	       JAVALIBS="-L$JAVA_HOME/jre/lib/$YAP_TARGET -L$JAVA_HOME/jre/lib/$YAP_TARGET/client  -L$JAVA_HOME/jre/lib/$YAP_TARGET/server   -Wl,-R,$JAVA_HOME/jre/lib/$YAP_TARGET -ljava -lverify -ljvm "
	       	  ;;
	esac
	if test "$yap_cv_java" = ""; then
	  JAVA=java
          JAR=jar
          JAVAC=javac
          JAVADOC=javadoc
        else
	  JAVA=$yap_cv_java/bin/java
	  JAR=$yap_cv_java/bin/jar
	  JAVAC=$yap_cv_java/bin/javac
	  JAVADOC=$yap_cv_java/bin/javadoc
        fi
else
      ENABLE_JPL="@#"
fi

AC_PROG_CPP

if test "$cross_compiling" = "yes"
then
  YAP_EXTRAS=
else
  AC_SYS_RESTARTABLE_SYSCALLS
fi

dnl defaults
INSTALL_DLLS="#"
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"
            SHLIB_LD="$CC -shared -Wl,-export-dynamic"
            SHLIB_CXX_LD="$CXX -shared -Wl,-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=""
          fi
	  LDFLAGS="$LDFLAGS -L\$(abs_top_builddir) -Wl,-R\$(LIBDIR) -Wl,-R,\$(YAPLIBDIR)"
          DYNYAPLIB=libYap."$SO"
          SONAMEFLAG="-Wl,-soname=$DYNYAPLIB"
        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,-R,\$(YAPLIBDIR) -Wl,-R,\$(LIBDIR)"
           INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
           PRE_INSTALL_ENV="LD_LIBRARY_PATH=\$(abs_top_builddir)"
        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)"
           PRE_INSTALL_ENV=""
        fi
	;;
      *sunos4*)
	M4="/usr/5bin/m4"
	LDFLAGS="$LDFLAGS -N"
        if test "$have_nsl" = yes
	 then
	 LIBS="$LIBS -lnsl"
        fi
        SO="o"
	INSTALL_DLLS=""
	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)"
        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)
	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 -Wl,-export-dynamic"
            SHLIB_CXX_LD="$CXX -shared -Wl,-export-dynamic"
            DO_SECOND_LD=""
            SO="sl"
	    SHLIB_CFLAGS="+z $CFLAGS"
	    SHLIB_CXXFLAGS="+z $CXXFLAGS"
	    INSTALL_DLLS=""
	    # If the xnet library was found, turn on X/Open networking
	    if test "$ac_cv_lib_xnet_getsockname" = yes
	    then
	     AC_DEFINE(_XOPEN_SOURCE)
	     AC_DEFINE(_XOPEN_SOURCE_EXTENDED,1)
	    fi
	  else
	    INSTALL_DLLS="#"
          fi
        fi
	#do not use realloc() from HP-UX 10.20 together with MPI
	if test ${target_os} = hpux10.20
	then
	  AC_DEFINE(MPI_AVOID_REALLOC,1)
	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)"
        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=""
	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)"
        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"
          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)"
        INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
	;;
      *irix6*)
	SHLIB_CFLAGS="$CFLAGS"
	SHLIB_CXXFLAGS="$CXXFLAGS"
	SO="so"
        DO_SECOND_LD=""
	SHLIB_LD="ld -n32 -shared -rdata_shared"
        SHLIB_CXX_LD="$SHLIB_LD"
	INSTALL_DLLS=""
	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)"
        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
	   ,
	     have_dl=no)
	  if test ${have_dl} = yes
	  then
	    LIBS="$LIBS -ldl"	  
	  fi
	fi
	SO="dylib"
        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
	   SHLIB_CFLAGS="-shared -fPIC $CFLAGS"
	   SHLIB_CXXFLAGS="-shared -fPIC $CXXFLAGS"
	   INSTALL_DLLS=""
        fi
        CC="$CC -fstrict-aliasing -freorder-blocks -fsched-interblock -Wall"
        DYNYAPLIB=libYap."$SO"
	SONAMEFLAG=""
        YAPLIB_LD="$CC -dynamiclib -Wl,-install_name,$prefix/lib/libYap.$SO"
        PRE_INSTALL_ENV="DYLD_LIBRARY_PATH=\$(abs_top_builddir)"
	;;
      *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"
        else
	  #an elf system
	  LDFLAGS="-Wl,--export-dynamic $LDFLAGS"
	  SHLIB_CFLAGS="-fPIC $CFLAGS"
	  SHLIB_CXXFLAGS="-fPIC $CXXFLAGS"
	  SHLIB_LD="$CC -shared -Wl,-export-dynamic"
          SHLIB_CXX_LD="$CXX -shared -Wl,-export-dynamic"
          DO_SECOND_LD=""
	  SO="so"
	  INSTALL_DLLS=""
        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)"
        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"
	INSTALL_DLLS=""
	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)"
           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)"
           PRE_INSTALL_ENV=""
           YAPLIB_LD="\$(CC) -shared"
           INSTALL_ENV="YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
        fi
	;;
      *cyg*|*mingw*)
	# 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"
	C_PARSER_FLAGS="$C_INTERF_FLAGS"
	EXEC_SUFFIX=".exe"
	INSTALL_DLLS=""
	DO_SECOND_LD=""
	MERGE_DLL_OBJS=""
        IN_UNIX="#"
        YAPLIB_LD="\$(CC) -shared -Wl,--export-all-symbols"
        PRE_INSTALL_ENV=""
        INSTALL_ENV=""
	;;
      *)
	AC_CHECK_LIB(dl,dlopen,
	   have_dl=yes
	 ,
	   have_dl=no)
        if test "$have_dl" = yes
	 then
         SO="o"
	 LIBS="$LIBS -ldl"
	 INSTALL_DLLS=""
	 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)"
        INSTALL_ENV="LD_LIBRARY_PATH=\$(DESTDIR)\$(LIBDIR):\$(DESTDIR)\$(YAPLIBDIR): YAPSHAREDIR=\$(DESTDIR)\$(SHAREDIR) YAPLIBDIR=\$(DESTDIR)\$(YAPLIBDIR)"
	;;
esac

if test "$dynamic_loading" = "yes"
then 
  YAPLIB_CFLAGS="$SHLIB_CFLAGS"
  YAPLIB="$DYNYAPLIB"
else
  YAPLIB_CFLAGS="$CFLAGS"
fi

if test "$coroutining" = "yes"
  then
  YAP_EXTRAS="$YAP_EXTRAS -DCOROUTINING=1 -DCUT_C=1"
fi
  
if test "$rationaltrees" = "yes"
  then
  YAP_EXTRAS="$YAP_EXTRAS -DRATIONAL_TREES=1"
fi

if test "$rationaltrees" = "yes" -a "$coroutining" = "yes"
  then
  INSTALLCLP=""
  else
  INSTALLCLP="@#"
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)
      AC_MSG_FAILURE(
                   [--or-parallelism=sba incompatible with threads])
    ;;
    a-cow)
      AC_MSG_FAILURE(
                   [--or-parallelism=a-cow incompatible with threads])
    ;;
    copy)
      AC_MSG_FAILURE(
                   [--or-parallelism=copy incompatible with threads])
    ;;
    yes|threads)
     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"
    ;;
    threads)
     YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_THREADS=1"
    ;;
    yes|copy)
     YAP_EXTRAS="$YAP_EXTRAS -DYAPOR_COPY=1"
    ;;
  esac
fi
  

if test "$cutc" = "yes"
  then
  YAP_EXTRAS="$YAP_EXTRAS -DCUT_C=1"
fi

if test "$tabling" = "yes"
  then
  YAP_EXTRAS="$YAP_EXTRAS -DTABLING=1"
fi
dnl LAM/MPI interface

LAMOBJS=""
MPI_OBJS=
LAM_MPI_CC=${MPI_CC}
if  test "$yap_cv_lam" != "no" ; then	
  if test "$yap_cv_lam" != "yes" ; then
    LAM_MPI_CC="$yap_cv_lam"/bin/mpicc
    MPI_CC="$yap_cv_lam"/bin/mpicc
    CPPFLAGS="$CPPFLAGS -I ${yap_cv_lam}/include"
    LDFLAGS="$LDFLAGS -L${yap_cv_lam}/lib"
  fi
  OLD_CC=${CC}	
  CC=${LAM_MPI_CC}
  AC_CHECK_HEADER(mpi.h,
		[LAMOBJS=yap_mpi."$SO"
                 AC_DEFINE(HAVE_LIBMPI, 1)],
		[LAMOBJS=""
                 AC_DEFINE(HAVE_LIBMPI, 0)])
  CC=${OLD_CC}
  dnl use mpich library
elif test "$yap_cv_mpi" != "no"; then
    OLD_CC=${CC}
    CC=${MPI_CC}
    AC_CHECK_LIB(mpi,MPI_Init,
		[LAMOBJS=yap_mpi."$SO"
                 AC_DEFINE(HAVE_LIBMPI, 1)],
		[LAMOBJS=yap_mpi."$SO"
                 AC_DEFINE(HAVE_LIBMPI, 0)])
    if test "$ac_cv_lib_mpi_MPI_Init" = yes
    then
	#YAPMPILIB=YapMPI.a
	MPI_OBJS=mpi.o
    else
      AC_CHECK_LIB(mpich,MPI_Init,
		[AC_DEFINE(HAVE_LIBMPICH, 1)],
		[AC_DEFINE(HAVE_LIBMPICH, 0)])
      if test "$ac_cv_lib_mpich_MPI_Init" = yes
      then
	#YAPMPILIB=YapMPI.a
	MPI_OBJS=mpi.o
      else
	#YAPMPILIB=
	MPI_CC=${CC}
      fi
    fi
    AC_CHECK_HEADERS(mpi.h)
    CC=${OLD_CC}
    MPI_LIBS=
    if test "$yap_cv_mpe" != "no"
    then
     OLD_CC=${CC}
     CC=${MPI_CC}
     AC_CHECK_LIB(mpe,MPE_Init_log,
		[AC_DEFINE(HAVE_LIBMPE, 1)],
		[AC_DEFINE(HAVE_LIBMPE, 0)])
     if test "$ac_cv_lib_mpe_MPE_Init_log" = yes
     then
	MPI_LIBS="-lmpe"
	MPI_OBJS="$MPI_OBJS mpe.o"
     fi
     AC_CHECK_HEADERS(mpe.h)
     CC=${OLD_CC}
   fi
else
    MPI_CC=${CC}
fi


if test ! "$yap_cv_cplint" = "no"
  then	
	if test ! "$yap_cv_cplint" = "yes"
	then
		CPLINT_LDFLAGS+=" -L${yap_cv_cplint}/cudd -L${yap_cv_cplint}/mtr -L${yap_cv_cplint}/st -L${yap_cv_cplint}/util -L${yap_cv_cplint}/epd "
		CPLINT_CFLAGS+=" -I${yap_cv_cplint}/include"
		CPLINT_LIBS="-lcudd  -lmtr -lst -lepd -lutil -lm "$CPLINT_LIBS
	fi
	ENABLE_CPLINT=""
	if test "$target_os" = "cygwin" -o "$target_os" = "mingw32"
	then
		CPLINT_SHLIB_LD="gcc -shared ../../yap.dll"
		SHLIB_SUFFIX="dll"
	else
		CPLINT_SHLIB_LD=$SHLIB_LD
		SHLIB_SUFFIX="so"
	fi
	AC_SUBST(CPLINT_LIBS)
	AC_SUBST(CPLINT_CFLAGS)
	AC_SUBST(CPLINT_LDFLAGS)
	AC_SUBST(CPLINT_SHLIB_LD)
	AC_SUBST(SHLIB_SUFFIX)
else
	ENABLE_CPLINT="@#"
fi
AC_SUBST(ENABLE_CPLINT)

AC_SUBST(INSTALL_ENV)
AC_SUBST(PRE_INSTALL_ENV)

dnl Checks for header files.
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 io.h limits.h)
AC_CHECK_HEADERS(locale.h malloc.h math.h memory.h)
AC_CHECK_HEADERS(netdb.h netinet/in.h netinet/tcp.h pwd.h regex.h shlobj.h)
AC_CHECK_HEADERS(siginfo.h signal.h stdarg.h stdint.h string.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/un.h sys/wait.h)
AC_CHECK_HEADERS(time.h unistd.h utime.h wctype.h winsock.h winsock2.h)
AC_CHECK_HEADERS(zlib.h zutil.h)
AC_CHECK_HEADERS(mach-o/dyld.h LibLoaderAPI.h)
if test "$yap_cv_gmp" != "no"
then
  AC_CHECK_HEADERS(gmp.h)
fi
if test "$yap_cv_judy" != "no"; then
  AC_CHECK_HEADERS(Judy.h)
fi
if test "$yap_cv_myddas" != "no"
then
  AC_CHECK_HEADERS(mysql/mysql.h)
fi
if test "$yap_cv_readline" != "no"
then
  AC_CHECK_HEADERS( readline/readline.h)
  AC_CHECK_HEADERS( readline/history.h)
  AC_CHECK_FUNCS( rl_completion_matches  rl_clear_pending_input  rl_cleanup_after_signal rl_event_hook rl_filename_completion_function rl_free_line_state rl_insert_close rl_set_prompt rl_state_initialized )
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)

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(MALLOC_T,void *)
else AC_DEFINE(MALLOC_T,char *)
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)
else
M4GENHDRS=m4/cc_genhdrs.m4
AC_DEFINE(HAVE_GCC,0)
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)

CMDEXT=sh

dnl System stuff for dynamic linking.
dnl
dnl Exports:
dnl
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)
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(ENABLE_CHR)
AC_SUBST(ENABLE_CLIB)
AC_SUBST(ENABLE_CLPQR)
AC_SUBST(ENABLE_HTTP)
AC_SUBST(ENABLE_JPL)
AC_SUBST(ENABLE_PLDOC)
AC_SUBST(ENABLE_PLUNIT)
AC_SUBST(ENABLE_R)
AC_SUBST(ENABLE_RDF)
AC_SUBST(ENABLE_SEMWEB)
AC_SUBST(ENABLE_SGML)
AC_SUBST(ENABLE_ZLIB)
AC_SUBST(ENABLE_CLPBN_BP)
AC_SUBST(JAVA)
AC_SUBST(JAVA_HOME)
AC_SUBST(JUNIT)
AC_SUBST(JAVAC)
AC_SUBST(JAVADOC)
AC_SUBST(JAR)
AC_SUBST(LIBJPL)
AC_SUBST(IN_UNIX)
AC_SUBST(YAPMPILIB)
AC_SUBST(LAM_MPI_CC)
AC_SUBST(MPI_OBJS)
AC_SUBST(MPI_LIBS)
AC_SUBST(INSTALL_COMMAND)
AC_SUBST(INSTALLCLP)
AC_SUBST(JPLCFLAGS)
AC_SUBST(JPLLIBS)
AC_SUBST(JAVALIBS)
AC_SUBST(JPLCFLAGS)
AC_SUBST(LAMOBJS)
AC_SUBST(MAX_WORKERS)
AC_SUBST(STATIC_MODE)
AC_SUBST(ENABLE_WINCONSOLE)
AC_SUBST(EXTRA_INCLUDES_FOR_WIN32)
AC_SUBST(CMDEXT)

AC_SUBST(ENABLE_CUDD)
AC_SUBST(ENABLE_BDDLIB)
AC_SUBST(CUDD_LDFLAGS)
AC_SUBST(CUDD_CPPFLAGS)
AC_SUBST(ENABLE_MINISAT)
AC_SUBST(ENABLE_REAL)
AC_SUBST(REAL_TARGET)
AC_SUBST(REAL_INCLUDES)
AC_SUBST(REAL_LIBS)
AC_SUBST(INSTALL_MATLAB)
AC_SUBST(MATLAB_INCLUDE)
AC_SUBST(INSTALL_PRISM)
AC_SUBST(PYTHON_TARGET)
AC_SUBST(ENABLE_PYTHON)
AC_SUBST(PYTHON_INCLUDES)
AC_SUBST(PYTHON_LIBS)

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)
	M4GENABSMI=gen_gcc.m4
else	
	AC_DEFINE(USE_THREADED_CODE,0)
	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)
else
AC_DEFINE(FFIEEE,0)
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)
else
AC_DEFINE(HAVE_SIGSETJMP,0)
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)
else
AC_DEFINE(HAVE_SIGSEGV,0)
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)
else
AC_DEFINE(HAVE_SIGPROF,0)
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", SA_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)
else
AC_DEFINE(HAVE_SIGINFO,0)
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, [],
                          [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)
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)
fi

dnl Checks for library functions.
AC_TYPE_SIGNAL
AC_CHECK_FUNCS(_NSGetEnviron _chsize_s access acosh)
AC_CHECK_FUNCS(alloca asinh atanh chdir clock clock_gettime)
AC_CHECK_FUNCS(ctime dlopen dup2)
AC_CHECK_FUNCS(erf feclearexcept)
AC_CHECK_FUNCS(fesettrapenable fgetpos finite fpclass ftime ftruncate getcwd getenv)
AC_CHECK_FUNCS(getexecname)
AC_CHECK_FUNCS(gethostbyname gethostent gethostid gethostname)
AC_CHECK_FUNCS(gethrtime getpagesize)
AC_CHECK_FUNCS(getpwnam getrlimit getrusage gettimeofday getwd)
AC_CHECK_FUNCS(isatty isnan isinf kill labs link lgamma)
AC_CHECK_FUNCS(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 readlink regexec)
AC_CHECK_FUNCS(rename rint sbrk select setbuf)
AC_CHECK_FUNCS(setitimer setlocale setsid setlinebuf sigaction)
AC_CHECK_FUNCS(siggetmask siginterrupt)
AC_CHECK_FUNCS(signal sigprocmask socket stat)
AC_CHECK_FUNCS(strchr strerror stricmp strlwr strncat strncpy strtod)
AC_CHECK_FUNCS(time times tmpnam usleep utime vsnprintf)

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)
else
AC_DEFINE(HAVE_MPZ_XOR,0)
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 makeing 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" = no
then
  AC_DEFINE(BROKEN_FFLUSH_NULL,0)
else
  dnl be conservative: if the test failed, assume fflush(NULL) is
  dnl not working properly
  AC_DEFINE(BROKEN_FFLUSH_NULL,1)
fi

dnl disable smart memory management
if test "$use_malloc" = yes 
then
AC_DEFINE(USE_SYSTEM_MALLOC,1)
AC_DEFINE(GC_NO_TAGS,1)
fi

dnl large memory configuration, don't trust Yap allocation routines
if test "$maxmemory" = yes
then
AC_DEFINE(GC_NO_TAGS,1)
AC_DEFINE(USE_DL_MALLOC,1)
fi

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)

dnl clib
if test "$ENABLE_CLIB" = ""; then
CLIB_TARGETS="socket.$SO cgi.$SO memfile.$SO files.$SO mime.$SO $CRYPT_TARGETS"
CLIB_PLTARGETS="socket.pl cgi.pl memfile.pl filesex.pl mime.pl $CRYPT_TARGETS"

if test "$ac_cv_func_setitimer" = "yes"; then
  CLIB_TARGETS="$CLIB_TARGETS time.$SO"
  CLIB_PLTARGETS="$CLIB_PLTARGETS time.pl"
else
  echo "WARNING: no setitimer(); dropping time.pl from targets"
fi

if test "$IN_UNIX" = ""; then
CLIB_TARGETS="uid.$SO unix.$SO $CLIB_TARGETS"
CLIB_PLTARGETS="uid.pl unix.pl $CLIB_PLTARGETS"
CLIB_NETLIBS=
else
AC_CHECK_FUNC(socket, [], [
             AC_CHECK_LIB(socket, socket,
                      [CLIB_NETLIBS="$CLIB_NETLIBS -lsocket"]
                      AC_DEFINE(HAVE_LIBSOCKET, 1,
                      "Define if you have the socket library (-lsocket)."))])
AC_CHECK_FUNC(gethostent, [], [
             AC_CHECK_LIB(nsl, gethostent,
                      [CLIB_NETLIBS="$CLIB_NETLIBS -lnsl"]
                      AC_DEFINE(HAVE_LIBNSL, 1,
                      "Define if you have the nsl library (-lnsl)."))])
fi

AC_CHECK_LIB(pthread, pthread_create,
                      [CLIB_PTHREADS="-lpthread"],[CLIB_PTHREADS=""])

oldlibs="$LIBS"
AC_CHECK_LIB(crypt, crypt, CRYPT_TARGET=crypt.\$SO, CRYPT_TARGET="")
CLIB_CRYPTLIBS="$LIBS"
AC_CHECK_FUNCS(crypt)
LIBS="$oldlibs"

AC_SUBST(CLIB_PTHREADS)
AC_SUBST(CLIB_TARGETS)
AC_SUBST(CLIB_PLTARGETS)
AC_SUBST(CLIB_NETLIBS)
AC_SUBST(CLIB_CRYPTLIBS)

fi

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, [],
			  [Define is struct tm has tm_gmtoff]),
		[],
		[#include <time.h>])

AC_MSG_CHECKING(_XOPEN_SOURCE)
AC_TRY_COMPILE(
[
#define _XOPEN_SOURCE
#include <unistd.h>
],
[
], AC_DEFINE(DEFINE_XOPEN_SOURCE, 1,
	     "Define if _XOPEN_SOURCE is needed")
   AC_MSG_RESULT(yes),
   AC_MSG_RESULT(no))

if test "$with_time" = yes; then
  if test "$ac_cv_func_setitimer" = "yes"; then
    TARGETS="$TARGETS time.$SO"
  else
    echo "WARNING: no setitimer(); dropping time.pl from targets"
  fi
fi

if test "$ac_cv_func_getrlimit" = "yes"; then
  TARGETS="$TARGETS rlimit.$SO"
else
  echo "WARNING: no getrlimit(); dropping rlimit.pl from targets"
fi

AC_ARG_ENABLE(mimecharset,
	[  --enable-mimecharset=charset   Default MIME charset to set on new messages],
	RFC2045CHARSET="$enableval", RFC2045CHARSET="us-ascii")

AC_SUBST(RFC2045CHARSET)

MAILDROP_CFLAGS="$SHLIB_CFLAGS -I. -I\$(srcdir) -I\$(srcdir)/.. -I../../../.."
AC_SUBST(MAILDROP_CFLAGS)

if test "$yap_cv_minisat" = no 
then
  ENABLE_MINISAT="@# "
elif test "$INSTALL_DLLS" = "#" 
then
  ENABLE_MINISAT="@# "
else
  ENABLE_MINISAT=""
fi

dnl zlib
if test "$ENABLE_ZLIB" = ""
then

AC_CHECK_LIB(z, zlibVersion,
	     ZLIBS="-lz"
	     ZLIB=yes,
	     ZLIB=no)

if test "$ZLIB" = yes; then
  ZLIB_TARGETS="zlib4pl.$SO"
  ZLIB_PLTARGETS='zlib.pl'
  ZLIB_INSTALL=install
else
  ZLIB_TARGETS=nolib
  ZLIB_INSTALL=nolib
  cat << EOF
##################################################################
# ERROR: Could not find library zlib (-lz).  Dropped library(zlib)
# Library zlib is available from http://www.zlib.net/
# Most Unix/Linux distributions are shipped with binaries.  Make
# sure to have the development library installed.
##################################################################
EOF
fi


AC_SUBST(ZLIBS)
AC_SUBST(ZLIB_TARGETS)
AC_SUBST(ZLIB_PLTARGETS)
AC_SUBST(ZLIB_INSTALL)
fi

dnl archive

if test "$yap_cv_odbc" = yes; then
	   ODBC_TARGETS="odbc4pl.$SO"
	   ODBC_PLTARGETS=odbc.pl
	   AC_CHECK_HEADERS(sql.h)
	   AC_CHECK_FUNCS(localtime mktime gmtime timegm)
	   AC_CHECK_TYPES([SQLLEN, SQLULEN],,,
	       [#include <sql.h>
	       ])
else
	   ODBC_TARGETS=nolib
	   ODBC_PLTARGETS=odbc.pl
fi


if test "$ENABLE_LIBARCHIVE" = ""
then
OLD_LIBS=$LIBS

AC_CHECK_HEADER(archive.h,
		[ AC_DEFINE([HAVE_ARCHIVE_H], 1,
			    [Define to 1 if you have <archive.h>.])
		  ARCHIVEH=yes
		],
		ARCHIVEH=no)

if test "$ARCHIVEH" = yes; then
  AC_CHECK_LIB(archive, archive_read_new,
	       ARCHIVE_LIBS="-larchive"
	       ARCHIVELIB=yes,
	       ARCHIVELIB=no)
fi

LIBS="$LIBS -larchive"
AC_CHECK_FUNCS(archive_read_support_compression_bzip2 \
	       archive_read_support_compression_compress \
	       archive_read_support_compression_gzip \
	       archive_read_support_compression_lzma \
	       archive_read_support_compression_none \
	       archive_read_support_compression_xz)

AC_CHECK_FUNCS(archive_read_support_format_ar \
	       archive_read_support_format_cpio \
	       archive_read_support_format_empty \
	       archive_read_support_format_iso9660 \
	       archive_read_support_format_mtree \
	       archive_read_support_format_raw \
	       archive_read_support_format_tar \
	       archive_read_support_format_zip)

if test "$ARCHIVELIB" = yes; then
  ARCHIVE_TARGETS="archive4pl.$SO"
  ARCHIVE_PLTARGETS=archive.pl
else
  ARCHIVE_TARGETS=nolib
  cat << EOF
##################################################################
# ERROR: Could not find library archive (-larchive).  Dropped
# library(archive). Library archive is available from
# http://code.google.com/p/libarchive/
#
# Most Unix/Linux distributions are shipped with binaries.  Make
# sure to have the development library installed.  E.g.
#
#   Debian/Ubuntu/Mint:	aptitude install libarchive-dev
#   Fedora/...		yum install libarchive-devel
#   MacOS (Macports):   port install libarchive
##################################################################
EOF

fi

AC_SUBST(ARCHIVE_LIBS)
AC_SUBST(ARCHIVE_TARGETS)
AC_SUBST(ARCHIVE_PLTARGETS)

LIBS="$OLD_LIBS"
fi

AC_SUBST(ENABLE_LIBARCHIVE)

AC_SUBST(ODBC_CFLAGS)
AC_SUBST(ODBC_LDFLAGS)
AC_SUBST(ODBC_LIBS)
AC_SUBST(ODBC_TARGETS)
AC_SUBST(ODBC_PLTARGETS)

AC_SUBST(ENABLE_ODBC)

mkdir -p  library/lammpi
mkdir -p  library/matrix
mkdir -p  library/matlab
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/clp
mkdir -p  LGPL/swi_console
mkdir -p  GPL
mkdir -p  packages/
mkdir -p  packages/bdd
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/cplint
mkdir -p  packages/cplint/approx
mkdir -p  packages/cplint/approx/simplecuddLPADs
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/PLStream
mkdir -p  packages/PLStream/libtai
mkdir -p  packages/pldoc
mkdir -p  packages/pldoc/server
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/zlib
mkdir -p  packages/archive

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([GPL/Makefile])
AC_CONFIG_FILES([library/Makefile])
AC_CONFIG_FILES([library/lammpi/Makefile])
AC_CONFIG_FILES([library/matlab/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([LGPL/Makefile])
AC_CONFIG_FILES([LGPL/clp/Makefile])
AC_CONFIG_FILES([LGPL/swi_console/Makefile])
AC_CONFIG_FILES([packages/Makefile.defs])
AC_CONFIG_FILES([packages/Dialect.defs])
AC_CONFIG_FILES([packages/CLPBN/Makefile])
AC_CONFIG_FILES([packages/cplint/Makefile])
AC_CONFIG_FILES([packages/cplint/approx/simplecuddLPADs/Makefile])
AC_CONFIG_FILES([packages/cplint/slipcase/Makefile])
AC_CONFIG_FILES([packages/meld/Makefile])
AC_CONFIG_FILES([packages/xml/Makefile])
AC_CONFIG_FILES([packages/ProbLog/Makefile ])

if test "$ENABLE_CHR" = ""; then
AC_CONFIG_FILES([packages/chr/Makefile])
fi

if test "$ENABLE_CLIB" = ""; then
AC_CONFIG_FILES([packages/clib/Makefile])
AC_CONFIG_FILES([packages/clib/maildrop/rfc822/Makefile])
AC_CONFIG_FILES([packages/clib/maildrop/rfc2045/Makefile])
AC_CONFIG_FILES([packages/clib/maildrop/rfc2045/rfc2045charset.h])
fi

if test "$ENABLE_CLPQR" = ""; then
AC_CONFIG_FILES([packages/clpqr/Makefile])
fi

if test "$ENABLE_HTTP" = ""; then
AC_CONFIG_FILES([packages/http/Makefile])
fi

if test "$ENABLE_JPL" = ""; then
AC_CONFIG_FILES([packages/jpl/Makefile packages/jpl/jpl_paths.yap packages/jpl/src/java/Makefile ])
fi

if test "$ENABLE_PYTHON" = ""; then
AC_CONFIG_FILES([ packages/python/Makefile ])
fi

if test "$ENABLE_PLDOC" = ""; then
AC_CONFIG_FILES([packages/pldoc/Makefile])
AC_CONFIG_FILES([packages/pldoc/server/man_server.pl])
fi

if test "$ENABLE_PLUNIT" = ""; then
AC_CONFIG_FILES([packages/plunit/Makefile])
fi

if test "$ENABLE_R" = ""; then
AC_CONFIG_FILES([packages/R/Makefile])
fi

if test "$ENABLE_RDF" = ""; then
AC_CONFIG_FILES([packages/RDF/Makefile])
fi

if test "$ENABLE_SEMWEB" = ""; then
AC_CONFIG_FILES([packages/semweb/Makefile])
fi

if test "$ENABLE_SGML" = ""; then
AC_CONFIG_FILES([packages/sgml/Makefile])
fi

if test "$ENABLE_ZLIB" = ""; then
AC_CONFIG_FILES([packages/zlib/Makefile])
fi

if test "$ENABLE_LIBARCHIVE" = ""; then
AC_CONFIG_FILES([packages/archive/Makefile])
fi

if test "$ENABLE_ODBC" = ""; then
AC_CONFIG_FILES([packages/odbc/Makefile])
fi


if test "$ENABLE_CUDD" = ""; then
AC_CONFIG_FILES([packages/bdd/Makefile])
AC_CONFIG_FILES([packages/ProbLog/simplecudd/Makefile])
AC_CONFIG_FILES([packages/ProbLog/simplecudd_lfi/Makefile])
fi

if test "$ENABLE_MINISAT" = ""; then
AC_CONFIG_FILES([packages/swi-minisat2/Makefile])
AC_CONFIG_FILES([packages/swi-minisat2/C/Makefile])
fi

if test "$ENABLE_REAL" = ""; then
AC_CONFIG_FILES([packages/real/Makefile])
fi

if test "$ENABLE_CLPBN_BP" = ""; then
AC_CONFIG_FILES([packages/CLPBN/horus/Makefile])
fi

if test "$ENABLE_GECODE" = ""; then
AC_CONFIG_FILES([library/gecode/Makefile])
fi

if test "$ENABLE_PRISM" = ""; then
AC_CONFIG_FILES([packages/prism/src/c/Makefile])
AC_CONFIG_FILES([packages/prism/src/prolog/Makefile])
fi

AC_OUTPUT()

