Skip to content

Link against installed libc++/libc++abi when bootstrapping #299

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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