
We did this previously on Linux and Windows: * commit45feab3c00
(gitlab-ci: enable assertions on fedora34-ninja jobs, 2022-01-31, v3.23.0-rc1~37^2) * commitbec34592a6
(ci: Enable assertions in CMake build job on Windows, 2024-12-19) The macOS build jobs were already building the `Release` configuration by default. Make it explicit to be sure we use these flags.
232 lines
5.8 KiB
YAML
232 lines
5.8 KiB
YAML
# 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-16.2.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
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
CTEST_NO_WARNINGS_ALLOWED: 1
|
|
|
|
.macos_arm64_ninja:
|
|
extends: .macos_build
|
|
|
|
variables:
|
|
CMAKE_CONFIGURATION: macos_arm64_ninja
|
|
CMAKE_CI_BUILD_TYPE: Release
|
|
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-16.2
|
|
- nonconcurrent
|
|
|
|
.macos_x86_64_tags_ext:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- macos-x86_64
|
|
- shell
|
|
- xcode-16.2
|
|
- concurrent
|
|
|
|
.macos_arm64_tags:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- macos-arm64
|
|
- shell
|
|
- xcode-16.2
|
|
- nonconcurrent
|
|
|
|
.macos_arm64_tags_ext:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- macos-arm64
|
|
- shell
|
|
- xcode-16.2
|
|
- concurrent
|
|
|
|
.macos_arm64_tags_package:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- macos-arm64
|
|
- shell
|
|
- xcode-16.2
|
|
- 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
|