forked from Cyan4973/xxHash
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathappveyor.yml
More file actions
147 lines (118 loc) · 5.57 KB
/
appveyor.yml
File metadata and controls
147 lines (118 loc) · 5.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# ==============================================================================
# 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