about summary refs log tree commit diff homepage
path: root/scripts/build/v-solvers.inc
diff options
context:
space:
mode:
authorMartin Nowack <m.nowack@imperial.ac.uk>2019-02-28 11:56:19 +0000
committerCristian Cadar <c.cadar@imperial.ac.uk>2019-03-10 20:10:32 +0000
commitcf930214e12b49e89be4674043d9f461d667baae (patch)
tree90de5ea1c643d0d7ad2c5cf55e862d309e605d48 /scripts/build/v-solvers.inc
parentb4d8fe0301b82e8abff0336bf6d1347dff11a853 (diff)
downloadklee-cf930214e12b49e89be4674043d9f461d667baae.tar.gz
Updated dependency build system for KLEE
Provide a single `scripts/build/build.sh` file to build KLEE and its
dependencies.
Diffstat (limited to 'scripts/build/v-solvers.inc')
-rw-r--r--scripts/build/v-solvers.inc63
1 files changed, 63 insertions, 0 deletions
diff --git a/scripts/build/v-solvers.inc b/scripts/build/v-solvers.inc
new file mode 100644
index 00000000..ad3f43f1
--- /dev/null
+++ b/scripts/build/v-solvers.inc
@@ -0,0 +1,63 @@
+# Meta-package for solvers
+required_variables_solvers=(
+  "SOLVERS"
+)
+
+required_variables_check_solvers() {
+  local solvers
+  IFS=":" read -r -a solvers <<< "${SOLVERS}"
+  [[ -z "${solvers[@]}" ]] && { echo "SOLVERS can't be empty"; exit 1; }
+  
+  for solver in "${solvers[@]}"; do
+    [[ -z "${solver}" ]] && continue
+    solver="$(to_lower ${solver})"
+
+    [[ "${solver}" == "z3" ]] && continue
+    [[ "${solver}" == "stp" ]] && continue
+    [[ "${solver}" == "metasmt" ]] && continue
+    
+    echo "Unknown solver: \"$solver\""
+    exit 1
+  done
+}
+
+# On which artifacts does SOLVERS depend on
+artifact_dependency_solvers() {
+  # Setup variables first to get selected solvers
+  setup_variables_solvers
+  for solver in "${SELECTED_SOLVERS[@]}"; do
+    echo "${solver}"
+  done
+}
+
+# On which artifacts does SOLVERS depend on
+runtime_artifact_dependency_solvers() {
+  # Setup variables first to get selected solvers
+  setup_variables_solvers
+  for solver in "${SELECTED_SOLVERS[@]}"; do
+    echo "${solver}"
+  done
+}
+
+# Setup general variables
+setup_variables_solvers() {
+  local solvers
+  IFS=":" read -r -a solvers <<< "${SOLVERS}"
+
+  SELECTED_SOLVERS=()
+  for solver in "${solvers[@]}"; do
+    [[ -z "${solver}" ]] && continue
+    solver="$(to_lower ${solver})"
+    [[ "${solver}" == "z3" ]] && SELECTED_SOLVERS+=("z3") && continue
+    [[ "${solver}" == "stp" ]] && SELECTED_SOLVERS+=("stp") && continue
+    [[ "${solver}" == "metasmt" ]] && SELECTED_SOLVERS+=("metasmt") && continue
+
+    echo "Unknown solver: \"$solver\""
+    exit 1
+  done
+
+  # Sort solvers
+  SELECTED_SOLVERS=( $( for e in "${SELECTED_SOLVERS[@]}"; do echo "$e"; done | sort|uniq) )
+# TODO Add specific suffix of each solver
+  SOLVER_SUFFIX=$(IFS=_ ; echo "${SELECTED_SOLVERS[*]}")
+}
\ No newline at end of file