From 45d31b1bb8699dbbb5fc89c807c95e8c8edbe895 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Wed, 15 Jul 2026 00:58:25 +0200 Subject: Fix some cl compilation errors --- build.bat | 88 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 31 deletions(-) (limited to 'build.bat') 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 -- cgit v1.3