power_play/build.bat

99 lines
2.8 KiB
Batchfile

@echo off
setlocal
:: Description of command line arguments (disabled by default):
:: "debug" The target is intended to run in a debugger with debug info and optimizations disabled
:: "developer" The target will include all developer tooling
:: "profiling" The target will be compiled with profiling markup
:: "asan" The target will compile with address sanitizer enabled
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Verify environment
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if "%Platform%" neq "x64" (
echo ERROR: Platform is not "x64" - please run this from the MSVC x64 native tools command prompt.
exit /b 1
)
where /q clang.exe || (
echo ERROR: "clang.exe" not found.
exit /b 1
)
where /q lld-link || (
echo ERROR: "lld-link.exe" not found.
exit /b 1
)
where /q ninja.exe || (
echo ERROR: "ninja.exe" not found.
exit /b 1
)
where /q cmake || (
echo ERROR: "cmake.exe" not found.
exit /b 1
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Choose configuration from args
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Must explicitly pass disabled CMake options or else missing options are
:: assumed to be equal to the value from the last build
set cmake_options_zero=-DRTC=0 -DASAN=0 -DCRTLIB=0 -DDEBINFO=0 -DDEVELOPER=0 -DPROFILING=0 -DUNOPTIMIZED=0
set cmake_options_enabled=
echo ========================================
for %%a in (%*) do set "%%a=1"
if "%debug%" == "1" (
echo [Debug build]
set cmake_options_enabled=%cmake_options_enabled% -DRTC=1 -DCRTLIB=1 -DDEBINFO=1 -DUNOPTIMIZED=1
) else (
echo [Release build]
)
if "%developer%" == "1" (
echo [Developer build]
set cmake_options_enabled=%cmake_options_enabled% -DDEVELOPER=1
) else (
echo [User build]
)
if "%profiling%" == "1" (
echo [Profiling enabled]
set cmake_options_enabled=%cmake_options_enabled% -DPROFILING=1 -DCRTLIB=1 -DDEBINFO=1
)
if "%asan%" == "1" (
echo [Address sanitizer enabled]
set cmake_options_enabled=%cmake_options_enabled% -DASAN=1 -DCRTLIB=1 -DDEBINFO=1
)
echo ========================================
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Build
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if not exist "build" mkdir build
cmake -H. -G Ninja -B build %cmake_options_zero% %cmake_options_enabled%^
-DCMAKE_C_COMPILER:PATH="clang.exe"^
-DCMAKE_CXX_COMPILER:PATH="clang.exe"^
-DCMAKE_C_COMPILER_ID="Clang"^
-DCMAKE_CXX_COMPILER_ID="Clang"^
-DCMAKE_SYSTEM_NAME="Generic"^
-DPLATFORM_WIN32=1
if NOT %errorlevel% == 0 exit /b 1
cmake --build build
:: cmake --build build -v
exit /b %errorlevel%