Files
xxHash/appveyor.yml
Yann Collet 9c8ee42ebf added VS2019 to Appveyor CI tests
since it's no longer supported by Github Actions.

On the other hand, since Appveyor is our longest CI test,
it's necessary to keep its execution time low.

For this reason, older configs (VS2013 and VS2015) are removed.
2025-07-19 14:01:30 -07:00

148 lines
5.6 KiB
YAML

# ==============================================================================
# AppVeyor CI Configuration
# ==============================================================================
version: 1.0.{build}
max_jobs: 2
clone_depth: 2
# ==============================================================================
# Build Matrix
# ==============================================================================
environment:
matrix:
# Visual Studio 2017 build (not supported by GitHub Actions) - both Win32 and x64
- COMPILER: "visual"
ARCHS: "Win32,x64"
AVX2: "true"
APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2017"
TEST_XXHSUM: "true"
# Visual Studio 2019 build (no longer supported by GitHub Actions) - Win32 and x64
- COMPILER: "visual"
ARCHS: "Win32,x64"
AVX2: "true"
APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2019"
TEST_XXHSUM: "true"
# ARM build (no testing - cannot run on x86/x64 CI)
- COMPILER: "visual"
ARCHS: "ARM"
AVX2: "false"
TEST_XXHSUM: "false"
# ==============================================================================
# Build Scripts
# ==============================================================================
build_script:
- echo "========================================"
- echo "Building Visual Studio configurations"
- echo "========================================"
# Visual Studio build process
- ps: |
Set-Location "build/cmake"
# Split architectures and build each one
$architectures = $env:ARCHS -split ","
foreach ($arch in $architectures) {
$arch = $arch.Trim()
Write-Host "========================================"
Write-Host "Building for architecture: $arch"
Write-Host "========================================"
# Create architecture-specific build directory
$buildDir = "build_$arch"
New-Item -Path $buildDir -ItemType Directory -Force | Out-Null
Set-Location $buildDir
# Configure CMake for this architecture with fast Debug builds
cmake .. -A $arch -DXXHASH_C_FLAGS="/W4 /WX" -DCMAKE_C_FLAGS_DEBUG="/Od /Zi /MDd"
# Build Debug configuration (fast compilation, no optimizations)
Write-Host "Building Debug configuration for $arch..."
cmake --build . --config Debug
# Build Debug with SSE2 if Win32 (x64 has SSE2 by default, ARM doesn't support it)
if ($arch -eq "Win32") {
Write-Host "Building Debug configuration with SSE2 for $arch..."
cmake .. -A $arch -DXXHASH_C_FLAGS="/W4 /WX /arch:SSE2" -DCMAKE_C_FLAGS_DEBUG="/Od /Zi /MDd"
cmake --build . --config Debug
}
# Build Debug with AVX2 if enabled and supported
if ($env:AVX2 -eq "true" -and $arch -ne "ARM") {
Write-Host "Building Debug configuration with AVX2 for $arch..."
cmake .. -A $arch -DXXHASH_C_FLAGS="/W4 /WX /arch:AVX2" -DCMAKE_C_FLAGS_DEBUG="/Od /Zi /MDd"
cmake --build . --config Debug
}
# Build Release configuration
Write-Host "Building Release configuration for $arch..."
cmake --build . --config Release
# Go back to cmake directory for next architecture
Set-Location ..
}
# ==============================================================================
# Test Scripts
# ==============================================================================
test_script:
# Test xxhsum Release binaries (only for x86/x64 architectures that can run on CI)
- ps: |
if ($env:TEST_XXHSUM -eq "true") {
Set-Location "build/cmake"
# Split architectures and test each one
$architectures = $env:ARCHS -split ","
foreach ($arch in $architectures) {
$arch = $arch.Trim()
# Only test architectures that can run on CI (x86/x64)
if ($arch -eq "ARM") {
Write-Host "Skipping testing for $arch (cannot run on x86/x64 CI)"
continue
}
Write-Host "========================================"
Write-Host "Testing Visual Studio $arch"
Write-Host "========================================"
Set-Location "build_$arch"
# Test Release configuration only
Write-Host "Testing Release binary for $arch..."
Set-Location "Release"
cmd /c "xxhsum.exe -b99i0"
if ($LASTEXITCODE -ne 0) {
Write-Host "Release xxhsum.exe failed for $arch with exit code $LASTEXITCODE"
exit 1
}
Write-Host "Release binary test completed successfully for $arch"
# Go back to cmake directory for next architecture
Set-Location "../.."
}
Write-Host "------- All xxhsum testing completed successfully -------"
}
# ==============================================================================
# Artifacts
# ==============================================================================
# Currently no artifacts are collected
# Future: Consider collecting built binaries for distribution
# ==============================================================================
# Build Notes
# ==============================================================================
# 1. ARM/ARM64 builds cannot be tested on x86/x64 CI infrastructure
# 2. AppVeyor focuses on legacy Visual Studio versions (2013, 2015, 2017)
# 3. Modern Visual Studio versions (2019, 2022) are tested on GitHub Actions