about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorMartin Nowack <m.nowack@imperial.ac.uk>2020-09-24 21:17:40 +0100
committerCristian Cadar <c.cadar@imperial.ac.uk>2020-09-30 16:34:47 +0100
commit2fad33172fc5e7f5e03f7b7e4c753f7b2330bc0f (patch)
treeb7aae9b896b39c3f964b1d9ce4aa84c376aaa98d
parenta434c1ede97a763f3c48555a4925d8f7e1619ce1 (diff)
downloadklee-2fad33172fc5e7f5e03f7b7e4c753f7b2330bc0f.tar.gz
Reduce compile time and size for LLVM build
* Just target x86 as architecture
* do not build tests for clang
* use optimized tablegen

* only build required tools and libraries that are needed by KLEE
-rw-r--r--scripts/build/p-llvm.inc27
1 files changed, 21 insertions, 6 deletions
diff --git a/scripts/build/p-llvm.inc b/scripts/build/p-llvm.inc
index 6ab18531..a97b8676 100644
--- a/scripts/build/p-llvm.inc
+++ b/scripts/build/p-llvm.inc
@@ -130,9 +130,11 @@ build_llvm() {
        mkdir -p "${SANITIZER_LLVM_UNINSTRUMENTED}"
        cd "${SANITIZER_LLVM_UNINSTRUMENTED}"
        cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
+      "-DLLVM_OPTIMIZED_TABLEGEN=ON" \
         "-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;libcxx;libcxxabi" \
+      "-DLLVM_TARGETS_TO_BUILD=X86" \
         "${LLVM_SRC_BASE}/llvm"
-       ninja
+    ninja compiler-rt cxx cxxabi clang || return 1
 
        # Build instrumented libc/libc++
        mkdir -p "${SANITIZER_LLVM_LIBCXX}"
@@ -142,8 +144,10 @@ build_llvm() {
         -DLLVM_USE_SANITIZER=MemoryWithOrigins \
         "${SANITIZER_CMAKE_C_COMPILER[@]}" \
         "${SANITIZER_CMAKE_CXX_COMPILER[@]}" \
+      "-DLLVM_OPTIMIZED_TABLEGEN=ON" \
+      "-DLLVM_TARGETS_TO_BUILD=X86" \
         "${LLVM_SRC_BASE}/llvm"
-       ninja cxx cxxabi
+    ninja compiler-rt cxx cxxabi|| return 1
 
        # Build instrumented clang
        mkdir -p "${LLVM_BUILD}"
@@ -163,9 +167,12 @@ build_llvm() {
           -DLLVM_ENABLE_LIBCXX=ON \
           -DCMAKE_EXE_LINKER_FLAGS="${LD_F}" \
           -DCMAKE_INSTALL_PREFIX="${LLVM_INSTALL}" \
+      -DBUILD_SHARED_LIBS=ON \
+      -DLLVM_OPTIMIZED_TABLEGEN=ON \
+      -DLLVM_TARGETS_TO_BUILD=X86 \
           "${LLVM_SRC_BASE}/llvm"
       # Build clang as a dependency and install all needed packages
-      ninja clang
+    ninja clang || return 1
       return 0
     fi
 
@@ -176,13 +183,19 @@ build_llvm() {
   # Skip building if already finished
   [[ -e "${LLVM_BUILD}/.build_finished" ]] && return 0
 
-
   # Configure LLVM
   CONFIG=(
      "-DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL}"
      "-DLLVM_BUILD_LLVM_DYLIB=TRUE"
-     "-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;libcxx;libcxxabi"
   )
+
+  # Select components to build
+  if [[ ${LLVM_VERSION_SHORT} -ge 60 ]]; then
+    CONFIG+=("-DLLVM_ENABLE_PROJECTS=clang;compiler-rt;libcxx;libcxxabi")
+  else
+    CONFIG+=("-DLLVM_ENABLE_PROJECTS=clang;compiler-rt")
+  fi
+
   # cmake build
   if [[ "${enable_optimized}" == "1" && "${enable_debug}" != "1" ]]; then
     CONFIG+=("-DCMAKE_BUILD_TYPE=Release")
@@ -216,9 +229,11 @@ build_llvm() {
   CONFIG+=(
      "-DLLVM_INCLUDE_EXAMPLES=OFF"
 #     "-DLLVM_INCLUDE_TESTS=OFF"
-#     "-DCLANG_INCLUDE_TESTS=OFF"
+    "-DCLANG_INCLUDE_TESTS=OFF"
      "-DLLVM_INCLUDE_BENCHMARKS=OFF"
      "-DBUILD_SHARED_LIBS=ON"
+    "-DLLVM_OPTIMIZED_TABLEGEN=ON"
+    "-DLLVM_TARGETS_TO_BUILD=X86"
   )
 
   local variables=("")