@@ -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