power_play/build.bat

70 lines
2.3 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
cd /D "%~dp0"
if not exist build mkdir build
pushd build
for %%a in (%*) do set "%%a=1"
set program_build_cmd=meta.exe %*
set meta_build_warnings=-W4 -WX -we4668 -wd4244 -wd4201 -wd4324 -wd4100 -wd4101 -wd4189 -wd4200 -wd4702 -wd4305
set meta_build_cmd=cl.exe ../src/meta/meta.c -Od -Z7 -nologo -diagnostics:column %meta_build_warnings% -link -DEBUG:FULL -INCREMENTAL:NO
set meta_rebuild_code=1317212284
if "%--force_meta_build%"=="1" (
if exist meta.exe del meta.exe
)
::- Try to activate Visual Studio if devenv not detected
:: Taken from wcap: https://github.com/mmozeiko/wcap/blob/aa25ccb806d7a6e1c0bfdcca863aabcd8e9badfa/build.cmd#L21-L29
if "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (
set HOST_ARCH=x64
) else if "%PROCESSOR_ARCHITECTURE%" equ "ARM64" (
set HOST_ARCH=arm64
)
where /Q cl.exe || (
echo **************************************************************************
echo cl.exe not found in the current environment, attempting to locate Visual
echo Studio installation. Run this script from a devenv-equipped environment
echo to remove this notice and speed up build time.
echo.
set __VSCMD_ARG_NO_LOGO=1
for /f "tokens=*" %%i in ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop -property installationPath') do set VS=%%i
if "!VS!" equ "" (
echo ERROR: Visual Studio installation not found
exit /b 1
)
echo Visual Studio installation located, activating development environment...
call "!VS!\Common7\Tools\VsDevCmd.bat" -arch=%HOST_ARCH% -host_arch=%HOST_ARCH% -startdir=none -no_logo || exit /b 1
echo Visual studio development environment activated
echo **************************************************************************
echo.
)
::- Build metaprogram
:meta_build
if not exist meta.exe (
echo Metaprogram dirty since last run, rebuilding...
echo ======== Meta Build ========
%meta_build_cmd%
set "rc=!errorlevel!"
if !rc! NEQ 0 (
if exist meta.exe del meta.exe
exit /b !rc!
)
)
::- Run metaprogram
if not "%--no_meta_run%"=="1" (
echo =========== Build ==========
%program_build_cmd%
set "rc=!errorlevel!"
if !rc! NEQ 0 (
if !rc! EQU %meta_rebuild_code% (
del meta.exe
goto meta_build
)
exit /b !rc!
)
)