Skip to content

Commit

Permalink
Link against installed libc++/libc++abi when bootstrapping
Browse files Browse the repository at this point in the history
The build tree layout does not necessarily match a valid libc++
installation tree, so install libc++/libc++abi first.

This is needed for llvm/llvm-project#115379

Reviewed By: vitalybuka

Pull Request: #299
  • Loading branch information
arichardson authored Nov 7, 2024
1 parent 26a33cd commit 8b086e3
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions zorg/buildbot/builders/sanitizers/buildbot_functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ function rm_dirs {
function cleanup() {
[[ -v BUILDBOT_BUILDERNAME ]] || return 0
echo @@@BUILD_STEP cleanup@@@
rm_dirs llvm_build2_* llvm_build_* libcxx_build_* compiler_rt_build* symbolizer_build* $@
rm_dirs llvm_build2_* llvm_build_* libcxx_build_* libcxx_install_* compiler_rt_build* symbolizer_build* "$@"
if ccache -s >/dev/null ; then
rm_dirs llvm_build64
fi
Expand Down Expand Up @@ -228,6 +228,7 @@ function build_stage2 {
echo @@@BUILD_STEP stage2/$sanitizer_name build libcxx@@@

local libcxx_build_dir=libcxx_build_${sanitizer_name}
local libcxx_install_dir=libcxx_install_${sanitizer_name}
local build_dir=llvm_build_${sanitizer_name}
export STAGE2_DIR=${build_dir}
local cmake_libcxx_cflags=
Expand Down Expand Up @@ -283,18 +284,22 @@ function build_stage2 {
(cd ${libcxx_build_dir} && \
cmake \
${cmake_stage2_common_options} \
-DCMAKE_INSTALL_PREFIX="${ROOT}/${libcxx_install_dir}" \
-DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' \
-DLIBCXX_TEST_PARAMS='long_tests=False' \
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
-DLLVM_USE_SANITIZER=${llvm_use_sanitizer} \
-DCMAKE_C_FLAGS="${fsanitize_flag} ${cmake_libcxx_cflags} ${fno_sanitize_flag}" \
-DCMAKE_CXX_FLAGS="${fsanitize_flag} ${cmake_libcxx_cflags} ${fno_sanitize_flag}" \
$LLVM/../runtimes && \
ninja cxx cxxabi) || build_failure
ninja cxx cxxabi && ninja install-cxx install-cxxabi) || build_failure

local libcxx_so_path="$(find "${ROOT}/${libcxx_install_dir}" -name libc++.so)"
test -f "${libcxx_so_path}" || build_failure
local libcxx_runtime_path=$(dirname "${libcxx_so_path}")

local libcxx_runtime_path=$(dirname $(find ${ROOT}/${libcxx_build_dir} -name libc++.so))
local sanitizer_ldflags="-Wl,--rpath=${libcxx_runtime_path} -L${libcxx_runtime_path}"
local sanitizer_cflags="-nostdinc++ -isystem ${ROOT}/${libcxx_build_dir}/include -isystem ${ROOT}/${libcxx_build_dir}/include/c++/v1 $fsanitize_flag"
local sanitizer_cflags="-nostdinc++ -isystem ${ROOT}/${libcxx_install_dir}/include -isystem ${ROOT}/${libcxx_install_dir}/include/c++/v1 $fsanitize_flag"

echo @@@BUILD_STEP stage2/$sanitizer_name build@@@

Expand Down

0 comments on commit 8b086e3

Please sign in to comment.