backend-infra-engineer: Release v0.3.1 snapshot
This commit is contained in:
164
scripts/build-windows.bat
Normal file
164
scripts/build-windows.bat
Normal file
@@ -0,0 +1,164 @@
|
||||
@echo off
|
||||
REM YAZE Windows Build Script (Batch Version)
|
||||
REM This script builds the YAZE project on Windows using MSBuild
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
REM Parse command line arguments
|
||||
set BUILD_CONFIG=Release
|
||||
set BUILD_PLATFORM=x64
|
||||
set CLEAN_BUILD=0
|
||||
set VERBOSE=0
|
||||
|
||||
:parse_args
|
||||
if "%~1"=="" goto :args_done
|
||||
if /i "%~1"=="Debug" set BUILD_CONFIG=Debug
|
||||
if /i "%~1"=="Release" set BUILD_CONFIG=Release
|
||||
if /i "%~1"=="RelWithDebInfo" set BUILD_CONFIG=RelWithDebInfo
|
||||
if /i "%~1"=="MinSizeRel" set BUILD_CONFIG=MinSizeRel
|
||||
if /i "%~1"=="x64" set BUILD_PLATFORM=x64
|
||||
if /i "%~1"=="x86" set BUILD_PLATFORM=x86
|
||||
if /i "%~1"=="ARM64" set BUILD_PLATFORM=ARM64
|
||||
if /i "%~1"=="clean" set CLEAN_BUILD=1
|
||||
if /i "%~1"=="verbose" set VERBOSE=1
|
||||
shift
|
||||
goto :parse_args
|
||||
|
||||
:args_done
|
||||
|
||||
echo ========================================
|
||||
echo YAZE Windows Build Script
|
||||
echo ========================================
|
||||
|
||||
REM Check if we're in the right directory
|
||||
if not exist "YAZE.sln" (
|
||||
echo ERROR: YAZE.sln not found. Please run this script from the project root directory.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo ✓ YAZE.sln found
|
||||
|
||||
REM Check for MSBuild
|
||||
where msbuild >nul 2>&1
|
||||
if %errorlevel% neq 0 (
|
||||
echo ERROR: MSBuild not found. Please install Visual Studio 2022 or later.
|
||||
echo Make sure to install the C++ development workload.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo ✓ MSBuild found
|
||||
|
||||
REM Check for vcpkg
|
||||
if not exist "vcpkg.json" (
|
||||
echo WARNING: vcpkg.json not found. vcpkg integration may not work properly.
|
||||
)
|
||||
|
||||
echo Build Configuration: %BUILD_CONFIG%
|
||||
echo Build Platform: %BUILD_PLATFORM%
|
||||
|
||||
REM Create build directories
|
||||
echo Creating build directories...
|
||||
if not exist "build" mkdir build
|
||||
if not exist "build\bin" mkdir build\bin
|
||||
if not exist "build\obj" mkdir build\obj
|
||||
|
||||
REM Clean build if requested
|
||||
if %CLEAN_BUILD%==1 (
|
||||
echo Cleaning build directories...
|
||||
if exist "build\bin" rmdir /s /q "build\bin" 2>nul
|
||||
if exist "build\obj" rmdir /s /q "build\obj" 2>nul
|
||||
if not exist "build\bin" mkdir build\bin
|
||||
if not exist "build\obj" mkdir build\obj
|
||||
echo ✓ Build directories cleaned
|
||||
)
|
||||
|
||||
REM Generate yaze_config.h if it doesn't exist
|
||||
if not exist "yaze_config.h" (
|
||||
echo Generating yaze_config.h...
|
||||
if exist "src\yaze_config.h.in" (
|
||||
copy "src\yaze_config.h.in" "yaze_config.h" >nul
|
||||
powershell -Command "(Get-Content 'yaze_config.h') -replace '@yaze_VERSION_MAJOR@', '0' -replace '@yaze_VERSION_MINOR@', '3' -replace '@yaze_VERSION_PATCH@', '1' | Set-Content 'yaze_config.h'"
|
||||
echo ✓ Generated yaze_config.h
|
||||
) else (
|
||||
echo WARNING: yaze_config.h.in not found, creating basic config
|
||||
echo // yaze config file > yaze_config.h
|
||||
echo #define YAZE_VERSION_MAJOR 0 >> yaze_config.h
|
||||
echo #define YAZE_VERSION_MINOR 3 >> yaze_config.h
|
||||
echo #define YAZE_VERSION_PATCH 1 >> yaze_config.h
|
||||
)
|
||||
)
|
||||
|
||||
REM Build using MSBuild
|
||||
echo Building with MSBuild...
|
||||
|
||||
set MSBUILD_ARGS=YAZE.sln /p:Configuration=%BUILD_CONFIG% /p:Platform=%BUILD_PLATFORM% /p:VcpkgEnabled=true /p:VcpkgManifestInstall=true /m
|
||||
|
||||
if %VERBOSE%==1 (
|
||||
set MSBUILD_ARGS=%MSBUILD_ARGS% /verbosity:detailed
|
||||
) else (
|
||||
set MSBUILD_ARGS=%MSBUILD_ARGS% /verbosity:minimal
|
||||
)
|
||||
|
||||
echo Command: msbuild %MSBUILD_ARGS%
|
||||
|
||||
msbuild %MSBUILD_ARGS%
|
||||
|
||||
if %errorlevel% neq 0 (
|
||||
echo ERROR: Build failed with exit code %errorlevel%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo ✓ Build completed successfully
|
||||
|
||||
REM Verify executable was created
|
||||
set EXE_PATH=build\bin\%BUILD_CONFIG%\yaze.exe
|
||||
if not exist "%EXE_PATH%" (
|
||||
echo ERROR: Executable not found at expected path: %EXE_PATH%
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo ✓ Executable created: %EXE_PATH%
|
||||
|
||||
REM Test that the executable runs (basic test)
|
||||
echo Testing executable startup...
|
||||
"%EXE_PATH%" --help >nul 2>&1
|
||||
set EXIT_CODE=%errorlevel%
|
||||
|
||||
REM Check if it's the test main or app main
|
||||
"%EXE_PATH%" --help 2>&1 | findstr /i "Google Test" >nul
|
||||
if %errorlevel% equ 0 (
|
||||
echo ERROR: Executable is running test main instead of app main!
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo ✓ Executable runs correctly (exit code: %EXIT_CODE%)
|
||||
|
||||
REM Display file info
|
||||
for %%A in ("%EXE_PATH%") do set FILE_SIZE=%%~zA
|
||||
set /a FILE_SIZE_MB=%FILE_SIZE% / 1024 / 1024
|
||||
echo Executable size: %FILE_SIZE_MB% MB
|
||||
|
||||
echo ========================================
|
||||
echo ✓ YAZE Windows build completed successfully!
|
||||
echo ========================================
|
||||
echo.
|
||||
echo Build Configuration: %BUILD_CONFIG%
|
||||
echo Build Platform: %BUILD_PLATFORM%
|
||||
echo Executable: %EXE_PATH%
|
||||
echo.
|
||||
echo To run YAZE:
|
||||
echo %EXE_PATH%
|
||||
echo.
|
||||
echo To build other configurations:
|
||||
echo %~nx0 Debug x64
|
||||
echo %~nx0 Release x86
|
||||
echo %~nx0 RelWithDebInfo ARM64
|
||||
echo %~nx0 clean
|
||||
echo.
|
||||
|
||||
pause
|
||||
Reference in New Issue
Block a user