Init foo_input_joc
build / windows (push) Has been cancelled

This commit is contained in:
2026-09-25 17:07:04 +08:00
commit ad62a914e6
127 changed files with 38545 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
# Builds foo_input_joc.dll with the SDK's own MSBuild projects.
#
# pwsh -File tools/build.ps1 # Win32 (foobar2000 1.6 and 2.x 32-bit)
# pwsh -File tools/build.ps1 -Platform x64 # x64 (foobar2000 2.x 64-bit)
#
# Release-Static is the SDK configuration that uses the static CRT, which is what
# this component requires: no runtime redistributable, and the same CRT model as
# the rendering core it links.
[CmdletBinding()]
param(
[ValidateSet('Win32', 'x64')][string]$Platform = 'Win32',
[string]$Configuration = 'Release-Static'
)
$ErrorActionPreference = 'Stop'
$projectRoot = Split-Path -Parent $PSScriptRoot
$project = Join-Path $projectRoot 'foo_input_joc.vcxproj'
function Find-MSBuild {
$vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'
if (Test-Path -LiteralPath $vswhere) {
$found = & $vswhere -latest -products * -requires Microsoft.Component.MSBuild `
-find 'MSBuild\**\Bin\MSBuild.exe' 2>$null
if ($found) { return ($found | Select-Object -First 1) }
}
foreach ($edition in @('Community', 'Professional', 'Enterprise', 'BuildTools')) {
$candidate = Join-Path $env:ProgramFiles "Microsoft Visual Studio\2022\$edition\MSBuild\Current\Bin\MSBuild.exe"
if (Test-Path -LiteralPath $candidate) { return $candidate }
}
throw 'MSBuild.exe not found; install the Visual Studio C++ workload'
}
if (-not (Test-Path -LiteralPath (Join-Path $projectRoot 'SDK\foobar2000\SDK\foobar2000-versions.h'))) {
throw 'SDK missing; run tools/setup_sdk.ps1 first'
}
$msbuild = Find-MSBuild
$logDir = Join-Path $projectRoot 'build'
New-Item -ItemType Directory -Force -Path $logDir | Out-Null
$log = Join-Path $logDir "msbuild.$Platform.log"
# Redirection (not a pipeline) keeps msbuild's own exit code in $LASTEXITCODE.
& $msbuild $project /nologo /m /v:minimal "/p:Configuration=$Configuration" "/p:Platform=$Platform" *> $log
$code = $LASTEXITCODE
Get-Content -LiteralPath $log -Tail 40
if ($code -ne 0) {
Write-Host "BUILD FAILED: msbuild exit code $code (full log: $log)" -ForegroundColor Red
exit $code
}
$dll = Join-Path $projectRoot "build\$Platform\foo_input_joc.dll"
if (-not (Test-Path -LiteralPath $dll)) {
Write-Host "BUILD FAILED: msbuild reported success but $dll is missing" -ForegroundColor Red
exit 1
}
Write-Host ("BUILD OK: {0} ({1} bytes)" -f $dll, (Get-Item -LiteralPath $dll).Length) -ForegroundColor Green