Skip to content

Commit 79ada9c

Browse files
committed
fix: use robust LLVM detection and installation on Windows CI
1 parent e7a7b21 commit 79ada9c

1 file changed

Lines changed: 36 additions & 6 deletions

File tree

.github/workflows/build.yml

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,45 @@ jobs:
5353
if: matrix.os == 'windows-latest'
5454
shell: pwsh
5555
run: |
56-
$llvmBin = "C:\Program Files\LLVM\bin"
57-
$llvmConfig = "$llvmBin\llvm-config.exe"
58-
if (Test-Path $llvmConfig) {
56+
# Install LLVM via Chocolatey if not present
57+
if (-not (Get-Command llvm-config -ErrorAction SilentlyContinue)) {
58+
Write-Host "LLVM not found. Installing via Chocolatey..."
59+
choco install llvm -y --version 17.0.6 # Pin version for stability
60+
}
61+
62+
# Robust detection logic
63+
$llvmConfig = Get-Command llvm-config -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Source
64+
if (-not $llvmConfig) {
65+
$commonPaths = @(
66+
"C:\Program Files\LLVM\bin\llvm-config.exe",
67+
"C:\Program Files (x86)\LLVM\bin\llvm-config.exe",
68+
"C:\ProgramData\chocolatey\bin\llvm-config.exe",
69+
"C:\ProgramData\chocolatey\lib\llvm\tools\llvm\bin\llvm-config.exe"
70+
)
71+
foreach ($path in $commonPaths) {
72+
if (Test-Path $path) {
73+
$llvmConfig = $path
74+
break
75+
}
76+
}
77+
}
78+
79+
if ($llvmConfig) {
80+
Write-Host "Found llvm-config at: $llvmConfig"
81+
$llvmBin = Split-Path -Parent $llvmConfig
82+
$llvmRoot = Split-Path -Parent $llvmBin
5983
$cmakeDir = & $llvmConfig --cmakedir
60-
Write-Host "LLVM cmake dir: $cmakeDir"
84+
85+
Write-Host "LLVM Root: $llvmRoot"
86+
Write-Host "LLVM CMake dir: $cmakeDir"
87+
6188
echo "LLVM_DIR=$cmakeDir" >> $env:GITHUB_ENV
62-
echo "CMAKE_PREFIX_PATH=C:\Program Files\LLVM" >> $env:GITHUB_ENV
89+
echo "CMAKE_PREFIX_PATH=$llvmRoot" >> $env:GITHUB_ENV
90+
91+
# Add bin to path for subsequent steps if needed
92+
echo "$llvmBin" >> $env:GITHUB_PATH
6393
} else {
64-
Write-Error "llvm-config.exe not found at $llvmConfig — LLVM is not installed!"
94+
Write-Error "LLVM installation failed or llvm-config.exe not found in common paths!"
6595
exit 1
6696
}
6797

0 commit comments

Comments
 (0)