goff/build.bat

75 lines
2.7 KiB
Batchfile

@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=