| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554 |
- # Windows-specific builder configurations and build commands
- ## Base configurations
- .windows:
- variables:
- GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake ci ext\\$CI_CONCURRENT_ID"
- ### 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 compilations.
- # https://github.com/mozilla/sccache/issues/242
- CMAKE_CI_BUILD_TYPE: Release
- CTEST_NO_WARNINGS_ALLOWED: 1
- .windows_vcvarsall_vs2022_x64_msvc14.43:
- variables:
- VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "x64"
- VCVARSVERSION: "14.43.34808"
- .windows_vcvarsall_vs2022_x64_msvc14.44:
- variables:
- VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "x64"
- VCVARSVERSION: "14.44.35207"
- .windows_vcvarsall_vs2022_x86_msvc14.44:
- variables:
- VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "x86"
- VCVARSVERSION: "14.44.35207"
- .windows_vcvarsall_vs2026_x64:
- variables:
- VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "x64"
- VCVARSVERSION: "14.50.35717"
- .windows_vcvarsall_vs2026_x86:
- variables:
- VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "x86"
- VCVARSVERSION: "14.50.35717"
- .windows_vcvarsall_vs2026_x64_arm64:
- variables:
- VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "x64_arm64"
- VCVARSVERSION: "14.50.35717"
- .windows_arm64_vcvarsall_vs2026:
- variables:
- VCVARSALL: "${VS180COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- VCVARSPLATFORM: "arm64"
- VCVARSVERSION: "14.50.35717"
- .windows_vs2026_x64_pch:
- extends:
- - .windows_vs2026_x64_ninja
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64_pch
- .windows_vs2026_x64_ninja:
- extends:
- - .windows_build_ninja
- - .windows_vcvarsall_vs2026_x64
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64_ninja
- .windows_arm64_vs2026_ninja:
- extends:
- - .windows_build_ninja
- - .windows_arm64_vcvarsall_vs2026
- variables:
- CMAKE_CONFIGURATION: windows_arm64_vs2026_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_msvc14.44
- variables:
- CMAKE_CONFIGURATION: windows_x86_64_package
- .windows_i386_package:
- extends:
- - .windows_package
- - .windows_vcvarsall_vs2022_x86_msvc14.44
- variables:
- CMAKE_CONFIGURATION: windows_i386_package
- .windows_arm64_package:
- extends:
- - .windows_package
- - .windows_vcvarsall_vs2026_x64_arm64
- variables:
- CMAKE_CONFIGURATION: windows_arm64_package
- ### External testing
- .windows_vs2026_x64:
- extends: .windows
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64
- CMAKE_GENERATOR: "Visual Studio 18 2026"
- CMAKE_GENERATOR_PLATFORM: "x64"
- CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
- CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
- .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.44.35207"
- 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_fastbuild:
- extends: .windows
- variables:
- CMAKE_GENERATOR: "FASTBuild"
- CMAKE_CI_BUILD_TYPE: Release
- CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
- .windows_vs2026_x64_nmake:
- extends:
- - .windows_nmake
- - .windows_vcvarsall_vs2026_x64
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64_nmake
- .windows_vs2026_x64_jom:
- extends:
- - .windows_jom
- - .windows_vcvarsall_vs2026_x64
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64_jom
- .windows_vs2026_x64_ninja_multi:
- extends:
- - .windows_ninja_multi
- - .windows_vcvarsall_vs2026_x64
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64_ninja_multi
- .windows_vs2026_x64_fastbuild:
- extends:
- - .windows_fastbuild
- - .windows_vcvarsall_vs2026_x64
- variables:
- CMAKE_CONFIGURATION: windows_vs2026_x64_fastbuild
- .windows_clang_ninja:
- extends:
- - .windows_ninja
- - .windows_vcvarsall_vs2022_x64_msvc14.44
- variables:
- CMAKE_CONFIGURATION: windows_clang_ninja
- .windows_clang_nmake:
- extends:
- - .windows_nmake
- - .windows_vcvarsall_vs2022_x64_msvc14.44
- 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_msvc14.43
- variables:
- CMAKE_CONFIGURATION: windows_intelclassic_ninja
- .windows_inteloneapi_ninja:
- extends:
- - .windows_ninja
- - .windows_vcvarsall_vs2022_x64_msvc14.44
- 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_vs2026:
- extends: .windows
- variables:
- CMAKE_CONFIGURATION: windows_arm64_vs2026
- CMAKE_GENERATOR: "Visual Studio 18 2026"
- CMAKE_GENERATOR_PLATFORM: "ARM64"
- CMAKE_GENERATOR_TOOLSET: "v145,version=14.50.35717"
- CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
- .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.44.35207"
- 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_sign:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - sign-windows-v1
- - nonconcurrent
- .windows_x86_64_tags_nonconcurrent_vs2026:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2026
- - msvc-14.50
- - nonconcurrent
- .windows_x86_64_tags_nonconcurrent_vs2026_arm64:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2026
- - msvc-14.50-arm64
- - nonconcurrent
- .windows_x86_64_tags_concurrent_vs2026:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2026
- - msvc-14.50
- - concurrent
- .windows_x86_64_tags_concurrent_vs2026_android:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2026
- - vs18-android
- - msvc-14.50
- - concurrent
- .windows_x86_64_tags_nonconcurrent_vs2022_msvc14.44:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2022
- - msvc-14.44
- - nonconcurrent
- .windows_x86_64_tags_concurrent_vs2022_msvc14.44:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2022
- - msvc-14.44
- - concurrent
- .windows_x86_64_tags_concurrent_vs2022_msvc14.43:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-x86_64
- - shell
- - vs2022
- - msvc-14.43
- - 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-14.44
- - 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_vs2026:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-arm64
- - shell
- - vs2026
- - msvc-14.50
- - nonconcurrent
- .windows_arm64_tags_concurrent_vs2026:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-arm64
- - shell
- - vs2026
- - msvc-14.50
- - concurrent
- .windows_arm64_tags_concurrent_vs2022:
- tags:
- - cmake # Since this is a bare runner, pin to a project.
- - windows-arm64
- - shell
- - vs2022
- - msvc-14.44
- - 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_configure.ps1")
- - ctest -VV -S .gitlab/ci/ctest_configure.cmake
- - (& "$pwsh" -File ".gitlab/ci/pre_build.ps1")
- - ctest -VV -S .gitlab/ci/ctest_build.cmake
- - (& "$pwsh" -File ".gitlab/ci/post_build.ps1")
- - sccache --show-stats
- # Tolerate already-stopped server.
- - (sccache --stop-server)
- interruptible: true
- .cmake_package_windows:
- stage: package
- environment:
- name: sign-windows
- script:
- - . .gitlab/ci/env.ps1
- - . .gitlab/ci/signtool-env.ps1
- - . .gitlab/ci/cmake-env.ps1
- - . .gitlab/ci/wix4-env.ps1
- - . .gitlab/ci/package_windows.ps1
- interruptible: true
- .cmake_test_windows:
- stage: test
- script:
- - *before_script_windows
- - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
- - (& "$pwsh" -File ".gitlab/ci/pre_test.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
|