| # ============================================================================== |
| # 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 |