blob: 84446fa5bd4d811c06781f588565ea8fcecc8514 [file] [edit]
# ==============================================================================
# AppVeyor CI Configuration
# ==============================================================================
version: 1.0.{build}
max_jobs: 2
clone_depth: 2
# ==============================================================================
# Build Matrix
# ==============================================================================
environment:
matrix:
# Legacy Visual Studio 2013 build (not supported by GitHub Actions)
- COMPILER: "visual"
ARCHITECTURES: "Win32,x64"
AVX2_ENABLED: "false"
APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2013"
TEST_XXHSUM: "true"
# Legacy Visual Studio 2015 build (not supported by GitHub Actions)
- COMPILER: "visual"
ARCHITECTURES: "Win32,x64"
AVX2_ENABLED: "true"
APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2015"
TEST_XXHSUM: "true"
# Visual Studio 2017 build (not supported by GitHub Actions) - both Win32 and x64
- COMPILER: "visual"
ARCHITECTURES: "Win32,x64"
AVX2_ENABLED: "true"
APPVEYOR_BUILD_WORKER_IMAGE: "Visual Studio 2017"
TEST_XXHSUM: "true"
# ARM build (no testing - cannot run on x86/x64 CI)
- COMPILER: "visual"
ARCHITECTURES: "ARM"
AVX2_ENABLED: "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:ARCHITECTURES -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_ENABLED -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:ARCHITECTURES -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