Merge branch 'feature/build-script-conversion-ps' into develop

This commit is contained in:
t3hn3rd committed 2026-02-24 21:52:51 +00:00
commit eda3669ab2
3 files changed
+89 -81

No files matched your search

-79
View File
@@ -1,79 +0,0 @@
@echo off
setlocal
set ROOT=%~dp0
set SRC=%ROOT%src
set BIN=%ROOT%bin
set LIB=%ROOT%lib
set FPC=C:\Lazarus\fpc\3.2.2\bin\x86_64-win64\fpc.exe
set TESTFLAGS=
set DO_CLEAN=0
set DO_RUN=0
:parse_args
if "%1"=="" goto args_done
if "%1"=="test" set TESTFLAGS=-dRUN_TESTS
if "%1"=="clean" set DO_CLEAN=1
if "%1"=="run" set DO_RUN=1
if "%1"=="help" (
echo Usage: build.bat [options]
echo Options:
echo test - Build with tests enabled
echo clean - Clean build outputs
echo run - Run the built executable after building
echo help - Show this help message
exit /b 0
)
shift
goto parse_args
:args_done
if %DO_CLEAN%==1 (
echo Cleaning build outputs...
if exist "%BIN%" rd /s /q "%BIN%"
if exist "%LIB%" rd /s /q "%LIB%"
echo Clean complete.
if "%TESTFLAGS%"=="" if %DO_RUN%==0 exit /b 0
)
if not exist "%BIN%" mkdir "%BIN%"
if not exist "%LIB%" mkdir "%LIB%"
REM ── Lint ────────────────────────────────────────────────────────────
powershell -NoProfile -ExecutionPolicy Bypass -File "%ROOT%lint.ps1" -SrcRoot "%SRC%"
if %ERRORLEVEL% NEQ 0 exit /b 1
REM ── Build ────────────────────────────────────────────────────────────
"%FPC%" ^
%TESTFLAGS% ^
-FE"%BIN%" ^
-FU"%LIB%" ^
-Fu"%SRC%\emu" ^
-Fu"%SRC%\wasm" ^
-Fu"%SRC%\wasm\parser" ^
-Fu"%SRC%\wasm\parser\sections" ^
-Fu"%SRC%\wasm\test" ^
-Fu"%SRC%\wasm\test\opcodes" ^
-Fu"%SRC%\wasm\test\parsers" ^
-Fu"%SRC%\wasm\test\binaries" ^
-Fu"%SRC%\wasm\test\infra" ^
-Fu"%SRC%\wasm\types" ^
-Fu"%SRC%\wasm\vm" ^
-Fu"%SRC%\wasm\vm\opcodes" ^
-gw3 ^
-o"%BIN%\WASURO.exe" ^
"%SRC%\project\WASURO.lpr"
if %ERRORLEVEL% NEQ 0 (
echo Build failed with error code %ERRORLEVEL%
exit /b %ERRORLEVEL%
)
echo Build succeeded: %BIN%\WASURO.exe
REM ── Run ────────────────────────────────────────────────────────────
if %DO_RUN%==1 (
echo Running WASURO...
"%BIN%\WASURO.exe"
)
+88
View File
@@ -0,0 +1,88 @@
# build.ps1 — Build script for the WASURO project
param(
[switch]$Test,
[switch]$Clean,
[switch]$Run,
[switch]$Help
)
# Also accept positional string args (e.g. .\build.ps1 clean test run)
foreach ($a in $args) {
switch ($a.ToLower()) {
'test' { $Test = $true }
'clean' { $Clean = $true }
'run' { $Run = $true }
'help' { $Help = $true }
}
}
if ($Help) {
Write-Host 'Usage: .\build.ps1 [options]'
Write-Host 'Options:'
Write-Host ' test - Build with tests enabled'
Write-Host ' clean - Clean build outputs'
Write-Host ' run - Run the built executable after building'
Write-Host ' help - Show this help message'
exit 0
}
$Root = $PSScriptRoot
$Src = Join-Path $Root 'src'
$Bin = Join-Path $Root 'bin'
$Lib = Join-Path $Root 'lib'
$FPC = 'C:\Lazarus\fpc\3.2.2\bin\x86_64-win64\fpc.exe'
# ── Clean ────────────────────────────────────────────────────────────
if ($Clean) {
Write-Host 'Cleaning build outputs...'
if (Test-Path $Bin) { Remove-Item $Bin -Recurse -Force }
if (Test-Path $Lib) { Remove-Item $Lib -Recurse -Force }
Write-Host 'Clean complete.'
if (-not $Test -and -not $Run) { exit 0 }
}
if (-not (Test-Path $Bin)) { New-Item $Bin -ItemType Directory | Out-Null }
if (-not (Test-Path $Lib)) { New-Item $Lib -ItemType Directory | Out-Null }
# ── Lint ─────────────────────────────────────────────────────────────
& (Join-Path $Root 'lint.ps1') -SrcRoot $Src
if ($LASTEXITCODE -ne 0) { exit 1 }
# ── Build ────────────────────────────────────────────────────────────
$TestFlags = @()
if ($Test) { $TestFlags = @('-dRUN_TESTS') }
$fpcArgs = @(
$TestFlags
"-FE$Bin"
"-FU$Lib"
"-Fu$Src\emu"
"-Fu$Src\wasm"
"-Fu$Src\wasm\parser"
"-Fu$Src\wasm\parser\sections"
"-Fu$Src\wasm\test"
"-Fu$Src\wasm\test\opcodes"
"-Fu$Src\wasm\test\parsers"
"-Fu$Src\wasm\test\binaries"
"-Fu$Src\wasm\test\infra"
"-Fu$Src\wasm\types"
"-Fu$Src\wasm\vm"
"-Fu$Src\wasm\vm\opcodes"
'-gw3'
"-o$Bin\WASURO.exe"
"$Src\project\WASURO.lpr"
)
& $FPC @fpcArgs
if ($LASTEXITCODE -ne 0) {
Write-Host "Build failed with error code $LASTEXITCODE"
exit $LASTEXITCODE
}
Write-Host "Build succeeded: $Bin\WASURO.exe"
# ── Run ──────────────────────────────────────────────────────────────
if ($Run) {
Write-Host 'Running WASURO...'
& "$Bin\WASURO.exe"
}
+1 -2
View File
@@ -1,5 +1,5 @@
# lint.ps1 — Static lint rules for the WASURO project # lint.ps1 — Static lint rules for the WASURO project
# Called by build.bat before compilation. Exit 1 on any violation. # Called by build.ps1 before compilation. Exit 1 on any violation.
param( param(
[string]$SrcRoot = (Join-Path $PSScriptRoot 'src') [string]$SrcRoot = (Join-Path $PSScriptRoot 'src')
) )
@@ -43,6 +43,5 @@ if ($ruleHits -gt 0) {
} }
# ── Add more rules here ───────────────────────────────────────────── # ── Add more rules here ─────────────────────────────────────────────
if ($fail) { exit 1 } if ($fail) { exit 1 }
Write-Host 'Lint passed.' Write-Host 'Lint passed.'