[libcxx-commits] [libcxx] 9b24ff9 - [libcxx] [ci] Add a Windows CI configuration for a statically linked libc++
Martin Storsjö via libcxx-commits
libcxx-commits at lists.llvm.org
Wed May 5 12:43:45 PDT 2021
Author: Martin Storsjö
Date: 2021-05-05T22:28:00+03:00
New Revision: 9b24ff9cd2efe1d8319af023ffb69efdaf4cd5ce
URL: https://github.com/llvm/llvm-project/commit/9b24ff9cd2efe1d8319af023ffb69efdaf4cd5ce
DIFF: https://github.com/llvm/llvm-project/commit/9b24ff9cd2efe1d8319af023ffb69efdaf4cd5ce.diff
LOG: [libcxx] [ci] Add a Windows CI configuration for a statically linked libc++
On Windows, static vs DLL linking affects details in quite a few
cases, so it's good to have coverage for both cases.
Testing with static linking also increases coverage for a number of
cases and individual checks that have had to be waived for the DLL
case, and allows testing libc++experimental, increasing the number
of test cases actually executed by 180 (176 new tests from
libc++experimental and 4 ones that are XFAIL windows-dll).
Also drop the "generic-" prefix from these configuration names, as
they're perhaps not what the "generic" prefix intended originally
in the other generic-posix configurations.
Differential Revision: https://reviews.llvm.org/D101565
Added:
Modified:
libcxx/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp
libcxx/utils/ci/buildkite-pipeline.yml
libcxx/utils/ci/run-buildbot
Removed:
################################################################################
diff --git a/libcxx/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp b/libcxx/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp
index eaf5d0b268b6c..109375b10e6e7 100644
--- a/libcxx/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp
+++ b/libcxx/test/libcxx/experimental/memory/memory.resource.adaptor/memory.resource.adaptor.mem/db_deallocate.pass.cpp
@@ -14,6 +14,8 @@
// T* polymorphic_allocator<T>::deallocate(T*, size_t size)
+// XFAIL: LIBCXX-WINDOWS-FIXME
+
int AssertCount = 0;
#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : (void)::AssertCount++)
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 2cc95ada22c20..d6c3a13246c7f 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -329,8 +329,19 @@ steps:
- exit_status: -1 # Agent was lost
limit: 2
- - label: "Windows"
- command: "bash libcxx/utils/ci/run-buildbot generic-win"
+ - label: "Windows (DLL)"
+ command: "bash libcxx/utils/ci/run-buildbot windows-dll"
+ artifact_paths:
+ - "**/test-results.xml"
+ agents:
+ queue: "windows"
+ retry:
+ automatic:
+ - exit_status: -1 # Agent was lost
+ limit: 2
+
+ - label: "Windows (Static)"
+ command: "bash libcxx/utils/ci/run-buildbot windows-static"
artifact_paths:
- "**/test-results.xml"
agents:
diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot
index 14c527e22acdd..baf4707c3169d 100755
--- a/libcxx/utils/ci/run-buildbot
+++ b/libcxx/utils/ci/run-buildbot
@@ -75,19 +75,44 @@ function clean() {
rm -rf "${BUILD_DIR}"
}
-function generate-cmake() {
+function generate-cmake-base() {
echo "--- Generating CMake"
- cmake -S "${MONOREPO_ROOT}/llvm" \
+ cmake \
-B "${BUILD_DIR}" \
-GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
-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" \
+ "${@}"
+}
+
+function generate-cmake() {
+ generate-cmake-base \
+ -S "${MONOREPO_ROOT}/llvm" \
+ -DLLVM_ENABLE_PROJECTS="libcxx;libunwind;libcxxabi" \
-DLIBCXX_CXX_ABI=libcxxabi \
"${@}"
}
+function generate-cmake-libcxx-win() {
+ # TODO: Clang-cl in MSVC configurations don't have access to compiler_rt
+ # builtins helpers for int128 division. See
+ # https://reviews.llvm.org/D91139#2429595 for a comment about longterm
+ # intent for handling the issue. In the meantime, define
+ # -D_LIBCPP_HAS_NO_INT128 (both when building the library itself and
+ # when building tests) to allow enabling filesystem for running tests,
+ # even if it uses a non-permanent ABI.
+
+ generate-cmake-base \
+ -S "${MONOREPO_ROOT}/libcxx" \
+ -DCMAKE_C_COMPILER=clang-cl \
+ -DCMAKE_CXX_COMPILER=clang-cl \
+ -DLIBCXX_ENABLE_FILESYSTEM=YES \
+ -DCMAKE_CXX_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
+ -DLIBCXX_TEST_COMPILER_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
+ "${@}"
+}
+
function check-cxx-cxxabi() {
echo "--- Installing libc++ and libc++abi to a fake location"
${NINJA} -vC "${BUILD_DIR}" install-cxx install-cxxabi
@@ -485,35 +510,21 @@ armv7-noexceptions)
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7Thumb-noexceptions.cmake"
check-cxx-cxxabi
;;
-generic-win)
+windows-dll)
clean
- # TODO: Clang-cl in MSVC configurations don't have access to compiler_rt
- # builtins helpers for int128 division. See
- # https://reviews.llvm.org/D91139#2429595 for a comment about longterm
- # intent for handling the issue. In the meantime, define
- # -D_LIBCPP_HAS_NO_INT128 (both when building the library itself and
- # when building tests) to allow enabling filesystem for running tests,
- # even if it uses a non-permanent ABI.
-
# TODO: Currently, building with the experimental library breaks running
# tests (the test linking look for the c++experimental library with the
# wrong name, and the statically linked c++experimental can't be linked
# correctly when libc++ visibility attributes indicate dllimport linkage
# anyway), thus just disable the experimental library. Remove this
# setting when cmake and the test driver does the right thing automatically.
-
- echo "--- Generating CMake"
- cmake -S "${MONOREPO_ROOT}/libcxx" \
- -B "${BUILD_DIR}" \
- -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DCMAKE_C_COMPILER=clang-cl \
- -DCMAKE_CXX_COMPILER=clang-cl \
- -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" \
- -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO \
- -DLIBCXX_ENABLE_FILESYSTEM=YES \
- -DCMAKE_CXX_FLAGS="-D_LIBCPP_HAS_NO_INT128" \
- -DLIBCXX_TEST_COMPILER_FLAGS="-D_LIBCPP_HAS_NO_INT128"
+ generate-cmake-libcxx-win -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF
+ echo "+++ Running the libc++ tests"
+ ${NINJA} -vC "${BUILD_DIR}" check-cxx
+;;
+windows-static)
+ clean
+ generate-cmake-libcxx-win -DLIBCXX_ENABLE_SHARED=OFF
echo "+++ Running the libc++ tests"
${NINJA} -vC "${BUILD_DIR}" check-cxx
;;
More information about the libcxx-commits
mailing list