@echo off setlocal cd /d "%~dp0" if /i "%~1"=="clean" ( if exist out rmdir /s /q out exit /b 0 ) where cl.exe >nul 2>nul || ( echo build.bat: run from a Visual Studio Developer Command Prompt. exit /b 1 ) if not exist out\obj mkdir out\obj del /q out\obj\*.obj out\build.exe >nul 2>nul set "CFLAGS=/nologo /W3 /wd4101 /wd4267 /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DVER_PRODUCTBUILD=0 /I." cl %CFLAGS% /TC /std:c17 /Foout\obj\ /c ^ build.c builddb.c buildexe.c buildmak.c buildscn.c ^ buildsrc.c buildutl.c buildinc.c buildglobals.c watch.c || exit /b 1 cl %CFLAGS% /TP /std:c++17 /Foout\obj\buildscr.obj /c buildscr.cpp || exit /b 1 link /nologo /out:out\build.exe ^ out\obj\build.obj out\obj\builddb.obj out\obj\buildexe.obj ^ out\obj\buildmak.obj out\obj\buildscn.obj out\obj\buildsrc.obj ^ out\obj\buildutl.obj out\obj\buildinc.obj out\obj\buildglobals.obj ^ out\obj\buildscr.obj out\obj\watch.obj ^ ole32.lib user32.lib uuid.lib oleaut32.lib shell32.lib || exit /b 1 echo Built %CD%\out\build.exe for %VSCMD_ARG_TGT_ARCH%