https://github.com/Kitware/CMake
Raw File
Tip revision: 2a0c105cf08190284b288057c693eeddef5066fc authored by Brad King on 02 February 2023, 18:20:23 UTC
CMake 3.26.0-rc1
Tip revision: 2a0c105
os-windows.yml
# 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.34.31933"

.windows_vcvarsall_vs2022_x86:
    variables:
        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
        VCVARSPLATFORM: "x86"
        VCVARSVERSION: "14.34.31933"

.windows_vcvarsall_vs2022_x64_arm64:
    variables:
        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
        VCVARSPLATFORM: "x64_arm64"
        VCVARSVERSION: "14.34.31933"

.windows_arm64_vcvarsall_vs2022:
    variables:
        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
        VCVARSPLATFORM: "arm64"
        VCVARSVERSION: "14.34.31933"

.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.34.31933"
        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_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_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.34.31933"
        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.34
        - 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.34-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.34
        - 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.34
        - nonconcurrent

.windows_arm64_tags_concurrent_vs2022:
    tags:
        - cmake # Since this is a bare runner, pin to a project.
        - windows-arm64
        - shell
        - vs2022
        - msvc-19.34
        - 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"
    - . .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

.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_package_windows:
    stage: package

    script:
        - *before_script_windows
        - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
        - cd build
        - cpack -G ZIP
        - cpack -G WIX

    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:
        - . .gitlab/ci/env.ps1
        - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake

    interruptible: true

.cmake_test_windows_nmake:
    stage: test-ext

    script:
        - . .gitlab/ci/env.ps1
        - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1
        - build/install/bin/ctest --output-on-failure -V -S .gitlab/ci/ctest_standalone.cmake

    interruptible: true

.cmake_test_windows_jom:
    stage: test-ext

    script:
        - . .gitlab/ci/env.ps1
        - 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_standalone.cmake

    interruptible: true

.cmake_test_windows_borland:
    stage: test-ext

    script:
        - . .gitlab/ci/env.ps1
        - 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_standalone.cmake

    interruptible: true

.cmake_test_windows_msvc:
    stage: test-ext

    script:
        - . .gitlab/ci/env.ps1
        - 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_standalone.cmake

    interruptible: true

.cmake_test_windows_openwatcom:
    stage: test-ext

    script:
        - . .gitlab/ci/env.ps1
        - 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_standalone.cmake

    interruptible: true
back to top