| # macOS-specific builder configurations and build commands |
| |
| ## Base configurations |
| |
| .macos: |
| variables: |
| GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci ext/$CI_CONCURRENT_ID" |
| # TODO: Factor this out so that each job selects the Xcode version to |
| # use so that different versions can be tested in a single pipeline. |
| DEVELOPER_DIR: "/Applications/Xcode-15.3.app/Contents/Developer" |
| # Avoid conflicting with other projects running on the same machine. |
| SCCACHE_SERVER_PORT: 4227 |
| |
| ### Build and test |
| |
| .macos_build: |
| extends: .macos |
| |
| variables: |
| # Note that shell runners only support runners with a single |
| # concurrency level. We can't use `$CI_CONCURRENCY_ID` because this may |
| # change between the build and test stages which CMake doesn't support. |
| # Even if we could, it could change if other runners on the machine |
| # could run at the same time, so we drop it. |
| GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" |
| |
| .macos_x86_64_ninja: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_x86_64_ninja |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| |
| .macos_arm64_ninja: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_ninja |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| |
| .macos_arm64_ninja_symlinked: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_ninja_symlinked |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| CMAKE_CI_IN_SYMLINK_TREE: 1 |
| CMAKE_CI_BUILD_DIR: "real_work/work/build" |
| |
| .macos_arm64_curl: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_curl |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| |
| .macos_arm64_pch: |
| extends: .macos_arm64_ninja |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_pch |
| |
| .macos_x86_64_makefiles: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_x86_64_makefiles |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| CMAKE_GENERATOR: "Unix Makefiles" |
| |
| .macos_package: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_package |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| CMAKE_CI_NO_INSTALL: 1 |
| |
| .macos10.10_package: |
| extends: .macos_build |
| |
| variables: |
| CMAKE_CONFIGURATION: macos10.10_package |
| CTEST_NO_WARNINGS_ALLOWED: 1 |
| CMAKE_CI_NO_INSTALL: 1 |
| |
| ### External testing |
| |
| .macos_x86_64_xcode: |
| extends: .macos |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_x86_64_xcode |
| CMAKE_GENERATOR: Xcode |
| CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" |
| |
| .macos_arm64_xcode: |
| extends: .macos |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_xcode |
| CMAKE_GENERATOR: Xcode |
| CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" |
| |
| .macos_arm64_xcode_symlinked: |
| extends: .macos |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked |
| CMAKE_GENERATOR: Xcode |
| CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" |
| CMAKE_CI_IN_SYMLINK_TREE: 1 |
| CMAKE_CI_BUILD_DIR: "real_work/work/build" |
| |
| .macos_arm64_xcode_ub: |
| extends: .macos |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_xcode_ub |
| CMAKE_GENERATOR: Xcode |
| CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" |
| |
| .macos_arm64_ninja_multi: |
| extends: .macos |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_arm64_ninja_multi |
| CMAKE_GENERATOR: "Ninja Multi-Config" |
| CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" |
| |
| .macos_x86_64_ninja_ub: |
| extends: .macos |
| |
| variables: |
| CMAKE_CONFIGURATION: macos_x86_64_ninja_ub |
| CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" |
| |
| ## Tags |
| |
| .macos_x86_64_tags: |
| tags: |
| - cmake # Since this is a bare runner, pin to a project. |
| - macos-x86_64 |
| - shell |
| - xcode-15.3 |
| - nonconcurrent |
| |
| .macos_x86_64_tags_ext: |
| tags: |
| - cmake # Since this is a bare runner, pin to a project. |
| - macos-x86_64 |
| - shell |
| - xcode-15.3 |
| - concurrent |
| |
| .macos_arm64_tags: |
| tags: |
| - cmake # Since this is a bare runner, pin to a project. |
| - macos-arm64 |
| - shell |
| - xcode-15.3 |
| - nonconcurrent |
| |
| .macos_arm64_tags_ext: |
| tags: |
| - cmake # Since this is a bare runner, pin to a project. |
| - macos-arm64 |
| - shell |
| - xcode-15.3 |
| - concurrent |
| |
| .macos_arm64_tags_package: |
| tags: |
| - cmake # Since this is a bare runner, pin to a project. |
| - macos-arm64 |
| - shell |
| - xcode-15.3 |
| - nonconcurrent |
| - finder |
| |
| ## macOS-specific scripts |
| |
| .before_script_macos: &before_script_macos |
| - source .gitlab/ci/env.sh |
| - source .gitlab/ci/cmake-env.sh |
| - source .gitlab/ci/ninja-env.sh |
| # Download Qt |
| - cmake -P .gitlab/ci/download_qt.cmake |
| - export CMAKE_PREFIX_PATH=$PWD/.gitlab/qt${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH} |
| |
| .cmake_build_macos: |
| stage: build |
| |
| script: |
| - *before_script_macos |
| - .gitlab/ci/sccache.sh |
| # Allow the server to already be running. |
| - "sccache --start-server || :" |
| - sccache --show-stats |
| - .gitlab/ci/pre_build.sh |
| - ctest -VV -S .gitlab/ci/ctest_configure.cmake |
| - ctest -VV -S .gitlab/ci/ctest_build.cmake |
| - .gitlab/ci/post_build.sh |
| - sccache --show-stats |
| |
| interruptible: true |
| |
| .cmake_test_macos: |
| stage: test |
| |
| script: |
| - *before_script_macos |
| - ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake |
| |
| interruptible: true |
| |
| .cmake_test_macos_external: |
| stage: test-ext |
| |
| script: |
| - *before_script_macos |
| - .gitlab/ci/sccache.sh |
| # Allow the server to already be running. |
| - "sccache --start-server || :" |
| - sccache --show-stats |
| - "$LAUNCHER build/install/CMake.app/Contents/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake" |
| - sccache --show-stats |
| |
| interruptible: true |