diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2026-05-21 23:23:59 +0200 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2026-05-21 23:23:59 +0200 |
| commit | ab1af9de1931e6b210386ab88930942ee42d5876 (patch) | |
| tree | ea736e339bbe8dc38c80cd13caa394cf4cf3ad33 /build.bat | |
| parent | dde4bdb8cf94cab1e71eb18a315063371fe1f412 (diff) | |
Diffstat (limited to 'build.bat')
| -rw-r--r-- | build.bat | 58 |
1 files changed, 33 insertions, 25 deletions
@@ -11,42 +11,50 @@ IF EXIST %BUILD_DIR% rmdir %BUILD_DIR%\ /S /Q mkdir build -set COMPILER_MSVC=0 +set COMPILER_MSVC=1 set COMPILER_CLANG=1 REM TODO: Handle compiler executable as well -if %COMPILER_MSVC%==1 ( - set COMPILER=cl - set C_FLAGS=/nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /std:clatest /c /Tc - set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x100000,0x100000 +set MSVC_C_FLAGS=/nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /std:clatest /c /Tc +set CLANG_C_FLAGS=-fno-builtin -nostdlib -mno-stack-arg-probe -std=c23 -c -Wall -Wextra -Werror -Wno-pre-c23-compat -Wno-reserved-identifier -Wno-declaration-after-statement -ferror-limit=0 +:: -Weverything +set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x100000,0x100000 - if "%release%"=="0" ( - set C_FLAGS=/Od %C_FLAGS% - ) -) else ( - if %COMPILER_CLANG%==1 ( - set COMPILER=clang - set C_FLAGS=-fno-builtin -nostdlib -mno-stack-arg-probe -std=c23 -c - set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x100000,0x100000 - - if "%release%"=="0" ( - set C_FLAGS=-g -O0 %C_FLAGS% - set L_FLAGS=/DEBUG %L_FLAGS% - ) - ) +if %release%==0 ( + set MSVC_C_FLAGS=/Od %MSVC_C_FLAGS% + set CLANG_C_FLAGS=-g -O0 %CLANG_C_FLAGS% + set L_FLAGS=/DEBUG %L_FLAGS% ) :compilation :: DBG :: Compile -REM cl.exe /Fd:%BUILD_DIR%\main.pdb %C_FLAGS% src\main.c -REM clang-cl -fno-builtin /Fd:%BUILD_DIR%\main.pdb %C_FLAGS% src\main.c -start %COMPILER% %C_FLAGS% -o %BUILD_DIR%\main.obj src\main.c /wait /b +if %COMPILER_MSVC% EQU 1 ( + echo cl.exe /Fd:%BUILD_DIR%\main.pdb %MSVC_C_FLAGS% src\main.c + cl.exe /Fd:%BUILD_DIR%\main.pdb %MSVC_C_FLAGS% src\main.c +) else ( + if %COMPILER_CLANG% EQU 1 ( + REM clang-cl -fno-builtin /Fd:%BUILD_DIR%\main.pdb %CLANG_C_FLAGS% src\main.c + echo clang %CLANG_C_FLAGS% -o %BUILD_DIR%\main.obj src\main.c + clang %CLANG_C_FLAGS% -o %BUILD_DIR%\main.obj src\main.c + ) +) :: Link -lld-link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %BUILD_DIR%\main.obj kernel32.lib +if %COMPILER_MSVC% EQU 1 ( + link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %BUILD_DIR%\main.obj kernel32.lib +) else ( + if %COMPILER_CLANG% EQU 1 ( + :: lld-link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %BUILD_DIR%\main.obj kernel32.lib + link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %BUILD_DIR%\main.obj kernel32.lib mscrt.lib + ) +) :: Test program :: Compile -:: cl.exe %C_FLAGS% test\main.c /Fd:%BUILD_DIR%\test.pdb /Fo:%BUILD_DIR%\test.obj -clang -fno-builtin -g -O0 -nostdlib -mno-stack-arg-probe -std=c23 -c -o %BUILD_DIR%\test.obj test\main.c +set C_FLAGS=/nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /std:clatest /c /Tp +if %release%==0 ( + set C_FLAGS=/Od %C_FLAGS% +) +cl.exe %C_FLAGS% test\main.c /Fd:%BUILD_DIR%\test.pdb /Fo:%BUILD_DIR%\test.obj +:: clang -fno-builtin -g -O0 -nostdlib -mno-stack-arg-probe -std=c23 -c -o %BUILD_DIR%\test.obj test\main.c |
