430 lines
11 KiB
YAML
430 lines
11 KiB
YAML
# 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_vs2019:
|
|
tags:
|
|
- cmake # Since this is a bare runner, pin to a project.
|
|
- windows-x86_64
|
|
- shell
|
|
- vs2019
|
|
- 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
|
|
- $pwdpath = $pwd.Path
|
|
- (& "$pwsh" -File ".gitlab/ci/wix.ps1")
|
|
- Set-Item -Force -Path "env:WIX" -Value "$pwdpath\.gitlab\wix"
|
|
- (& "$pwsh" -File ".gitlab/ci/cmake.ps1")
|
|
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\cmake\bin;$env:PATH"
|
|
- $cmake = "cmake"
|
|
- . .gitlab/ci/ninja-env.ps1
|
|
- (& "$env:WIX\bin\light.exe" -help) | Select -First 1
|
|
- cmake --version
|
|
- . .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
|
|
- Set-Item -Force -Path "env:PATH" -Value "$env:PATH;$env:SCCACHE_PATH"
|
|
- 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
|