AdvChkSys/build.bat
Stan44 d5c8fd1bf8 completed thread sync [feature:thread_sync]
completed spatial queries [feature:spatial_queries]

added spatial interfaces [feature:spatial_interfaces]

added parallel processing [new-feature:parallel_processing]

[changelog: Implemented Threading Explicit synchronization and concurrent collections]
[changelog: Implemented Spatial indexing and region queries with 2D/3D support and quadtree optimization]
[changelog: Added spatial interfaces Interface-level spatial query methods with support for custom filters]
[changelog: Added parallel processing of chunks based on spatial queries and regions]
2025-05-11 20:15:37 -05:00

237 lines
8.0 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
:: AdvChkSys Build Script
:: ======================
:: Set build parameters
set "PROJECT_DIR=src\AdvChkSys"
set "BENCHMARKS_DIR=src\AdvChkSys.Benchmarks"
set "OUTPUT_DIR=build"
set "VERSION=0.1.8"
:: Create build directory if it doesn't exist
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
:: Display header
echo ╔══════════════════════════════════════════════════════════════╗
echo ║ ADVANCED CHUNK SYSTEM BUILD ║
echo ╚══════════════════════════════════════════════════════════════╝
echo.
echo Version: %VERSION%
echo Date: %DATE% %TIME%
echo.
:: Check for .NET SDK
echo Checking for .NET SDK...
dotnet --version > nul 2>&1
if %ERRORLEVEL% neq 0 (
echo Error: .NET SDK not found. Please install the .NET SDK.
exit /b 1
)
echo ✓ .NET SDK found
echo.
:: Parse command line arguments
set "BUILD_WINDOWS=true"
set "BUILD_LINUX=false"
set "BUILD_MAC=false"
set "BUILD_BENCHMARKS=false"
set "BUILD_NUGET=false"
set "BUILD_DOCS=false"
set "CONFIG=Release"
:parse_args
if "%~1"=="" goto end_parse_args
if /i "%~1"=="--all" (
set "BUILD_WINDOWS=true"
set "BUILD_LINUX=true"
set "BUILD_MAC=true"
set "BUILD_BENCHMARKS=true"
set "BUILD_NUGET=true"
set "BUILD_DOCS=true"
) else if /i "%~1"=="--windows" (
set "BUILD_WINDOWS=true"
) else if /i "%~1"=="--linux" (
set "BUILD_LINUX=true"
) else if /i "%~1"=="--mac" (
set "BUILD_MAC=true"
) else if /i "%~1"=="--benchmarks" (
set "BUILD_BENCHMARKS=true"
) else if /i "%~1"=="--nuget" (
set "BUILD_NUGET=true"
) else if /i "%~1"=="--docs" (
set "BUILD_DOCS=true"
) else if /i "%~1"=="--debug" (
set "CONFIG=Debug"
)
shift
goto parse_args
:end_parse_args
:: Display build configuration
echo Build Configuration:
echo • Configuration: %CONFIG%
echo • Windows: %BUILD_WINDOWS%
echo • Linux: %BUILD_LINUX%
echo • macOS: %BUILD_MAC%
echo • Benchmarks: %BUILD_BENCHMARKS%
echo • NuGet Package: %BUILD_NUGET%
echo • Documentation: %BUILD_DOCS%
echo.
:: Clean previous builds
echo Cleaning previous builds...
if exist "%PROJECT_DIR%\bin" rd /s /q "%PROJECT_DIR%\bin"
if exist "%PROJECT_DIR%\obj" rd /s /q "%PROJECT_DIR%\obj"
if exist "%BENCHMARKS_DIR%\bin" rd /s /q "%BENCHMARKS_DIR%\bin"
if exist "%BENCHMARKS_DIR%\obj" rd /s /q "%BENCHMARKS_DIR%\obj"
echo ✓ Clean completed
echo.
:: Restore packages
echo Restoring packages...
dotnet restore "%PROJECT_DIR%\AdvChkSys.csproj"
if %ERRORLEVEL% neq 0 (
echo ✗ Package restore failed
exit /b 1
)
echo ✓ Packages restored
echo.
:: Build the library (platform-agnostic)
echo Building AdvChkSys library...
dotnet build "%PROJECT_DIR%\AdvChkSys.csproj" -c %CONFIG% --no-restore
if %ERRORLEVEL% neq 0 (
echo ✗ Library build failed
exit /b 1
)
:: Copy library to output directories
if not exist "%OUTPUT_DIR%\lib" mkdir "%OUTPUT_DIR%\lib"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.dll" "%OUTPUT_DIR%\lib\"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.xml" "%OUTPUT_DIR%\lib\"
:: Create platform-specific directories
if "%BUILD_WINDOWS%"=="true" (
if not exist "%OUTPUT_DIR%\windows" mkdir "%OUTPUT_DIR%\windows"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.dll" "%OUTPUT_DIR%\windows\"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.xml" "%OUTPUT_DIR%\windows\"
echo ✓ Windows build completed
)
if "%BUILD_LINUX%"=="true" (
if not exist "%OUTPUT_DIR%\linux" mkdir "%OUTPUT_DIR%\linux"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.dll" "%OUTPUT_DIR%\linux\"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.xml" "%OUTPUT_DIR%\linux\"
echo ✓ Linux build completed
)
if "%BUILD_MAC%"=="true" (
if not exist "%OUTPUT_DIR%\macos" mkdir "%OUTPUT_DIR%\macos"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.dll" "%OUTPUT_DIR%\macos\"
copy "%PROJECT_DIR%\bin\%CONFIG%\netstandard2.1\AdvChkSys.xml" "%OUTPUT_DIR%\macos\"
echo ✓ macOS build completed
)
echo.
:: Build benchmarks
if "%BUILD_BENCHMARKS%"=="true" (
echo Building ChunkMark benchmarks...
:: Restore benchmark packages
dotnet restore "%BENCHMARKS_DIR%\AdvChkSys.Benchmarks.csproj"
:: Build for Windows
if "%BUILD_WINDOWS%"=="true" (
dotnet publish "%BENCHMARKS_DIR%\AdvChkSys.Benchmarks.csproj" -c %CONFIG% -r win-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
if %ERRORLEVEL% neq 0 (
echo ✗ Windows benchmark build failed
) else (
if not exist "%OUTPUT_DIR%\benchmarks\windows" mkdir "%OUTPUT_DIR%\benchmarks\windows"
copy "%BENCHMARKS_DIR%\bin\%CONFIG%\net6.0\win-x64\publish\ChunkMark.exe" "%OUTPUT_DIR%\benchmarks\windows\"
echo ✓ Windows benchmarks built
)
)
:: Build for Linux
if "%BUILD_LINUX%"=="true" (
dotnet publish "%BENCHMARKS_DIR%\AdvChkSys.Benchmarks.csproj" -c %CONFIG% -r linux-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
if %ERRORLEVEL% neq 0 (
echo ✗ Linux benchmark build failed
) else (
if not exist "%OUTPUT_DIR%\benchmarks\linux" mkdir "%OUTPUT_DIR%\benchmarks\linux"
copy "%BENCHMARKS_DIR%\bin\%CONFIG%\net6.0\linux-x64\publish\ChunkMark" "%OUTPUT_DIR%\benchmarks\linux\"
echo ✓ Linux benchmarks built
)
)
:: Build for macOS
if "%BUILD_MAC%"=="true" (
dotnet publish "%BENCHMARKS_DIR%\AdvChkSys.Benchmarks.csproj" -c %CONFIG% -r osx-x64 --self-contained true -p:PublishSingleFile=true -p:PublishTrimmed=true
if %ERRORLEVEL% neq 0 (
echo ✗ macOS benchmark build failed
) else (
if not exist "%OUTPUT_DIR%\benchmarks\macos" mkdir "%OUTPUT_DIR%\benchmarks\macos"
copy "%BENCHMARKS_DIR%\bin\%CONFIG%\net6.0\osx-x64\publish\ChunkMark" "%OUTPUT_DIR%\benchmarks\macos\"
echo ✓ macOS benchmarks built
)
)
echo.
)
:: Build NuGet package
if "%BUILD_NUGET%"=="true" (
echo Building NuGet package...
dotnet pack "%PROJECT_DIR%\AdvChkSys.csproj" -c %CONFIG% --no-build --output "%OUTPUT_DIR%\nuget"
if %ERRORLEVEL% neq 0 (
echo ✗ NuGet package creation failed
exit /b 1
)
echo ✓ NuGet package created
echo.
)
:: Build documentation
if "%BUILD_DOCS%"=="true" (
echo Building documentation...
echo Documentation generation not implemented yet.
echo.
)
:: Display summary
echo ╔══════════════════════════════════════════════════════════════╗
echo ║ BUILD SUMMARY ║
echo ╚══════════════════════════════════════════════════════════════╝
echo.
echo Build completed successfully!
echo.
echo Output files:
echo • Library: %OUTPUT_DIR%\lib\AdvChkSys.dll
if "%BUILD_WINDOWS%"=="true" (
echo • Windows: %OUTPUT_DIR%\windows\AdvChkSys.dll
if "%BUILD_BENCHMARKS%"=="true" (
echo • Windows Benchmark: %OUTPUT_DIR%\benchmarks\windows\ChunkMark.exe
)
)
if "%BUILD_LINUX%"=="true" (
echo • Linux: %OUTPUT_DIR%\linux\AdvChkSys.dll
if "%BUILD_BENCHMARKS%"=="true" (
echo • Linux Benchmark: %OUTPUT_DIR%\benchmarks\linux\ChunkMark
)
)
if "%BUILD_MAC%"=="true" (
echo • macOS: %OUTPUT_DIR%\macos\AdvChkSys.dll
if "%BUILD_BENCHMARKS%"=="true" (
echo • macOS Benchmark: %OUTPUT_DIR%\benchmarks\macos\ChunkMark
)
)
if "%BUILD_NUGET%"=="true" (
echo • NuGet: %OUTPUT_DIR%\nuget\AdvChkSys.%VERSION%.nupkg
)
echo.
echo Run the build script with --help for more options.
echo.
endlocal