70 lines
2.3 KiB
Batchfile
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!
|
|
)
|
|
)
|