mirror of
https://github.com/Cyan4973/xxHash.git
synced 2026-01-19 04:52:10 +00:00
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.
148 lines
5.6 KiB
YAML
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
|