blob: 3271b5ba4dd398de173f45cfc1e5baab1695f320 [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.32.31326"
.windows_vs2022_x64_ninja:
extends:
- .windows_build_ninja
- .windows_vcvarsall_vs2022_x64
variables:
CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
### 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.32.31326"
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_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_msvc_v71_nmake:
extends: .windows_nmake
variables:
CMAKE_CONFIGURATION: windows_msvc_v71_nmake
.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
## Tags
.windows_tags_nonconcurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows
- shell
- vs2022
- msvc-19.32
- nonconcurrent
.windows_tags_concurrent_vs2022:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows
- shell
- vs2022
- msvc-19.32
- concurrent
.windows_tags_concurrent_vs2019:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows
- shell
- vs2019
- msvc-19.29-16.11
- concurrent
.windows_tags_concurrent:
tags:
- cmake # Since this is a bare runner, pin to a project.
- windows
- shell
- concurrent
## Windows-specific scripts
.before_script_windows: &before_script_windows
- $pwdpath = $pwd.Path
- powershell -File ".gitlab/ci/wix.ps1"
- Set-Item -Force -Path "env:WIX" -Value "$pwdpath\.gitlab\wix"
- powershell -File ".gitlab/ci/cmake.ps1"
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\cmake\bin;$env:PATH"
- powershell -File ".gitlab/ci/ninja.ps1"
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH"
- (& "$env:WIX\bin\light.exe" -help) | Select -First 1
- cmake --version
- ninja --version
- cmake -P .gitlab/ci/download_qt.cmake
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\qt\bin;$env:PATH"
- cmake -P .gitlab/ci/download_python3.cmake
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\python3;$env:PATH"
- python --version
.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
- ctest -VV -S .gitlab/ci/ctest_configure.cmake
- ctest -VV -S .gitlab/ci/ctest_build.cmake
- 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:
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
interruptible: true
.cmake_test_windows_nmake:
stage: test-ext
script:
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
interruptible: true
.cmake_test_windows_jom:
stage: test-ext
script:
- Invoke-Expression -Command .gitlab/ci/jom.ps1
- $pwdpath = $pwd.Path
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\jom;$env:PATH"
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
interruptible: true
.cmake_test_windows_borland:
stage: test-ext
script:
- Invoke-Expression -Command .gitlab/ci/borland.ps1
- $pwdpath = $pwd.Path
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\bcc\bin;$env:PATH"
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
interruptible: true
.cmake_test_windows_msvc:
stage: test-ext
script:
- Invoke-Expression -Command .gitlab/ci/msvc.ps1
- Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
interruptible: true
.cmake_test_windows_openwatcom:
stage: test-ext
script:
- Invoke-Expression -Command .gitlab/ci/openwatcom.ps1
- $pwdpath = $pwd.Path
- Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\watcom\binnt;$pwdpath\.gitlab\watcom\binw;$env:PATH"
- Set-Item -Force -Path "env:INCLUDE" -Value "$pwdpath\.gitlab\watcom\h;$pwdpath\.gitlab\watcom\h\nt"
- Set-Item -Force -Path "env:EDPATH" -Value "$pwdpath\.gitlab\watcom\eddat"
- Set-Item -Force -Path "env:WATCOM" -Value "$pwdpath\.gitlab\watcom"
- Set-Item -Force -Path "env:WLINKTMP" -Value "."
- build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_test_external.cmake
interruptible: true