Index: libcxx/utils/ci/buildkite-pipeline.yml =================================================================== --- libcxx/utils/ci/buildkite-pipeline.yml +++ libcxx/utils/ci/buildkite-pipeline.yml @@ -40,365 +40,14 @@ - exit_status: -1 # Agent was lost limit: 2 - - label: "C++11" - command: "libcxx/utils/ci/run-buildbot generic-cxx11" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "C++14" - command: "libcxx/utils/ci/run-buildbot generic-cxx14" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "C++17" - command: "libcxx/utils/ci/run-buildbot generic-cxx17" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "C++20" - command: "libcxx/utils/ci/run-buildbot generic-cxx20" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "C++2b" - command: "libcxx/utils/ci/run-buildbot generic-cxx2b" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "-fno-exceptions" - command: "libcxx/utils/ci/run-buildbot generic-noexceptions" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "GCC/C++20" - command: "libcxx/utils/ci/run-buildbot generic-gcc" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "ASAN" - command: "libcxx/utils/ci/run-buildbot generic-asan" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "TSAN" - command: "libcxx/utils/ci/run-buildbot generic-tsan" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "UBSAN" - command: "libcxx/utils/ci/run-buildbot generic-ubsan" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "With LLVM's libunwind" - command: "libcxx/utils/ci/run-buildbot generic-with_llvm_unwinder" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Single-threaded" - command: "libcxx/utils/ci/run-buildbot generic-singlethreaded" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "No debug mode" - command: "libcxx/utils/ci/run-buildbot generic-nodebug" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "No Filesystem" - command: "libcxx/utils/ci/run-buildbot generic-no-filesystem" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "No random device" - command: "libcxx/utils/ci/run-buildbot generic-no-random_device" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "No locale" - command: "libcxx/utils/ci/run-buildbot generic-no-localization" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "MacOS C++20" - command: "libcxx/utils/ci/run-buildbot generic-cxx20" - artifact_paths: - - "**/test-results.xml" - - "**/*.abilist" - agents: - queue: "libcxx-builders-macos" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Benchmarks" - command: "libcxx/utils/ci/run-buildbot benchmarks" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Documentation" - command: "libcxx/utils/ci/run-buildbot documentation" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Legacy standalone build" - command: "libcxx/utils/ci/run-buildbot legacy-standalone" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Unified standalone build" - command: "libcxx/utils/ci/run-buildbot unified-standalone" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - # All jobs defined before this `wait` will run whenever a CI job is started. - # Jobs defined after the `wait` will run only if all the jobs above succeeded. - # We use this to reduce the load on testers that have more constrained resources - # and avoid running builds that we know fail anyway. - - wait - - # Build with the configuration we use to generate libc++.dylib on Apple platforms - - label: "Apple system" - command: "libcxx/utils/ci/run-buildbot x86_64-apple-system" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-macos" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Apple system -fno-exceptions" - command: "libcxx/utils/ci/run-buildbot x86_64-apple-system-noexceptions" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-macos" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - # TODO: Re-enable those as soon as Green Dragon is back online. Currently, - # all the jobs are failing when they try to pull the older dylibs from - # Green Dragon, which is down. - # # Test back-deployment to older Apple platforms - # - label: "Apple back-deployment macosx10.9" - # command: "libcxx/utils/ci/run-buildbot x86_64-apple-system-backdeployment-10.9" - # artifact_paths: - # - "**/test-results.xml" - # agents: - # queue: "libcxx-builders-macos10.15" # TODO: For now, we're running the back-deployment tests for 10.9 on 10.15, because we don't have proper 10.9 machines - # retry: - # automatic: - # - exit_status: -1 # Agent was lost - # limit: 2 - - # - label: "Apple back-deployment macosx10.15" - # command: "libcxx/utils/ci/run-buildbot x86_64-apple-system-backdeployment-10.15" - # artifact_paths: - # - "**/test-results.xml" - # agents: - # queue: "libcxx-builders-macos10.15" - # retry: - # automatic: - # - exit_status: -1 # Agent was lost - # limit: 2 - - - label: "AArch64" - command: "libcxx/utils/ci/run-buildbot aarch64" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-linaro-arm" - arch: "aarch64" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "AArch64 -fno-exceptions" - command: "libcxx/utils/ci/run-buildbot aarch64-noexceptions" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-linaro-arm" - arch: "aarch64" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Armv8" - command: "libcxx/utils/ci/run-buildbot armv8" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-linaro-arm" - arch: "armv8l" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Armv8 -fno-exceptions" - command: "libcxx/utils/ci/run-buildbot armv8-noexceptions" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-linaro-arm" - arch: "armv8l" - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Armv7" - command: "libcxx/utils/ci/run-buildbot armv7" - artifact_paths: - - "**/test-results.xml" - agents: - queue: "libcxx-builders-linaro-arm" - arch: "armv8l" # Compiling for v7, running on v8 hardware - retry: - automatic: - - exit_status: -1 # Agent was lost - limit: 2 - - - label: "Armv7 -fno-exceptions" - command: "libcxx/utils/ci/run-buildbot armv7-noexceptions" + - label: "Windows" + # The run-buildbot script is a bash script which probably + # can't be executed directly as such, but let's see what happens. + command: "libcxx\utils\ci\run-buildbot-win.bat" artifact_paths: - "**/test-results.xml" agents: - queue: "libcxx-builders-linaro-arm" - arch: "armv8l" # Compiling for v7, running on v8 hardware + queue: "windows" retry: automatic: - exit_status: -1 # Agent was lost Index: libcxx/utils/ci/run-buildbot =================================================================== --- libcxx/utils/ci/run-buildbot +++ libcxx/utils/ci/run-buildbot @@ -348,6 +348,29 @@ check-cxx-cxxabi ;; +generic-win) + clean + echo "--- Generating CMake" + # -D_LIBCPP_HAS_NO_INT128 allows building filesystem with a MSVC + # setup that lacks the necessary builtins for int128. + # -DLIBCXX_TEST_LINKER_FLAGS="-loldnames" allows building some tests + # (in particular, filesystem tests) that rely on that library being + # linked implicitly. With Clang 12.0, -loldnames is properly linked in + # implicitly in this case and this line can be dropped. + cmake -S "${MONOREPO_ROOT}/libcxx" \ + -B "${BUILD_DIR}" \ + -GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \ + -DCMAKE_BUILD_TYPE=Release \ + -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_LINKER_FLAGS="-loldnames" + echo "+++ Running the libc++ tests" + ${NINJA} -C "${BUILD_DIR}" check-cxx +;; legacy-standalone) export CC=clang export CXX=clang++ Index: libcxx/utils/ci/run-buildbot-win.bat =================================================================== --- /dev/null +++ libcxx/utils/ci/run-buildbot-win.bat @@ -0,0 +1,30 @@ +@echo off +rem #===-------------------------------------------------------------------===## +rem +rem Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +rem See https://llvm.org/LICENSE.txt for license information. +rem SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +rem +rem #===-------------------------------------------------------------------===## + +rem -D_LIBCPP_HAS_NO_INT128 allows building filesystem with a MSVC +rem setup that lacks the necessary builtins for int128. +rem -DLIBCXX_TEST_LINKER_FLAGS="-loldnames" allows building some tests +rem (in particular, filesystem tests) that rely on that library being +rem linked implicitly. With Clang 12.0, -loldnames is properly linked in +rem implicitly in this case and this line can be dropped. + +mkdir build +cd build +cmake -S "../libcxx" ^ + -B "${BUILD_DIR}" ^ + -GNinja ^ + -DCMAKE_BUILD_TYPE=Release ^ + -DLLVM_LIT_ARGS="-sv --show-unsupported --xunit-xml-output test-results.xml" ^ + -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO ^ + -DLIBCXX_ENABLE_FILESYSTEM=YES ^ + -DCMAKE_C_COMPILER=clang-cl ^ + -DCMAKE_CXX_COMPILER=clang-cl ^ + -DCMAKE_CXX_FLAGS="-D_LIBCPP_HAS_NO_INT128" ^ + -DLIBCXX_TEST_LINKER_FLAGS="-loldnames" +ninja check-cxx