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 --- 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::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 --- a/libcxx/utils/ci/buildkite-pipeline.yml +++ b/libcxx/utils/ci/buildkite-pipeline.yml @@ -329,8 +329,19 @@ - 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 --- a/libcxx/utils/ci/run-buildbot +++ b/libcxx/utils/ci/run-buildbot @@ -75,19 +75,44 @@ 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 @@ 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 ;;