@echo off setlocal cd /D "%~dp0" :: --- Unpack Arguments --------------------------------------------------------------- for %%a in (%*) do set "%%a=1" if not "%msvc%"=="1" if not "%clang%"=="1" set msvc=1 if not "%release%"=="1" set debug=1 if "%debug%"=="1" set release=0 && echo [debug mode] if "%release%"=="1" set debug=0 && echo [release mode] if "%msvc%"=="1" set clang=0 && echo [msvc compile] if "%clang%"=="1" set msvc=0 && echo [clang compile] if "%~1"=="" echo [default mode, assuming `goff` build] && set goff=1 :: --- Compile/Link Line Definitions ------------------------------------------------- set cl_common= /I..\src\ /nologo /FC /Z7 set cl_out= /out: rem Add back resource.res to cl_link set cl_link= /link /MANIFEST:EMBED /INCREMENTAL:NO resource.res set cl_debug= call cl /Od /DBUILD_DEBUG=1 %cl_common% set cl_release= call cl /O2 /DBUILD_DEBUG=0 %cl_common% set clang_common= set clang_out= -o set clang_link= set clang_debug= call cl -g -O0 -DBUILD_DEBUG=1 %clang_common% set clang_release= call cl -g -O2 -DBUILD_DEBUG=0 %clang_common% :: --- Per-Build Settings ---------------------------------------------------- :: set link_dll=-DLL if "%msvc%"=="1" set only_compile=/c if "%msvc%"=="1" set EHsc=/EHsc if "%msvc%"=="1" set rc=rc.exe if "%clang%"=="1" set EHsc= if "%clang%"=="1" set only_compile=-c if "%clang%"=="1" set rc=llvm-rc.exe :: --- Choose Compile/Link Lines --------------------------------------------- if "%msvc%"=="1" set compile_debug=%cl_debug% if "%msvc%"=="1" set compile_release=%cl_release% if "%msvc%"=="1" set compile_link=%cl_link% if "%msvc%"=="1" set out=%cl_out% if "%debug%"=="1" set compile=%compile_debug% if "%release%"=="1" set compile=%compile_release% :: --- Get Current Git Commit Id ---------------------------------------------- for /f %%i in ('call git describe --always --dirty') do set compile=%compile% -DBUILD_GIT_HASH=\"%%i\" :: --- Prep Directory -------------------------------------------------------- if not exist run_tree ( mkdir run_tree echo "[WARNING] creating run_tree, data files may not exist." ) :: --- Produce Logo Icon File ------------------------------------------------ pushd run_tree %rc% /nologo /fo resource.res data\resource.rc || exit /b 1 popd :: --- Build Everything (@build_targets) ------------------------------------- pushd run_tree if "%goff%"=="1" %compile% %gfx% ..\src\goff\goff_main.c %compile_link% %out%"Goff Scan.exe" || exit /b 1 popd :: --- Unset ----------------------------------------------------------------- for %%a in (%*) do set "%%a=0" set goff= set compile= set compile_link= set out= set msvc= set debug=