File 0001-Add-support-to-build-newer-LLVM-versions.patch of Package klee
From: Martin Nowack <m.nowack@imperial.ac.uk>
Date: Thu, 12 Oct 2023 10:23:34 +0100
Subject: Add support to build newer LLVM versions
Patch-mainline: no
References: llvm16
`-DLLVM_ENABLE_PROJECTS` does not include runtimes anymore,
instead a `-DLLVM_ENABLE_RUNTIMES` should be used in addition
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
scripts/build/p-libcxx.inc | 29 ++++++++++++++++++++++-------
scripts/build/p-llvm.inc | 21 +++++++++++++--------
2 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/scripts/build/p-libcxx.inc b/scripts/build/p-libcxx.inc
index 641fad61..b0263c00 100644
--- a/scripts/build/p-libcxx.inc
+++ b/scripts/build/p-libcxx.inc
@@ -30,7 +30,6 @@ build_libcxx() {
local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}"
local cmake_flags=(
- "-DLLVM_ENABLE_PROJECTS=libcxx;libcxxabi"
"-DLLVM_ENABLE_THREADS:BOOL=OFF"
"-DLIBCXX_ENABLE_THREADS:BOOL=OFF"
"-DLIBCXX_ENABLE_SHARED:BOOL=ON"
@@ -40,6 +39,13 @@ build_libcxx() {
)
# Static ABI libraries are not supported under OS X
+ if [[ "${LLVM_VERSION_SHORT}" -ge "14" ]]; then
+ cmake_flags+=("-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi")
+ cmake_flags+=("-DLLVM_ENABLE_PROJECTS=")
+ cmake_flags+=("-DLLVM_ENABLE_PROJECTS_USED:BOOL=ON")
+ else
+ cmake_flags+=("-DLLVM_ENABLE_PROJECTS=libcxx;libcxxabi")
+ fi
if [[ "${OS}" == "osx" ]]; then
cmake_flags+=("-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY:BOOL=OFF")
else
@@ -53,7 +59,11 @@ build_libcxx() {
export LLVM_COMPILER_PATH="$(dirname "${BITCODE_CC}")"
cmake "${cmake_flags[@]}" "${LIBCXX_SRC}/llvm"
- make cxx -j$(nproc) || make cxx
+ if [[ "${LLVM_VERSION_SHORT}" -ge "14" ]]; then
+ make runtimes - j"$(nproc)" || make cxx || return 1
+ else
+ make cxx - j"$(nproc)" || make cxx || return 1
+ fi
)
}
@@ -65,19 +75,24 @@ install_libcxx() {
export LLVM_COMPILER=clang
export LLVM_COMPILER_PATH="$(dirname "${BITCODE_CC}")"
- cd "${LIBCXX_BUILD}/projects"
- make install
+ if [[ "${LLVM_VERSION_SHORT}" -ge "14" ]]; then
+ cd "${LIBCXX_BUILD}/runtimes" || return 1
+ make install || return 1
+ else
+ cd "${LIBCXX_BUILD}/projects" || return 1
+ make install || return 1
+ fi
local libraries
if [[ "${OS}" == "osx" ]]; then
- libraries=("${LIBCXX_INSTALL}"/lib/lib*.dylib)
+ libraries=("${LIBCXX_INSTALL}"/lib/*/lib*.dylib)
else
- libraries=("${LIBCXX_INSTALL}"/lib/lib*.so)
+ libraries=("${LIBCXX_INSTALL}"/lib/*/lib*.so)
fi
local LLVM_VERSION_MAJOR="${LLVM_VERSION/.*/}"
- libraries+=("${LIBCXX_INSTALL}"/lib/lib*.a)
+ libraries+=("${LIBCXX_INSTALL}"/lib/*/lib*.a)
for p in "${libraries[@]}" ; do
diff --git a/scripts/build/p-llvm.inc b/scripts/build/p-llvm.inc
index abf895ae..462d69f5 100644
--- a/scripts/build/p-llvm.inc
+++ b/scripts/build/p-llvm.inc
@@ -174,16 +174,21 @@ configure_llvm() {
)
if [[ "${SANITIZER_BUILD:-}" == "memory" ]]; then
- # We have to build without libunwind if RTTI is disables
+ # We have to build without libunwind if RTTI is disabled
CONFIG+=("-DLLVM_ENABLE_PROJECTS=${ENABLED_LLVM_PROJECTS}")
else
- CONFIG+=(
- "-DLLVM_BUILD_LLVM_DYLIB:BOOL=ON"
- "-DLLVM_LINK_LLVM_DYLIB:BOOL=ON"
- "-DLLVM_BUILD_STATIC:BOOL=OFF"
- "-DLIBCLANG_BUILD_STATIC:BOOL=OFF"
- )
- CONFIG+=("-DLLVM_ENABLE_PROJECTS=${ENABLED_LLVM_PROJECTS};libcxx;libcxxabi;libunwind")
+ CONFIG+=(
+ "-DLLVM_BUILD_LLVM_DYLIB:BOOL=ON"
+ "-DLLVM_LINK_LLVM_DYLIB:BOOL=ON"
+ "-DLLVM_BUILD_STATIC:BOOL=OFF"
+ "-DLIBCLANG_BUILD_STATIC:BOOL=OFF"
+ )
+ if [[ "${LLVM_VERSION_SHORT}" -ge "14" ]]; then
+ CONFIG+=("-DLLVM_ENABLE_PROJECTS=${ENABLED_LLVM_PROJECTS}")
+ CONFIG+=("-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi")
+ else
+ CONFIG+=("-DLLVM_ENABLE_PROJECTS=${ENABLED_LLVM_PROJECTS};libcxx;libcxxabi")
+ fi
fi
if [[ -n ${SANITIZER_BUILD} ]]; then
--
2.43.0