248 lines
9.0 KiB
Batchfile
248 lines
9.0 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
:: AdvChkSys Build Script
|
|
:: ======================
|
|
|
|
:: Set colors for console output
|
|
set "RESET=[0m"
|
|
set "BRIGHT=[1m"
|
|
set "RED=[91m"
|
|
set "GREEN=[92m"
|
|
set "YELLOW=[93m"
|
|
set "BLUE=[94m"
|
|
set "MAGENTA=[95m"
|
|
set "CYAN=[96m"
|
|
set "WHITE=[97m"
|
|
|
|
:: 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 %BRIGHT%%CYAN%╔══════════════════════════════════════════════════════════════╗%RESET%
|
|
echo %BRIGHT%%CYAN%║ ADVANCED CHUNK SYSTEM BUILD ║%RESET%
|
|
echo %BRIGHT%%CYAN%╚══════════════════════════════════════════════════════════════╝%RESET%
|
|
echo.
|
|
echo %BRIGHT%%WHITE%Version: %VERSION%%RESET%
|
|
echo %BRIGHT%%WHITE%Date: %DATE% %TIME%%RESET%
|
|
echo.
|
|
|
|
:: Check for .NET SDK
|
|
echo %YELLOW%Checking for .NET SDK...%RESET%
|
|
dotnet --version > nul 2>&1
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo %RED%Error: .NET SDK not found. Please install the .NET SDK.%RESET%
|
|
exit /b 1
|
|
)
|
|
echo %GREEN%✓ .NET SDK found%RESET%
|
|
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 %BRIGHT%%MAGENTA%Build Configuration:%RESET%
|
|
echo %MAGENTA%• Configuration: %CONFIG%%RESET%
|
|
echo %MAGENTA%• Windows: %BUILD_WINDOWS%%RESET%
|
|
echo %MAGENTA%• Linux: %BUILD_LINUX%%RESET%
|
|
echo %MAGENTA%• macOS: %BUILD_MAC%%RESET%
|
|
echo %MAGENTA%• Benchmarks: %BUILD_BENCHMARKS%%RESET%
|
|
echo %MAGENTA%• NuGet Package: %BUILD_NUGET%%RESET%
|
|
echo %MAGENTA%• Documentation: %BUILD_DOCS%%RESET%
|
|
echo.
|
|
|
|
:: Clean previous builds
|
|
echo %YELLOW%Cleaning previous builds...%RESET%
|
|
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 %GREEN%✓ Clean completed%RESET%
|
|
echo.
|
|
|
|
:: Restore packages
|
|
echo %YELLOW%Restoring packages...%RESET%
|
|
dotnet restore "%PROJECT_DIR%\AdvChkSys.csproj"
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo %RED%✗ Package restore failed%RESET%
|
|
exit /b 1
|
|
)
|
|
echo %GREEN%✓ Packages restored%RESET%
|
|
echo.
|
|
|
|
:: Build the library (platform-agnostic)
|
|
echo %BRIGHT%%BLUE%Building AdvChkSys library...%RESET%
|
|
dotnet build "%PROJECT_DIR%\AdvChkSys.csproj" -c %CONFIG% --no-restore
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo %RED%✗ Library build failed%RESET%
|
|
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 %GREEN%✓ Windows build completed%RESET%
|
|
)
|
|
|
|
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 %GREEN%✓ Linux build completed%RESET%
|
|
)
|
|
|
|
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 %GREEN%✓ macOS build completed%RESET%
|
|
)
|
|
echo.
|
|
|
|
:: Build benchmarks
|
|
if "%BUILD_BENCHMARKS%"=="true" (
|
|
echo %BRIGHT%%BLUE%Building ChunkMark benchmarks...%RESET%
|
|
|
|
:: 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 %RED%✗ Windows benchmark build failed%RESET%
|
|
) 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 %GREEN%✓ Windows benchmarks built%RESET%
|
|
)
|
|
)
|
|
|
|
:: 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 %RED%✗ Linux benchmark build failed%RESET%
|
|
) 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 %GREEN%✓ Linux benchmarks built%RESET%
|
|
)
|
|
)
|
|
|
|
:: 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 %RED%✗ macOS benchmark build failed%RESET%
|
|
) 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 %GREEN%✓ macOS benchmarks built%RESET%
|
|
)
|
|
)
|
|
echo.
|
|
)
|
|
|
|
:: Build NuGet package
|
|
if "%BUILD_NUGET%"=="true" (
|
|
echo %BRIGHT%%BLUE%Building NuGet package...%RESET%
|
|
dotnet pack "%PROJECT_DIR%\AdvChkSys.csproj" -c %CONFIG% --no-build --output "%OUTPUT_DIR%\nuget"
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo %RED%✗ NuGet package creation failed%RESET%
|
|
exit /b 1
|
|
)
|
|
echo %GREEN%✓ NuGet package created%RESET%
|
|
echo.
|
|
)
|
|
|
|
:: Build documentation
|
|
if "%BUILD_DOCS%"=="true" (
|
|
echo %BRIGHT%%BLUE%Building documentation...%RESET%
|
|
echo %YELLOW%Documentation generation not implemented yet.%RESET%
|
|
echo.
|
|
)
|
|
|
|
:: Display summary
|
|
echo %BRIGHT%%CYAN%╔══════════════════════════════════════════════════════════════╗%RESET%
|
|
echo %BRIGHT%%CYAN%║ BUILD SUMMARY ║%RESET%
|
|
echo %BRIGHT%%CYAN%╚══════════════════════════════════════════════════════════════╝%RESET%
|
|
echo.
|
|
echo %BRIGHT%%GREEN%Build completed successfully!%RESET%
|
|
echo.
|
|
echo %BRIGHT%%WHITE%Output files:%RESET%
|
|
echo %WHITE%• Library: %OUTPUT_DIR%\lib\AdvChkSys.dll%RESET%
|
|
|
|
if "%BUILD_WINDOWS%"=="true" (
|
|
echo %WHITE%• Windows: %OUTPUT_DIR%\windows\AdvChkSys.dll%RESET%
|
|
if "%BUILD_BENCHMARKS%"=="true" (
|
|
echo %WHITE%• Windows Benchmark: %OUTPUT_DIR%\benchmarks\windows\ChunkMark.exe%RESET%
|
|
)
|
|
)
|
|
if "%BUILD_LINUX%"=="true" (
|
|
echo %WHITE%• Linux: %OUTPUT_DIR%\linux\AdvChkSys.dll%RESET%
|
|
if "%BUILD_BENCHMARKS%"=="true" (
|
|
echo %WHITE%• Linux Benchmark: %OUTPUT_DIR%\benchmarks\linux\ChunkMark%RESET%
|
|
)
|
|
)
|
|
if "%BUILD_MAC%"=="true" (
|
|
echo %WHITE%• macOS: %OUTPUT_DIR%\macos\AdvChkSys.dll%RESET%
|
|
if "%BUILD_BENCHMARKS%"=="true" (
|
|
echo %WHITE%• macOS Benchmark: %OUTPUT_DIR%\benchmarks\macos\ChunkMark%RESET%
|
|
)
|
|
)
|
|
if "%BUILD_NUGET%"=="true" (
|
|
echo %WHITE%• NuGet: %OUTPUT_DIR%\nuget\AdvChkSys.%VERSION%.nupkg%RESET%
|
|
)
|
|
echo.
|
|
echo %BRIGHT%%CYAN%Run the build script with --help for more options.%RESET%
|
|
echo.
|
|
|
|
endlocal |