-#!/bin/sh
+#!/bin/bash
#--------------------------------------------------------------------------#
+set -e -o pipefail
+
usage () {
cat <<EOF
Usage: $0 [<build type>] [<option> ...]
debug
testing
competition
+ competition-inc
General options;
--valgrind Valgrind instrumentation
--debug-context-mm use the debug context memory manager
--statistics include statistics
- --replay turn on the replay feature
--assertions turn on assertions
--tracing include tracing code
--dumping include dumping code
--unit-testing support for unit testing
--python2 prefer using Python 2 (also for Python bindings)
--python3 prefer using Python 3 (also for Python bindings)
+ --python-bindings build Python bindings based on new C++ API
+ --asan build with ASan instrumentation
+ --ubsan build with UBSan instrumentation
+ --tsan build with TSan instrumentation
The following options configure parameterized features.
--drat2er use drat2er (required for eager BV proofs)
--lfsc use the LFSC proof checker
--symfpu use SymFPU for floating point solver
- --portfolio build the multithreaded portfolio version of CVC4
- (pcvc4)
--readline support the readline library
Optional Path to Optional Packages:
abc=default
asan=default
+ubsan=default
+tsan=default
assertions=default
best=default
cadical=default
cln=default
+comp_inc=default
coverage=default
cryptominisat=default
debug_symbols=default
lfsc=default
muzzle=default
optimized=default
-portfolio=default
proofs=default
-replay=default
shared=default
static_binary=default
statistics=default
unit_testing=default
python2=default
python3=default
+python_bindings=default
valgrind=default
profiling=default
readline=default
--asan) asan=ON;;
--no-asan) asan=OFF;;
+ --ubsan) ubsan=ON;;
+ --no-ubsan) ubsan=OFF;;
+
+ --tsan) tsan=ON;;
+ --no-tsan) tsan=OFF;;
+
--assertions) assertions=ON;;
--no-assertions) assertions=OFF;;
--optimized) optimized=ON;;
--no-optimized) optimized=OFF;;
- --portfolio) portfolio=ON;;
- --no-portfolio) portfolio=OFF;;
-
--proofs) proofs=ON;;
--no-proofs) proofs=OFF;;
- --replay) replay=ON;;
- --no-replay) replay=OFF;;
-
--static) shared=OFF; static_binary=ON;;
--no-static) shared=ON;;
--python3) python3=ON;;
--no-python3) python3=OFF;;
+ --python-bindings) python_bindings=ON;;
+ --no-python-bindings) python_bindings=OFF;;
+
--valgrind) valgrind=ON;;
--no-valgrind) valgrind=OFF;;
-*) die "invalid option '$1' (try -h)";;
*) case $1 in
- production) buildtype=Production;;
- debug) buildtype=Debug;;
- testing) buildtype=Testing;;
- competition) buildtype=Competition;;
- *) die "invalid build type (try -h)";;
+ production) buildtype=Production;;
+ debug) buildtype=Debug;;
+ testing) buildtype=Testing;;
+ competition) buildtype=Competition;;
+ competition-inc) buildtype=Competition; comp_inc=ON;;
+ *) die "invalid build type (try -h)";;
esac
;;
esac
&& cmake_opts="$cmake_opts -DCMAKE_BUILD_TYPE=$buildtype"
[ $asan != default ] \
- && cmake_opts="$cmake_opts -DENABLE_ASAN=$asan"
+ && cmake_opts="$cmake_opts -DENABLE_ASAN=$asan"
+[ $ubsan != default ] \
+ && cmake_opts="$cmake_opts -DENABLE_UBSAN=$ubsan"
+[ $tsan != default ] \
+ && cmake_opts="$cmake_opts -DENABLE_TSAN=$tsan"
[ $assertions != default ] \
&& cmake_opts="$cmake_opts -DENABLE_ASSERTIONS=$assertions"
[ $best != default ] \
&& cmake_opts="$cmake_opts -DENABLE_BEST=$best"
+[ $comp_inc != default ] \
+ && cmake_opts="$cmake_opts -DENABLE_COMP_INC_TRACK=$comp_inc"
[ $coverage != default ] \
&& cmake_opts="$cmake_opts -DENABLE_COVERAGE=$coverage"
[ $debug_symbols != default ] \
&& cmake_opts="$cmake_opts -DENABLE_MUZZLE=$muzzle"
[ $optimized != default ] \
&& cmake_opts="$cmake_opts -DENABLE_OPTIMIZED=$optimized"
-[ $portfolio != default ] \
- && cmake_opts="$cmake_opts -DENABLE_PORTFOLIO=$portfolio"
[ $proofs != default ] \
&& cmake_opts="$cmake_opts -DENABLE_PROOFS=$proofs"
-[ $replay != default ] \
- && cmake_opts="$cmake_opts -DENABLE_REPLAY=$replay"
[ $shared != default ] \
&& cmake_opts="$cmake_opts -DENABLE_SHARED=$shared"
[ $static_binary != default ] \
&& cmake_opts="$cmake_opts -DUSE_PYTHON2=$python2"
[ $python3 != default ] \
&& cmake_opts="$cmake_opts -DUSE_PYTHON3=$python3"
+[ $python_bindings != default ] \
+ && cmake_opts="$cmake_opts -DBUILD_BINDINGS_PYTHON=$python_bindings"
[ $valgrind != default ] \
&& cmake_opts="$cmake_opts -DENABLE_VALGRIND=$valgrind"
[ $profiling != default ] \
&& cmake_opts="$cmake_opts -DUSE_SYMFPU=$symfpu"
[ $language_bindings_java != default ] \
- && cmake_opts="$cmake_opts -DBUILD_BINDINGS_JAVA=$language_bindings_java"
+ && cmake_opts="$cmake_opts -DBUILD_SWIG_BINDINGS_JAVA=$language_bindings_java"
[ $language_bindings_python != default ] \
- && cmake_opts="$cmake_opts -DBUILD_BINDINGS_PYTHON=$language_bindings_python"
+ && cmake_opts="$cmake_opts -DBUILD_SWIG_BINDINGS_PYTHON=$language_bindings_python"
[ "$abc_dir" != default ] \
&& cmake_opts="$cmake_opts -DABC_DIR=$abc_dir"
[ $win64 = ON ] && [ -e "$build_dir" ] && rm -r "$build_dir"
mkdir -p "$build_dir"
-cd "$build_dir" || exit 1
+cd "$build_dir"
[ -e CMakeCache.txt ] && rm CMakeCache.txt
build_dir_escaped=$(echo "$build_dir" | sed 's/\//\\\//g')