diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-08-07 04:37:39 +0300 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-08-07 04:37:39 +0300 |
commit | 2d1673d40ffdaf4e62d4e9c581c6d92034baed72 (patch) | |
tree | b369c25d6f63abe777b10dad11c11a23e06bcf98 /build.bat | |
parent | 262ddbd72b42dd0673b61cfeeda86c36a4cd98cc (diff) | |
download | ungrateful-2d1673d40ffdaf4e62d4e9c581c6d92034baed72.tar.gz ungrateful-2d1673d40ffdaf4e62d4e9c581c6d92034baed72.zip |
Windows ungrateful and cynic build.
Diffstat (limited to 'build.bat')
-rw-r--r-- | build.bat | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..1b8e58d --- /dev/null +++ b/build.bat @@ -0,0 +1,100 @@ +@echo off + +:: /GS - is sequrity check for buffer overruns. +:: /Oi - generate intrinsic functions (aka inline intrinsic). +:: /O1 /O2 - minimize size, minimize speed. +:: /Ox - subset of /O2, doesnt include. + +:: /GL - whole program optimizations. +:: /LTCG - link time codegen. it is linker option. +:: /cgthreads1 8 - how much thread cl.exe can use. + +:: /F {0} - sets stack size. + +:: outputs +:: /Fa{path} - asm file path. +:: /Fd{path} - pdb file path. +:: /Fe{path} - exe file path. +:: /Fo{path} - obj file path. + +:: /MT - defines _MT. uses LIBCMT.lib to resolve runtime symbols. +:: /MTd - defines _MT _DEBUG, uses LIBCMT.lib. +:: /MD - defines _MT _DLL. uses MSVCRT.lib. +:: /MDd - defines _MT _DLL _DEBUG. uses MSVCRT.lib. +:: /LD - implies /MT unless specified /MD. +:: /LDd - ... + +setlocal + +set "cc=cl.exe" +set "ar=lib.exe" + +set "bin_dir=bin\" +set "src_dir=src\" +set "obj_dir=obj\" +set "inc_dir=include\" +set "lib_dir=lib\" + +set "warn=/wd4244" +set "cdefines=/D _CRT_SECURE_NO_WARNINGS /D _UNICODE /D UNICODE" + +set "cflags=/nologo /std:c11 /utf-8 /W4 /WX- /diagnostics:column /TC /Zi /fp:fast" + +:: +:: ------------ +:: + +set "flag=/D DEBUG /MTd /Od /GS /MP" +set "_flag=/D NDEBUG /MT /Ox /GS- /MP /cgthreads8 /GL" + +:: +:: ------------ +:: + +if exist %bin_dir% ( rmdir /s /q %bin_dir% ) +if exist %obj_dir% ( rmdir /s /q %obj_dir% ) +if exist %inc_dir% ( rmdir /s /q %inc_dir% ) +if exist %lib_dir% ( rmdir /s /q %lib_dir% ) + +if not exist %bin_dir% ( mkdir %bin_dir% ) +if not exist %obj_dir% ( mkdir %obj_dir% ) +if not exist %inc_dir% ( mkdir %inc_dir% ) +if not exist %lib_dir% ( mkdir %lib_dir% ) + +%cc% %cflags% %warn% %flag% /c %src_dir%ungrateful.c /Fo%obj_dir%ungrateful.obj /Fd%obj_dir%ungrateful.pdb %cdefines% +%cc% %cflags% %warn% %flag% /I %src_dir% /c %src_dir%cynic.c /Fo%obj_dir%cynic.obj /Fd%obj_dir%cynic.pdb %cdefines% + +%ar% /nologo /OUT:lib\ungrateful.lib %obj_dir%ungrateful.obj +%ar% /nologo /OUT:lib\cynic.lib %obj_dir%cynic.obj + +for %%f in ("%src_dir%*.h") do ( + copy "%%f" "%inc_dir%%%~nxf" 1>nul +) + +echo: + +set "link_param=/link %lib_dir%ungrateful.lib" +for %%f in ("tests\un\*.c") do ( + %cc% %cflags% %warn% %flag% %cdefines% %%f /I%inc_dir% /Fo%obj_dir% /Fd%bin_dir% /Fe%bin_dir% %link_param% +) + +set "link_param=/link %lib_dir%ungrateful.lib %lib_dir%cynic.lib" +for %%f in ("tests\cyn\*.c") do ( + %cc% %cflags% %warn% %flag% %cdefines% %%f /I%inc_dir% /Fo%obj_dir% /Fd%bin_dir% /Fe%bin_dir% %link_param% +) + +echo: + +for %%f in ("%bin_dir%*.exe") do ( + %%f + + if %errorlevel% == 0 ( + echo [DONE] %%f + ) else ( + echo [FAIL] %%f + ) +) + +echo: +echo Done! +endlocal |