[libcxx-commits] [libcxx] 2f8dd26 - [libc++] Refactor the run-buildbot script to make it more modular, and run the benchmarks
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Oct 23 12:12:06 PDT 2020
Author: Louis Dionne
Date: 2020-10-23T15:11:41-04:00
New Revision: 2f8dd2687fa0211ef0c8d2faf74c0e003fe59e7a
URL: https://github.com/llvm/llvm-project/commit/2f8dd2687fa0211ef0c8d2faf74c0e003fe59e7a
DIFF: https://github.com/llvm/llvm-project/commit/2f8dd2687fa0211ef0c8d2faf74c0e003fe59e7a.diff
LOG: [libc++] Refactor the run-buildbot script to make it more modular, and run the benchmarks
As a fly-by fix, unbreak the benchmarks on Apple platforms.
Differential Revision: https://reviews.llvm.org/D90043
Added:
Modified:
libcxx/src/CMakeLists.txt
libcxx/test/support/debug_mode_helper.h
libcxx/utils/ci/buildkite-pipeline.yml
libcxx/utils/ci/run-buildbot.sh
libcxxabi/src/CMakeLists.txt
Removed:
################################################################################
diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
index 22faf19768b1..575bfc9da3d0 100644
--- a/libcxx/src/CMakeLists.txt
+++ b/libcxx/src/CMakeLists.txt
@@ -222,6 +222,8 @@ if (LIBCXX_ENABLE_SHARED)
"-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi.v${LIBCXX_LIBCPPABI_VERSION}.exp"
"-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.exp"
"-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp")
+
+ target_link_libraries(cxx_shared PRIVATE cxxabi-reexports)
endif()
# Generate a linker script in place of a libc++.so symlink.
diff --git a/libcxx/test/support/debug_mode_helper.h b/libcxx/test/support/debug_mode_helper.h
index a5b210d8edb5..c0cdac120333 100644
--- a/libcxx/test/support/debug_mode_helper.h
+++ b/libcxx/test/support/debug_mode_helper.h
@@ -28,6 +28,7 @@
#include <utility>
#include <unistd.h>
+#include <errno.h>
#include <sys/wait.h>
#include "test_macros.h"
#include "test_allocator.h"
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 76cf1c4a7666..4ea32c1c3a77 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -118,6 +118,13 @@ steps:
agents:
queue: "libcxx-macos-builders"
+ - label: "Benchmarks"
+ command: "libcxx/utils/ci/run-buildbot.sh benchmarks"
+ artifact_paths:
+ - "**/test-results.xml"
+ agents:
+ queue: "libcxx-builders"
+
# Build with the configuration we use to generate libc++.dylib on Apple platforms
- label: "Apple system"
command: "libcxx/utils/ci/run-buildbot.sh x86_64-apple-system"
diff --git a/libcxx/utils/ci/run-buildbot.sh b/libcxx/utils/ci/run-buildbot.sh
index df166b9ed40d..7534cf3c47e5 100755
--- a/libcxx/utils/ci/run-buildbot.sh
+++ b/libcxx/utils/ci/run-buildbot.sh
@@ -14,144 +14,157 @@ MONOREPO_ROOT="$(git rev-parse --show-toplevel)"
BUILD_DIR="${MONOREPO_ROOT}/build/${BUILDER}"
INSTALL_DIR="${MONOREPO_ROOT}/build/${BUILDER}/install"
-args=()
-args+=("-DLLVM_ENABLE_PROJECTS=libcxx;libunwind;libcxxabi")
-args+=("-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}")
-args+=("-DLIBCXX_CXX_ABI=libcxxabi")
+function generate-cmake() {
+ echo "--- Generating CMake"
+ rm -rf "${BUILD_DIR}"
+ cmake -S "${MONOREPO_ROOT}/llvm" \
+ -B "${BUILD_DIR}" \
+ -GNinja \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
+ -DLLVM_ENABLE_PROJECTS="libcxx;libunwind;libcxxabi" \
+ -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" \
+ -DLIBCXX_CXX_ABI=libcxxabi \
+ ${@}
+}
+
+function check-cxx-cxxabi() {
+ echo "+++ Running the libc++ tests"
+ ninja -C "${BUILD_DIR}" check-cxx
+
+ echo "+++ Running the libc++abi tests"
+ ninja -C "${BUILD_DIR}" check-cxxabi
+
+ echo "--- Installing libc++ and libc++abi to a fake location"
+ ninja -C "${BUILD_DIR}" install-cxx install-cxxabi
+}
+
+function check-cxx-benchmarks() {
+ echo "--- Running the benchmarks"
+ ninja -C "${BUILD_DIR}" check-cxx-benchmarks
+}
case "${BUILDER}" in
generic-cxx03)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx03.cmake"
+ check-cxx-cxxabi
;;
generic-cxx11)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx11.cmake"
+ check-cxx-cxxabi
;;
generic-cxx14)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx14.cmake"
+ check-cxx-cxxabi
;;
generic-cxx17)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx17.cmake"
+ check-cxx-cxxabi
;;
generic-cxx2a)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2a.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2a.cmake"
+ check-cxx-cxxabi
;;
generic-noexceptions)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-noexceptions.cmake"
+ check-cxx-cxxabi
;;
generic-32bit)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-32bits.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-32bits.cmake"
+ check-cxx-cxxabi
;;
generic-gcc)
export CC=gcc
export CXX=g++
# FIXME: Re-enable experimental testing on GCC. GCC cares about the order
# in which we link -lc++experimental, which causes issues.
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --param enable_experimental=False --xunit-xml-output test-results.xml")
+ generate-cmake -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
+ check-cxx-cxxabi
;;
generic-asan)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-asan.cmake"
+ check-cxx-cxxabi
;;
generic-msan)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-msan.cmake"
+ check-cxx-cxxabi
;;
generic-tsan)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-tsan.cmake"
+ check-cxx-cxxabi
;;
generic-ubsan)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-ubsan.cmake"
+ check-cxx-cxxabi
;;
generic-with_llvm_unwinder)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-DLIBCXXABI_USE_LLVM_UNWINDER=ON")
+ generate-cmake -DLIBCXXABI_USE_LLVM_UNWINDER=ON
+ check-cxx-cxxabi
;;
generic-singlethreaded)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-singlethreaded.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-singlethreaded.cmake"
+ check-cxx-cxxabi
;;
generic-nodebug)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-nodebug.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-nodebug.cmake"
+ check-cxx-cxxabi
;;
generic-no-random_device)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-no-random_device.cmake"
+ check-cxx-cxxabi
;;
x86_64-apple-system)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake"
+ check-cxx-cxxabi
;;
x86_64-apple-system-noexceptions)
export CC=clang
export CXX=clang++
- args+=("-DLLVM_LIT_ARGS=-sv --show-unsupported --xunit-xml-output test-results.xml")
- args+=("-C${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake")
- args+=("-DLIBCXX_ENABLE_EXCEPTIONS=OFF")
- args+=("-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF")
+ generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Apple.cmake" \
+ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
+ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF
+ check-cxx-cxxabi
+;;
+benchmarks)
+ export CC=clang
+ export CXX=clang++
+ generate-cmake
+ check-cxx-benchmarks
;;
*)
echo "${BUILDER} is not a known configuration"
exit 1
;;
esac
-
-echo "--- Generating CMake"
-rm -rf "${BUILD_DIR}"
-cmake -S "${MONOREPO_ROOT}/llvm" -B "${BUILD_DIR}" -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo "${args[@]}"
-
-echo "--- Building libc++ and libc++abi"
-ninja -C "${BUILD_DIR}" check-cxx-deps cxxabi
-
-echo "+++ Running the libc++ tests"
-ninja -C "${BUILD_DIR}" check-cxx
-
-echo "+++ Running the libc++abi tests"
-ninja -C "${BUILD_DIR}" check-cxxabi
-
-echo "+++ Installing libc++ and libc++abi to a fake location"
-ninja -C "${BUILD_DIR}" install-cxx install-cxxabi
-
-# echo "+++ Running the libc++ benchmarks"
-# ninja -C "${BUILD_DIR}" check-cxx-benchmarks
diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt
index e9e454082a05..7093cef60abc 100644
--- a/libcxxabi/src/CMakeLists.txt
+++ b/libcxxabi/src/CMakeLists.txt
@@ -202,6 +202,8 @@ if (LIBCXXABI_ENABLE_SHARED)
list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_shared")
endif()
+ add_library(cxxabi-reexports INTERFACE)
+
# -exported_symbols_list is only available on Apple platforms
if (APPLE)
function(export_symbols file)
@@ -209,7 +211,7 @@ if (LIBCXXABI_ENABLE_SHARED)
endfunction()
function(reexport_symbols file)
export_symbols("${file}")
- target_link_libraries(cxxabi_shared INTERFACE "-Wl,-reexported_symbols_list,${file}")
+ target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}")
endfunction()
export_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp")
More information about the libcxx-commits
mailing list