summaryrefslogtreecommitdiffstats
path: root/build.bat
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2026-07-15 00:58:25 +0200
committerladevieq <ladevie.quentin@gmail.com>2026-07-15 00:58:25 +0200
commit45d31b1bb8699dbbb5fc89c807c95e8c8edbe895 (patch)
tree5029da96a243e16038373fce54dd942f32e354d8 /build.bat
parent968d63f3eda7ba49fcba93e444788091cf3ccee8 (diff)
Fix some cl compilation errors
Diffstat (limited to 'build.bat')
-rw-r--r--build.bat88
1 files changed, 57 insertions, 31 deletions
diff --git a/build.bat b/build.bat
index 705d575..6b905af 100644
--- a/build.bat
+++ b/build.bat
@@ -9,53 +9,79 @@ set BUILD_DIR=build
:: Clean directory
IF EXIST %BUILD_DIR% rmdir %BUILD_DIR%\ /S /Q
-mkdir build
+mkdir %BUILD_DIR%
-set VS2022_COM="C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
-set VS2022_PRO="C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"
-
-if EXIST %VS2022_COM% (
- call %VS2022_COM%
- goto compilation
-)
-if EXIST %VS2022_PRO% (
- call %VS2022_PRO%
- goto compilation
+set MSVC=1
+set CLANG=0
+set C_COMPILER=cl
+set C_LINKER=link
+if %MSVC% EQU 1 (
+ if %CLANG% EQU 1 (
+ set C_COMPILER=clang-cl
+ set C_LINKER=lld-link
+ )
+) else (
+ set CLANG=1
+ set C_COMPILER=clang
+ set C_LINKER=lld-link
)
+if %MSVC% EQU 1 (
+ REM set C_FLAGS=/DHASHMAP /nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /std:c17 /c /Tc
+ set C_FLAGS=/nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /std:c17 /c /Tc
-:compilation
-REM set C_FLAGS=/DHASHMAP /nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /std:c17 /c /Tc
-REM set C_FLAGS=/nologo /W4 /WX /Zi /GS- /GR- /Gs1000000000 /Fo:%BUILD_DIR%\ /Iinclude /Isrc /DDEBUG /std:clatest /c /Tc
-set C_FLAGS=-fno-builtin -nostdlib -mno-stack-arg-probe --target=x86_64-pc-windows-msvc -Wall -Werror -pedantic -I include -std=c23 -Wno-msvc-not-found -Wno-microsoft-anon-tag -Wno-gnu-binary-literal -g -O0 -c -DDEBUG
-REM set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x100000,100000
-set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB
+ set DEBUG_C_FLAGS=/DDEBUG /Od
+ set RELEASE_C_FLAGS=/DNDEBUG /O2
+ set DEBUG_L_FLAGS=/DEBUG
+) else (
+ set C_FLAGS=-fno-builtin -nostdlib -mno-stack-arg-probe --target=x86_64-pc-windows-msvc -Wall -Werror -pedantic -I include -std=c23 -Wno-msvc-not-found -Wno-microsoft-anon-tag -Wno-gnu-binary-literal -g -O0 -c
+
+ set DEBUG_C_FLAGS=-DDEBUG -g -O0
+ set RELEASE_C_FLAGS=-DNDEBUG -O2
+)
-if "%release%"=="0" (
- :: set C_FLAGS=/Od %C_FLAGS%
- set L_FLAGS=/DEBUG %L_FLAGS%
+if %RELEASE% EQU 0 (
+ set C_FLAGS=%DEBUG_C_FLAGS% %C_FLAGS%
+ set L_FLAGS=%DEBUG_L_FLAGS% %L_FLAGS%
+ set SHADERS_C_FLAGS = -O0 -g %SHADERS_C_FLAGS%
+) else (
+ set C_FLAGS=%RELEASE_C_FLAGS% %C_FLAGS%
+ set SHADERS_C_FLAGS=-O %SHADERS_C_FLAGS%
)
+
+set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x500000,500000 /DEBUG
+
set src=main utils events module parser pdb hashmap stack_walk disasm loader
:: DBG
:: Compile
-(for %%s in (%src%) do (
- call set OBJS=%%OBJS%% %BUILD_DIR%\%%s.obj
- clang -o %BUILD_DIR%\%%s.obj %C_FLAGS% src\%%s.c
-))
-:: cl /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% src\%%s.c
+if %MSVC% EQU 1 (
+ (for %%s in (%src%) do (
+ call set OBJS=%%OBJS%% %BUILD_DIR%\%%s.obj
+ echo %C_COMPILER% /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% src\%%s.c
+ %C_COMPILER% /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% src\%%s.c
+ ))
+) else (
+ (for %%s in (%src%) do (
+ call set OBJS=%%OBJS%% %BUILD_DIR%\%%s.obj
+ echo %C_COMPILER% -o %BUILD_DIR%\%%s.obj %C_FLAGS% src\%%s.c
+ %C_COMPILER% -o %BUILD_DIR%\%%s.obj %C_FLAGS% src\%%s.c
+ ))
+)
:: Link
-REM link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %OBJS% kernel32.lib
-lld-link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %OBJS%
+echo %C_LINKER% %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %OBJS%
+%C_LINKER% %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %OBJS%
:: Test program
set SRC_FILE=test
:: Compile
-REM cl /Fd:%BUILD_DIR%\%SRC_FILE%.pdb %C_FLAGS% src/%SRC_FILE%.c
-clang -o %BUILD_DIR%\%SRC_FILE%.obj %C_FLAGS% src/%SRC_FILE%.c
+if %MSVC% EQU 1 (
+ %C_COMPILER% /Fd:%BUILD_DIR%\%SRC_FILE%.pdb %C_FLAGS% src/%SRC_FILE%.c
+) else (
+ %C_COMPILER% -o %BUILD_DIR%\%SRC_FILE%.obj %C_FLAGS% src/%SRC_FILE%.c
+)
:: Link
-REM link %L_FLAGS% %BUILD_DIR%\%SRC_FILE%.obj /OUT:%BUILD_DIR%\%SRC_FILE%.exe kernel32.lib
-lld-link %L_FLAGS% %BUILD_DIR%\%SRC_FILE%.obj /OUT:%BUILD_DIR%\%SRC_FILE%.exe
+%C_LINKER% %L_FLAGS% %BUILD_DIR%\%SRC_FILE%.obj /OUT:%BUILD_DIR%\%SRC_FILE%.exe