blob: 2b265ea4908f73d886ce0d589777cf8ea6008f5c [file] [log] [blame]
# 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