Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Add AppVeyor testing support for C++20 and VS2022 #1119

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
75 changes: 67 additions & 8 deletions .appveyor.yml
Expand Up @@ -9,10 +9,11 @@ configuration:
- Release

image:
- Visual Studio 2013
- Visual Studio 2015
- Visual Studio 2017
- Visual Studio 2022
- Visual Studio 2019
- Visual Studio 2017
- Visual Studio 2015
- Visual Studio 2013

environment:
matrix:
Expand All @@ -21,6 +22,7 @@ environment:
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_20=ON

matrix:
exclude:
Expand All @@ -30,6 +32,8 @@ matrix:
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON
- image: Visual Studio 2013
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON
- image: Visual Studio 2013
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_20=ON
- image: Visual Studio 2013
configuration: Debug
- image: Visual Studio 2015
Expand All @@ -38,6 +42,8 @@ matrix:
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON
- image: Visual Studio 2015
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON
- image: Visual Studio 2015
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_20=ON
- image: Visual Studio 2015
platform: x86
- image: Visual Studio 2015
Expand All @@ -46,18 +52,39 @@ matrix:
platform: x86
- image: Visual Studio 2017
configuration: Debug
- image: Visual Studio 2017
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_20=ON
- image: Visual Studio 2019
platform: x64
- image: Visual Studio 2019
GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_20=ON
- image: Visual Studio 2022
platform: x86

branches:
only:
- master

before_build:
- ps: |
$ErrorActionPreference = "Stop"

mkdir build
cd build

function Invoke-VcVars {
param(
[String] $varsScriptName
)
$cmdLine = """$varsScriptName"" $args & set"
& $Env:SystemRoot\system32\cmd.exe /c $cmdLine |
select-string '^([^=]*)=(.*)$' | foreach-object {
$varName = $_.Matches[0].Groups[1].Value
$varValue = $_.Matches[0].Groups[2].Value
set-item Env:$varName $varValue
}
}

if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2013") {
$env:generator="Visual Studio 12 2013"
}
Expand All @@ -68,25 +95,57 @@ before_build:
$env:generator="Visual Studio 15 2017"
}
if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2019") {
$env:generator="Visual Studio 16 2019"
$env:generator="Ninja"
if ($env:PLATFORM -eq "x64") {
Invoke-VcVars "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
} else {
Invoke-VcVars "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
}
}
if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2022") {
$env:generator="Ninja"
if ($env:PLATFORM -eq "x64") {
Invoke-VcVars "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
} else {
Invoke-VcVars "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat"
}
}
if ($env:PLATFORM -eq "x64") {
$env:generator="$env:generator Win64"
if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2022" -or "$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2019") {
echo "Building with Ninja"
} else {
$env:generator="$env:generator Win64"
}
}
echo generator="$env:generator"
cmake .. -G "$env:generator" -DCMAKE_INSTALL_PREFIX="$env:APPVEYOR_BUILD_FOLDER/install" -DGLM_QUIET=ON -DGLM_TEST_ENABLE=ON "$env:GLM_ARGUMENTS"

build_script:
- cmake --build . --parallel --config %CONFIGURATION% -- /m /v:minimal
- cmake --build . --target install --parallel --config %CONFIGURATION% -- /m /v:minimal
- ps: |
$ErrorActionPreference = "Stop"

if ($env:generator -eq "Ninja") {
cmake --build . --parallel
cmake --build . --target install --parallel
} else {
cmake --build . --parallel --config $env:CONFIGURATION -- /m /v:minimal
cmake --build . --target install --parallel --config $env:CONFIGURATION -- /m /v:minimal
}

test_script:
- ctest --parallel 4 --verbose -C %CONFIGURATION%
- cd ..
- ps: |
$ErrorActionPreference = "Stop"

mkdir build_test_cmake
cd build_test_cmake

cmake ..\test\cmake\ -G "$env:generator" -DCMAKE_PREFIX_PATH="$env:APPVEYOR_BUILD_FOLDER/install"
- cmake --build . --parallel --config %CONFIGURATION% -- /m /v:minimal
if ($env:generator -eq "Ninja") {
cmake --build . --parallel
} else {
cmake --build . --parallel --config $env:CONFIGURATION -- /m /v:minimal
}

deploy: off