about summary refs log tree commit diff homepage
path: root/scripts/build/p-clang.inc
diff options
context:
space:
mode:
authorMartin Nowack <m.nowack@imperial.ac.uk>2023-02-23 22:01:12 +0000
committerCristian Cadar <c.cadar@imperial.ac.uk>2023-03-17 22:38:16 +0000
commitca60811f5d55254bec378919430dd0e7e6e5cdd1 (patch)
treedbd4f7a78929eb959e26755c22e5157808a09862 /scripts/build/p-clang.inc
parentdd492f8763f13312c17eb67af33e3e90217a30e1 (diff)
downloadklee-ca60811f5d55254bec378919430dd0e7e6e5cdd1.tar.gz
Update build scripts
* Support for Ubuntu 22.04
* Remove support for Python2
* Better separation between sanitizer builds and non-sanitizer builds
* Fix build of metaSMT on newer Ubuntu versions
* Use ninja to build LLVM
* Simplifying building arbitrary LLVM configurations, e.g. different
  LLVM sanitizer builds (MemSan, UBSan, ASan)
* Use MemSan with origin tracking
* Build sqlite3 container correctly
* Add support to provide sqlite3 version number
Diffstat (limited to 'scripts/build/p-clang.inc')
-rw-r--r--scripts/build/p-clang.inc62
1 files changed, 62 insertions, 0 deletions
diff --git a/scripts/build/p-clang.inc b/scripts/build/p-clang.inc
new file mode 100644
index 00000000..1b4593c9
--- /dev/null
+++ b/scripts/build/p-clang.inc
@@ -0,0 +1,62 @@
+local_setup_build_variables_clang() {
+  source "${DIR}/common-functions"
+  LLVM_SUFFIX=""
+
+  LLVM_SUFFIX+="_O"
+  LLVM_SUFFIX+="_ND"
+  LLVM_SUFFIX+="_NA"
+  LLVM_SUFFIX+="_RTTI"
+
+  LLVM_SRC_BASE="${BASE}/llvm-${LLVM_VERSION_SHORT}"
+  LLVM_BUILD="${LLVM_SRC_BASE}-build${LLVM_SUFFIX}"
+  LLVM_INSTALL="${LLVM_SRC_BASE}-install${LLVM_SUFFIX}"
+  LLVM_BIN="${LLVM_INSTALL}/bin"
+  LLVM_BUILD_BIN="${LLVM_BUILD}/bin"
+
+  LLVM_CONFIG="${LLVM_BIN}/llvm-config"
+  BITCODE_CC="${LLVM_BIN}/clang"
+  BITCODE_CXX="${LLVM_BIN}/clang++"
+}
+
+get_docker_config_id_clang() {
+  (
+    local_setup_build_variables_clang
+    echo "${LLVM_VERSION_SHORT}${LLVM_SUFFIX}"
+  )
+}
+
+get_build_artifacts_clang() {
+  (
+    local_setup_build_variables_clang
+    echo "${LLVM_INSTALL}"
+  )
+}
+
+# Check if the binary artifact is installed
+is_installed_clang() {
+  local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}"
+  local version="${LLVM_VERSION_MAJOR}"
+
+  (
+    local_setup_build_variables_clang
+    # Check if clang is installed at a potential location
+    [[ -f "${LLVM_BIN}/clang" ]]
+  )
+}
+
+setup_artifact_variables_clang() {
+  is_installed_clang || return 1
+
+  local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}"
+  local version="${LLVM_VERSION_MAJOR}"
+  local_setup_build_variables_clang
+  echo "${LLVM_INSTALL}"
+}
+
+install_build_dependencies_clang() {
+  return 0
+}
+
+setup_build_variables_clang() {
+  return 0
+}
\ No newline at end of file