From 754249d9c652ef941e6b082d2e86538d15ba9434 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Tue, 5 May 2026 00:29:41 +0200 Subject: Remove cmake and vcpkg, use a batch file instead --- build.bat | 105 ++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 75 insertions(+), 30 deletions(-) (limited to 'build.bat') diff --git a/build.bat b/build.bat index 918f089..c2c9018 100644 --- a/build.bat +++ b/build.bat @@ -1,7 +1,7 @@ @ECHO OFF :: Unpack Arguments -set release=0 +set RELEASE=0 for %%a in (%*) do set "%%a=1" set BUILD_DIR=build_rel @@ -11,45 +11,90 @@ if "%release%"=="0" ( ) :: clean directory -:: IF EXIST %BUILD_DIR% rmdir %BUILD_DIR%\ /S /Q +IF EXIST %BUILD_DIR% rmdir %BUILD_DIR%\ /S /Q IF NOT EXIST %BUILD_DIR% mkdir %BUILD_DIR% IF NOT EXIST %BUILD_DIR%\shaders mkdir %BUILD_DIR%\shaders -:: set C_FLAGS=/nologo /W4 /WX /Zi /Fo:%BUILD_DIR%\ /Iinclude /Iinclude\api-test /I%VULKAN_SDK%\Include /Ithirdparty /Ithirdparty\imgui-1.92.5 /std:c++latest /DWINDOWS /DNOMINMAX /c /Tp -:: set C_FLAGS=/nologo /W4 /Zi /Fo:%BUILD_DIR%\ /Iinclude /Iinclude\api-test /I%VULKAN_SDK%\Include /imsvcthirdparty /Ithirdparty /Ithirdparty\imgui-1.92.5 /std:c++latest /DWINDOWS /DNOMINMAX /c /Tp - -:: showincludes -:: set C_FLAGS=/nologo /showIncludes /W4 /Zi /Fo:%BUILD_DIR%\ /Iinclude /Iinclude\api-test /I%VULKAN_SDK%\Include /external:W0 /external:Ithirdparty /external:Ithirdparty\imgui-1.92.5 /std:c++latest /DWINDOWS /DNOMINMAX /c /Tp -set C_FLAGS=/nologo /W4 /Zi /Fo:%BUILD_DIR%\ /Iinclude /Iinclude\api-test /I%VULKAN_SDK%\Include /external:W0 /external:Ithirdparty /external:Ithirdparty\imgui-1.92.5 /std:c++latest /DWINDOWS /DNOMINMAX /c /Tp -set SHADER_FLAGS=-I shaders\include -std=460 -:: set C_FLAGS=/nologo /W4 /Zi /Fo:%BUILD_DIR%\ /Iinclude /Iinclude\api-test /imsvcthirdparty /Ithirdparty\imgui-1.92.5 /std:c++latest /DDX12 /DWINDOWS /DNOMINMAX /c /Tp -REM set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x100000,100000 + + +set MSVC=1 +set CLANG=0 +set C_COMPILER=cl +if %MSVC% EQU 1 ( + if %CLANG% EQU 1 ( + set C_COMPILER=clang-cl + ) +) else ( + set CLANG=1 + set C_COMPILER=clang +) + +set C_FLAGS= +set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /stack:0x10000000,10000000 +:: set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB /stack:0x100000,100000 :: set L_FLAGS=/WX /SUBSYSTEM:CONSOLE /NODEFAULTLIB -set L_FLAGS=/WX /SUBSYSTEM:CONSOLE -if "%release%"=="0" ( - set C_FLAGS=/DDEBUG /Od %C_FLAGS% - set SHADER_FLAGS=-O0 -g %SHADER_FLAGS% - set L_FLAGS=/DEBUG %L_FLAGS% +set SHADERS_C_FLAGS=-I shaders\include -std=460 + +set DEBUG_C_FLAGS= +set DEBUG_L_FLAGS= +set RELEASE_C_FLAGS= + +if %MSVC% EQU 1 ( + set C_FLAGS=/nologo /W4 /WX /Zi /Fo:%BUILD_DIR%\ /Iinclude /Iinclude\api-test /I%VULKAN_SDK%\Include /external:W0 /external:Ithirdparty /external:Ithirdparty\imgui /std:c++20 /DNOMINMAX /EHsc /c /Tp + + set DEBUG_C_FLAGS=/DDEBUG /Od + set RELEASE_C_FLAGS=/DNDEBUG /O2 + set DEBUG_L_FLAGS=/DEBUG +) else ( + set C_FLAGS=--target=x86_64-pc-windows-msvc -pedantic -I include -I include\api-test -I %VULKAN_SDK%\Include -isystem thirdparty -isystem thirdparty\imgui -std=c++20 -DNOMINMAX -c -msse4.1 -Wno-missing-designated-field-initializers + + set DEBUG_C_FLAGS=-DDEBUG -g -O0 + set RELEASE_C_FLAGS=-DNDEBUG -O2 +) + + +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% +) + + +if 0 EQU 1 ( + set C_FLAGS=/showIncludes %C_FLAGS% ) -:compilation +:: compiles each compilation unit to an obj :: set imgui_src=imgui imgui_draw imgui_tables imgui_widgets -set src=window vec3 camera scene vulkan-loader utils bvh gltf mesh +:: set src=window vec3 camera scene vulkan-loader utils bvh gltf mesh :: set api=main vk-utils vk-device vk-bindless vk-command-buffer -set api=main -set shaders=ui.vert ui.frag test.comp compute.comp api-test-ui.vert api-test-ui.frag tonemapping.comp transmittance_lut.comp -:: set src=main dx12-device dx12-command-buffer +:: set src=main dx12-device dx12-command-buffer +:: (for %%s in (%api%) do ( +:: call set OBJS=%%OBJS%% %BUILD_DIR%\%%s.obj +:: echo %C_COMPILER% /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% api-test\%%s.cpp +:: %C_COMPILER% /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% api-test\%%s.cpp +:: )) +:: link multiple objs +:: link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %OBJS% kernel32.lib user32.lib -(for %%s in (%api%) do ( - call set OBJS=%%OBJS%% %BUILD_DIR%\%%s.obj - cl /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% api-test\%%s.cpp -)) +:: compiles the project as a single compilation unit +if %MSVC% EQU 1 ( + echo %C_COMPILER% /Fd:%BUILD_DIR%\main.pdb %C_FLAGS% api-test\main.cpp + %C_COMPILER% /Fd:%BUILD_DIR%\main.pdb %C_FLAGS% api-test\main.cpp +) else ( + echo %C_COMPILER% -o %BUILD_DIR%\main.obj %C_FLAGS% api-test\main.cpp + %C_COMPILER% -o %BUILD_DIR%\main.obj %C_FLAGS% api-test\main.cpp +) + +link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %BUILD_DIR%\main.obj kernel32.lib user32.lib shlwapi.lib + +set shaders=ui.vert ui.frag test.comp compute.comp api-test-ui.vert api-test-ui.frag tonemapping.comp transmittance_lut.comp (for %%s in (%shaders%) do ( - glslc.exe -o %BUILD_DIR%\shaders\%%s.spv %SHADER_FLAGS% shaders\%%s + echo glslc.exe -o %BUILD_DIR%\shaders\%%s.spv %SHADER_FLAGS% shaders\%%s + glslc.exe -o %BUILD_DIR%\shaders\%%s.spv %SHADERS_C_FLAGS% shaders\%%s )) - :: clang-cl /Fd:%BUILD_DIR%\%%s.pdb %C_FLAGS% api-test\%%s.cpp - -:: link -link %L_FLAGS% /OUT:%BUILD_DIR%\main.exe %OBJS% kernel32.lib -- cgit v1.3