Files
hakorune/tools/windows/build_nyash_llvm.ps1

45 lines
1.6 KiB
PowerShell
Raw Permalink Normal View History

#!/usr/bin/env pwsh
param(
[Parameter(Mandatory=$false)][switch]$EnsureLLVM,
[Parameter(Mandatory=$false)][switch]$SetPermanentEnv,
[Parameter(Mandatory=$false)][string]$Profile = "release",
[Parameter(Mandatory=$false)][string]$Target,
[Parameter(Mandatory=$false)][string]$App,
[Parameter(Mandatory=$false)][string]$Out = "app.exe"
)
$ErrorActionPreference = 'Stop'
function Info($m){ Write-Host "[build-nyash-llvm] $m" -ForegroundColor Cyan }
function Warn($m){ Write-Host "[build-nyash-llvm] WARN: $m" -ForegroundColor Yellow }
function Err($m){ Write-Host "[build-nyash-llvm] ERROR: $m" -ForegroundColor Red; exit 1 }
# Move to repo root for stable paths
Set-Location (Split-Path -Parent $PSCommandPath) | Out-Null
Set-Location (Resolve-Path ..\..) | Out-Null
if ($EnsureLLVM) {
$args = @()
if ($SetPermanentEnv) { $args += "-SetPermanent" }
& tools\windows\ensure-llvm18.ps1 @args
}
Info "Building nyash (features=llvm, profile=$Profile)"
$cargoArgs = @('build')
if ($Profile -eq 'release') { $cargoArgs += '--release' }
elseif ($Profile -ne 'debug') { Warn "Unknown profile '$Profile', using release"; $cargoArgs += '--release' }
$cargoArgs += @('--features','llvm')
if ($Target) { $cargoArgs += @('--target', $Target) }
& cargo @cargoArgs
if ($LASTEXITCODE -ne 0) { Err "cargo build failed (llvm). Ensure LLVM_SYS_180/181_PREFIX are set and LLVM 18 is installed." }
if ($App) {
if (-not (Test-Path $App)) { Err "App file not found: $App" }
Info "Linking EXE via LLVM AOT: $App$Out"
& tools\build_llvm.ps1 $App -Out $Out
if ($LASTEXITCODE -ne 0) { Err "link failed: $Out not produced" }
Info "OK: built $Out"
}
Info "Done"