blob: 1372136f94a54d67a06bb3aa9967ba958eb9477c [file] [log] [blame]
# Windows-specific builder configurations and build commands
## Base configurations
.windows:
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake ci ext\\$CI_CONCURRENT_ID"
# Avoid conflicting with other projects running on the same machine.
SCCACHE_SERVER_PORT: 4227
### Build and test
.windows_build:
extends: .windows
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"
.windows_build_ninja:
extends: .windows_build
variables:
# Debug and RelWithDebinfo build types use the `/Zi` which results in
# uncacheable compiations.
# https://github.com/mozilla/sccache/issues/242
CMAKE_CI_BUILD_TYPE: Release
CTEST_NO_WARNINGS_ALLOWED: 1
.windows_vcvarsall_vs2022_x64:
variables:
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
VCVARSPLATFORM: "x64"
VCVARSVERSION: "14.36.32532"
.windows_vcvarsall_vs2022_x86:
variables:
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
VCVARSPLATFORM: "x86"
VCVARSVERSION: "14.36.32532"
.windows_vcvarsall_vs2022_x64_arm64:
variables:
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
VCVARSPLATFORM: "x64_arm64"
VCVARSVERSION: "14.36.32532"
.windows_arm64_vcvarsall_vs2022:
variables:
VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
VCVARSPLATFORM: "arm64"
VCVARSVERSION: "14.36.32532"
.windows_vs2022_x64_pch:
extends:
- .windows_vs2022_x64_ninja
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_pch
.windows_vs2022_x64_ninja:
extends:
- .windows_build_ninja
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
.windows_arm64_vs2022_ninja:
extends:
- .windows_build_ninja
- .windows_arm64_vcvarsall_vs2022
variables:
CMAKE_CONFIGURATION: windows_arm64_vs2022_ninja
.windows_package:
extends:
- .windows_build_ninja
variables:
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NO_INSTALL: 1
.windows_x86_64_package:
extends:
- .windows_package
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_x86_64_package
.windows_i386_package:
extends:
- .windows_package
- .windows_vcvarsall_vs2022_x86
variables:
CMAKE_CONFIGURATION: windows_i386_package
.windows_arm64_package:
extends:
- .windows_package
- .windows_vcvarsall_vs2022_x64_arm64
variables:
CMAKE_CONFIGURATION: windows_arm64_package
### External testing
.windows_vs2022_x64:
extends: .windows
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64
CMAKE_GENERATOR: "Visual Studio 17 2022"
CMAKE_GENERATOR_PLATFORM: "x64"
CMAKE_GENERATOR_TOOLSET: "v143,version=14.36.32532"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_vs2019_x64:
extends: .windows
variables:
CMAKE_CONFIGURATION: windows_vs2019_x64
CMAKE_GENERATOR: "Visual Studio 16 2019"
CMAKE_GENERATOR_PLATFORM: "x64"
CMAKE_GENERATOR_TOOLSET: "v142,version=14.29.30133"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_borland:
extends: .windows
variables:
CMAKE_GENERATOR: "Borland Makefiles"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_borland5.5:
extends: .windows_borland
variables:
CMAKE_CONFIGURATION: windows_borland5.5
.windows_borland5.8:
extends: .windows_borland
variables:
CMAKE_CONFIGURATION: windows_borland5.8
.windows_ninja:
extends: .windows
variables:
CMAKE_GENERATOR: "Ninja"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_ninja_multi:
extends: .windows
variables:
CMAKE_GENERATOR: "Ninja Multi-Config"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_nmake:
extends: .windows
variables:
CMAKE_GENERATOR: "NMake Makefiles"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_jom:
extends: .windows
variables:
CMAKE_GENERATOR: "NMake Makefiles JOM"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_vs2022_x64_nmake:
extends:
- .windows_nmake
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_nmake
.windows_vs2022_x64_jom:
extends:
- .windows_jom
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_jom
.windows_vs2022_x64_ninja_multi:
extends:
- .windows_ninja_multi
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_ninja_multi
.windows_clang_ninja:
extends:
- .windows_ninja
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_clang_ninja
.windows_clang_nmake:
extends:
- .windows_nmake
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_clang_nmake
.windows_msvc_v71_nmake:
extends: .windows_nmake
variables:
CMAKE_CONFIGURATION: windows_msvc_v71_nmake
.windows_intelclassic_ninja:
extends:
- .windows_ninja
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_intelclassic_ninja
.windows_inteloneapi_ninja:
extends:
- .windows_ninja
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_inteloneapi_ninja
.windows_openwatcom:
extends: .windows
variables:
# Watcom does not support spaces in the path.
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
CMAKE_GENERATOR: "Watcom WMake"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_openwatcom1.9:
extends: .windows_openwatcom
variables:
CMAKE_CONFIGURATION: windows_openwatcom1.9
.windows_orangec:
extends: .windows
variables:
CMAKE_GENERATOR: "Ninja"
CMAKE_CI_BUILD_TYPE: Release
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.windows_orangec6.73.1:
extends: .windows_orangec
variables:
CMAKE_CONFIGURATION: windows_orangec6.73.1
.windows_arm64_vs2022:
extends: .windows
variables:
CMAKE_CONFIGURATION: windows_arm64_vs2022
CMAKE_GENERATOR: "Visual Studio 17 2022"
CMAKE_GENERATOR_PLATFORM: "ARM64"
CMAKE_GENERATOR_TOOLSET: "v143,version=14.36.32532"
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.mingw_osdn_io:
extends: .windows
variables:
# Place MinGW environment in a path without spaces.
GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID"
CMAKE_CI_BUILD_TYPE: Debug
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.mingw_osdn_io_mingw_makefiles:
extends: .mingw_osdn_io
variables:
CMAKE_CONFIGURATION: mingw_osdn_io_mingw_makefiles
CMAKE_GENERATOR: "MinGW Makefiles"
.mingw_osdn_io_msys_makefiles:
extends: .mingw_osdn_io
variables:
CMAKE_CONFIGURATION: mingw_osdn_io_msys_makefiles
CMAKE_GENERATOR: "MSYS Makefiles"
## Tags
.windows_x86_64_tags_nonconcurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-x86_64
- shell
- vs2022
- msvc-19.36
- nonconcurrent
.windows_x86_64_tags_nonconcurrent_vs2022_arm64:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-x86_64
- shell
- vs2022
- msvc-19.36-arm64
- nonconcurrent
.windows_x86_64_tags_concurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-x86_64
- shell
- vs2022
- msvc-19.36
- concurrent
.windows_x86_64_tags_concurrent_vs2022_android:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-x86_64
- shell
- vs2022
- vs17-android
- msvc-19.36
- concurrent
.windows_x86_64_tags_concurrent_vs2019_android:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-x86_64
- shell
- vs2019
- vs16-android
- msvc-19.29-16.11
- concurrent
.windows_x86_64_tags_concurrent:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-x86_64
- shell
- concurrent
.windows_arm64_tags_nonconcurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-arm64
- shell
- vs2022
- msvc-19.36
- nonconcurrent
.windows_arm64_tags_concurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows-arm64
- shell
- vs2022
- msvc-19.36
- concurrent
## Windows-specific scripts
.before_script_windows: &before_script_windows
- . .gitlab/ci/env.ps1
- . .gitlab/ci/cmake-env.ps1
- . .gitlab/ci/ninja-env.ps1
- . .gitlab/ci/qt-env.ps1
- . .gitlab/ci/python-env.ps1
.before_script_windows_external: &before_script_windows_external
- . .gitlab/ci/env.ps1
- . .gitlab/ci/python-env.ps1
.cmake_build_windows:
stage: build
script:
- *before_script_windows
- . .gitlab/ci/sccache-env.ps1
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
- sccache --start-server
- sccache --show-stats
- (& "$pwsh" -File ".gitlab/ci/pre_build.ps1")
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
- ctest -VV -S .gitlab/ci/ctest_build.cmake
- (& "$pwsh" -File ".gitlab/ci/post_build.ps1")
- sccache --show-stats
- sccache --stop-server
interruptible: true
.cmake_test_windows:
stage: test
script:
- *before_script_windows
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
- ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake
interruptible: true
.cmake_test_windows_external:
stage: test-ext
script:
- *before_script_windows_external
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake
interruptible: true