summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorMathias Preiner <mathias.preiner@gmail.com>2018-03-20 16:11:15 -0700
committerGitHub <noreply@github.com>2018-03-20 16:11:15 -0700
commit614670f98a9ab2d3cfcb9f364a1b06d78f63ebb0 (patch)
tree7dbdfbbae495fed26877c51267f6775f618f5d33 /config
parent62f58d62c6c597eeb9cae5e08d74f21c4a5c5c40 (diff)
Add support for CaDiCaL as eager BV SAT solver. (#1675)
Diffstat (limited to 'config')
-rw-r--r--config/cadical.m490
-rw-r--r--config/cryptominisat.m43
2 files changed, 91 insertions, 2 deletions
diff --git a/config/cadical.m4 b/config/cadical.m4
new file mode 100644
index 000000000..77625b036
--- /dev/null
+++ b/config/cadical.m4
@@ -0,0 +1,90 @@
+# CVC4_CHECK_FOR_CADICAL
+# ------------------
+# Look for CaDiCaL and link it in, but only if user requested.
+AC_DEFUN([CVC4_CHECK_FOR_CADICAL], [
+AC_MSG_CHECKING([whether user requested CaDiCaL support])
+
+have_libcadical=0
+CADICAL_LIBS=
+CADICAL_LDFLAGS=
+
+have_libcadical=0
+if test "$with_cadical" = no; then
+ AC_MSG_RESULT([no, CaDiCaL disabled by user])
+elif test -n "$with_cadical"; then
+ AC_MSG_RESULT([yes, CaDiCaL requested by user])
+ AC_ARG_VAR(CADICAL_HOME, [path to top level of CaDiCaL source tree])
+ AC_ARG_WITH(
+ [cadical-dir],
+ AS_HELP_STRING(
+ [--with-cadical-dir=PATH],
+ [path to top level of CaDiCaL source tree]
+ ),
+ CADICAL_HOME="$withval",
+ [ if test -z "$CADICAL_HOME" && ! test -e "$ac_abs_confdir/cadical/build/libcadical.a"; then
+ AC_MSG_FAILURE([must give --with-cadical-dir=PATH, define environment variable CADICAL_HOME, or use contrib/get-cadical to setup CaDiCaL for CVC4!])
+ fi
+ ]
+ )
+
+ # Check if CaDiCaL was installed via contrib/get-cadical
+ AC_MSG_CHECKING([whether CaDiCaL was already installed via contrib/get-cadical])
+ if test -z "$CADICAL_HOME" && test -e "$ac_abs_confdir/cadical/build/libcadical.a"; then
+ CADICAL_HOME="$ac_abs_confdir/cadical"
+ AC_MSG_RESULT([yes, $CADICAL_HOME])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ if ! test -d "$CADICAL_HOME" || ! test -e "$CADICAL_HOME/build/libcadical.a" ; then
+ AC_MSG_FAILURE([either $CADICAL_HOME is not a CaDiCaL source tree or it's not yet built $CADICAL_HOME/build/libcadical.a])
+ fi
+
+ AC_MSG_CHECKING([how to link CaDiCaL])
+
+ CVC4_TRY_CADICAL
+
+ if test -z "$CADICAL_LIBS"; then
+ AC_MSG_FAILURE([cannot link against libcadical!])
+ else
+ AC_MSG_RESULT([$CADICAL_LIBS])
+ have_libcadical=1
+ fi
+
+ CADICAL_LDFLAGS="-L$CADICAL_HOME/build"
+
+else
+ AC_MSG_RESULT([no, user didn't request CaDiCaL])
+ with_cadical=no
+fi
+
+])# CVC4_CHECK_FOR_CADICAL
+
+# CVC4_TRY_CADICAL
+# ------------------------------
+# Try AC_CHECK_LIB(cadical) with the given linking libraries
+AC_DEFUN([CVC4_TRY_CADICAL], [
+if test -z "$CADICAL_LIBS"; then
+ AC_LANG_PUSH([C++])
+
+ cvc4_save_LIBS="$LIBS"
+ cvc4_save_LDFLAGS="$LDFLAGS"
+ cvc4_save_CPPFLAGS="$CPPFLAGS"
+
+ LDFLAGS="-L$CADICAL_HOME/build"
+ CPPFLAGS="$CPPFLAGS -I$CADICAL_HOME/src"
+ LIBS="-lcadical"
+
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <cadical.hpp>]],
+ [[CaDiCaL::Solver test();]])], [CADICAL_LIBS="-lcadical"],
+ [CADICAL_LIBS=])
+
+ LDFLAGS="$cvc4_save_LDFLAGS"
+ CPPFLAGS="$cvc4_save_CPPFLAGS"
+ LIBS="$cvc4_save_LIBS"
+
+ AC_LANG_POP([C++])
+fi
+])# CVC4_TRY_CADICAL
+
diff --git a/config/cryptominisat.m4 b/config/cryptominisat.m4
index 8f2f5bc51..7ddb895b5 100644
--- a/config/cryptominisat.m4
+++ b/config/cryptominisat.m4
@@ -40,8 +40,6 @@ elif test -n "$with_cryptominisat"; then
AC_MSG_FAILURE([either $CRYPTOMINISAT_HOME is not an cryptominisat install tree or it's not yet built])
fi
- CPPFLAGS="$CPPFLAGS -I$CRYPTOMINISAT_HOME/install/include"
-
AC_MSG_CHECKING([how to link cryptominisat])
dnl TODO FIXME:
@@ -77,6 +75,7 @@ if test -z "$CRYPTOMINISAT_LIBS"; then
cvc4_save_CPPFLAGS="$CPPFLAGS"
LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
+ CPPFLAGS="$CPPFLAGS -I$CRYPTOMINISAT_HOME/install/include"
LIBS="-lcryptominisat5 $1"
AC_LINK_IFELSE(
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback