From 2b07721933d82f09c026134e0da52587f49d5df6 Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Thu, 12 Oct 2023 10:23:34 +0100 Subject: Add support to build newer LLVM versions `-DLLVM_ENABLE_PROJECTS` does not include runtimes anymore, instead a `-DLLVM_ENABLE_RUNTIMES` should be used in addition --- 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 -- cgit 1.4.1