From 37814bd15fc72cb4c5ded13ac6cb96e3e525efc8 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Thu, 15 Jan 2026 11:10:10 -0300 Subject: [PATCH 01/12] wip: add new backends - experimental vulkan for linux - experimental D3D12 for windows --- build.d | 17 ++- dub.json | 183 +++++++++++++++++++++++++++- examples/clear/dub.json | 7 ++ examples/cube/dub.json | 7 ++ examples/debugtext/dub.json | 7 ++ examples/droptest/dub.json | 7 ++ examples/imgui/dub.json | 7 ++ examples/instancing/dub.json | 7 ++ examples/instancingcompute/dub.json | 7 ++ examples/mrt/dub.json | 7 ++ examples/noninterleaved/dub.json | 7 ++ examples/nuklear/dub.json | 9 +- examples/offscreen/dub.json | 7 ++ examples/quad/dub.json | 7 ++ examples/saudio/dub.json | 7 ++ examples/sglcontext/dub.json | 7 ++ examples/sglpoints/dub.json | 7 ++ examples/shapes/dub.json | 7 ++ examples/texcube/dub.json | 7 ++ examples/triangle/dub.json | 7 ++ examples/userdata/dub.json | 7 ++ examples/vertexpull/dub.json | 7 ++ 22 files changed, 333 insertions(+), 9 deletions(-) diff --git a/build.d b/build.d index 866a9b3a..36d83da9 100644 --- a/build.d +++ b/build.d @@ -133,7 +133,7 @@ void main(string[] args) @safe // Execute build steps if (opts.downloadShdc) - buildShaders(vendorPath); + buildShaders(vendorPath, opts.backend); else if (opts.linkExample) { EmLinkOptions linkOpts = { @@ -218,7 +218,7 @@ void getNuklear(string vendor) @safe } } -void buildShaders(string vendor) @safe +void buildShaders(string vendor, ref SokolBackend opts) @safe { immutable shdcPath = getSHDC(vendor); immutable shadersDir = "examples/shaders"; @@ -233,7 +233,7 @@ void buildShaders(string vendor) @safe else enum glsl = "glsl430"; - immutable slangTemplate = glsl ~ ":metal_macos:hlsl5:%s:wgsl"; + immutable slangTemplate = opts == SokolBackend.vulkan ? glsl ~ ":metal_macos:hlsl5:%s:wgsl:spirv_vk" : glsl ~ ":metal_macos:hlsl5:%s:wgsl"; version (Posix) executeOrFail(["chmod", "+x", shdcPath], "Failed to set shader permissions", true); @@ -275,10 +275,12 @@ enum SokolBackend { _auto, d3d11, + d3d12, metal, glcore, gles3, - wgpu + wgpu, + vulkan } struct LibSokolOptions @@ -347,11 +349,14 @@ void buildLibSokol(LibSokolOptions opts) @safe lflags ~= opts.use_wayland ? [ "-lwayland-client", "-lwayland-egl", "-lwayland-cursor", "-lxkbcommon" ] : []; - lflags ~= ["-lX11", "-lGL", "-lXi", "-lXcursor", "-lasound"]; + lflags ~= opts.backend == SokolBackend.vulkan ? ["-lvulkan"] : ["-lGL"]; + lflags ~= ["-lX11", "-lXi", "-lXcursor", "-lasound"]; break; case "windows": cflags ~= ["/DNDEBUG", "/DIMPL", "/wd4190", "/O2"]; - lflags ~= ["dxgi.lib", "d3d11.lib"]; + lflags ~= opts.backend == SokolBackend.d3d12 ? ["dxgi.lib", "d3d12.lib"] : [ + "dxgi.lib", "d3d11.lib" + ]; break; case "wasm": cflags ~= ["-fPIE"]; diff --git a/dub.json b/dub.json index 23a7eeb7..7de4e0f7 100644 --- a/dub.json +++ b/dub.json @@ -2,7 +2,7 @@ "name": "sokol-d", "description": "D bindings for sokol", "license": "Zlib", - "version": "0.4.1", + "version": "0.4.2", "authors": [ "Matheus França", "Andre Weissflog" @@ -398,6 +398,113 @@ "rm $PACKAGE_DIR/build/*.o" ] }, + { + "name": "sokol-linux-vulkan", + "excludedSourceFiles": [ + "src/sokol/*imgui.d", + "src/sokol/nuklear.d", + "src/emscripten/*.d", + "src/imgui/*.d", + "src/imgui/*.c", + "src/nuklear/*.d", + "src/nuklear/*.c" + ], + "dflags-dmd": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-i=nuklear" + ], + "dflags-ldc": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-mcpu=native" + ], + "targetName": "sokold", + "targetPath": "build", + "libs": [ + "sokol" + ], + "libs-linux": [ + "X11", + "vulkan", + "Xi", + "Xcursor", + "asound", + "m", + "dl" + ], + "preBuildCommands-linux": [ + "mkdir -p $PACKAGE_DIR/build", + "$DC -run $PACKAGE_DIR/build.d --download-sokol-tools --backend=vulkan", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_log.o $PACKAGE_DIR/src/sokol/c/sokol_log.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_app.o $PACKAGE_DIR/src/sokol/c/sokol_app.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_args.o $PACKAGE_DIR/src/sokol/c/sokol_args.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_gfx.o $PACKAGE_DIR/src/sokol/c/sokol_gfx.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_time.o $PACKAGE_DIR/src/sokol/c/sokol_time.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_audio.o $PACKAGE_DIR/src/sokol/c/sokol_audio.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_gl.o $PACKAGE_DIR/src/sokol/c/sokol_gl.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_debugtext.o $PACKAGE_DIR/src/sokol/c/sokol_debugtext.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_shape.o $PACKAGE_DIR/src/sokol/c/sokol_shape.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_glue.o $PACKAGE_DIR/src/sokol/c/sokol_glue.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_fetch.o $PACKAGE_DIR/src/sokol/c/sokol_fetch.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", + "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o" + ] + }, + { + "name": "sokol-windows-dx12", + "excludedSourceFiles": [ + "src/sokol/*imgui.d", + "src/sokol/nuklear.d", + "src/emscripten/*.d", + "src/imgui/*.d", + "src/imgui/*.c", + "src/nuklear/*.d", + "src/nuklear/*.c" + ], + "dflags-dmd": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-i=nuklear" + ], + "dflags-ldc": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-mcpu=native" + ], + "targetName": "sokold", + "targetPath": "build", + "libs": [ + "sokol" + ], + "libs-windows": [ + "dxgi", + "d3d12" + ], + "preBuildCommands-windows": [ + "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", + "$DC -run $PACKAGE_DIR\\build.d --download-sokol-tools --backend=d3d12", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", + "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" + ] + }, { "name": "imgui-static", "targetName": "cimguid", @@ -712,6 +819,78 @@ "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] }, + { + "name": "imgui-linux-vulkan", + "targetName": "cimguid", + "targetPath": "build", + "excludedSourceFiles": [ + "src/sokol/nuklear.d", + "src/emscripten/*.d", + "src/nuklear/*.d", + "src/nuklear/*.c" + ], + "dflags-dmd": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-i=imgui", + "-P-I$PACKAGE_DIR/vendor/imgui/src" + ], + "dflags-gdc": [ + "-I$PACKAGE_DIR/vendor/imgui/src" + ], + "dflags-ldc": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-i=imgui", + "-P-I$PACKAGE_DIR/vendor/imgui/src", + "-mcpu=native" + ], + "libs": [ + "sokol", + "cimgui" + ], + "libs-linux": [ + "stdc++", + "X11", + "vulkan", + "Xi", + "Xcursor", + "asound", + "m", + "dl" + ], + "preBuildCommands-linux": [ + "mkdir -p $PACKAGE_DIR/build", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui --download-sokol-tools --backend=vulkan", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui.o $PACKAGE_DIR/vendor/imgui/src/imgui.cpp", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui_demo.o $PACKAGE_DIR/vendor/imgui/src/imgui_demo.cpp", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui_draw.o $PACKAGE_DIR/vendor/imgui/src/imgui_draw.cpp", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui_tables.o $PACKAGE_DIR/vendor/imgui/src/imgui_tables.cpp", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui_widgets.o $PACKAGE_DIR/vendor/imgui/src/imgui_widgets.cpp", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/cimgui.o $PACKAGE_DIR/vendor/imgui/src/cimgui.cpp", + "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/cimgui_internal.o $PACKAGE_DIR/vendor/imgui/src/cimgui_internal.cpp", + "ar rcs $PACKAGE_DIR/build/libcimgui.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_log.o $PACKAGE_DIR/src/sokol/c/sokol_log.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_app.o $PACKAGE_DIR/src/sokol/c/sokol_app.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_args.o $PACKAGE_DIR/src/sokol/c/sokol_args.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_time.o $PACKAGE_DIR/src/sokol/c/sokol_time.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_gfx.o $PACKAGE_DIR/src/sokol/c/sokol_gfx.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_audio.o $PACKAGE_DIR/src/sokol/c/sokol_audio.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_gl.o $PACKAGE_DIR/src/sokol/c/sokol_gl.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_debugtext.o $PACKAGE_DIR/src/sokol/c/sokol_debugtext.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_shape.o $PACKAGE_DIR/src/sokol/c/sokol_shape.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_glue.o $PACKAGE_DIR/src/sokol/c/sokol_glue.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_fetch.o $PACKAGE_DIR/src/sokol/c/sokol_fetch.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_imgui.o $PACKAGE_DIR/src/sokol/c/sokol_imgui.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_gfx_imgui.o $PACKAGE_DIR/src/sokol/c/sokol_gfx_imgui.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", + "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o" + ] + }, { "name": "imgui-wgles3", "libs": [ @@ -1160,4 +1339,4 @@ "subPackages": [ "init-exec" ] -} +} \ No newline at end of file diff --git a/examples/clear/dub.json b/examples/clear/dub.json index 341a52de..621807e1 100644 --- a/examples/clear/dub.json +++ b/examples/clear/dub.json @@ -50,6 +50,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/cube/dub.json b/examples/cube/dub.json index d20b3c6a..b1985681 100644 --- a/examples/cube/dub.json +++ b/examples/cube/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/debugtext/dub.json b/examples/debugtext/dub.json index 2e929e08..a792a29e 100644 --- a/examples/debugtext/dub.json +++ b/examples/debugtext/dub.json @@ -50,6 +50,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/droptest/dub.json b/examples/droptest/dub.json index 27c77a40..d229b559 100644 --- a/examples/droptest/dub.json +++ b/examples/droptest/dub.json @@ -50,6 +50,13 @@ "sokol-d": "imgui-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "imgui-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/imgui/dub.json b/examples/imgui/dub.json index a64861bf..fa2c607c 100644 --- a/examples/imgui/dub.json +++ b/examples/imgui/dub.json @@ -50,6 +50,13 @@ "sokol-d": "imgui-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "imgui-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/instancing/dub.json b/examples/instancing/dub.json index 135103b5..29bcfa88 100644 --- a/examples/instancing/dub.json +++ b/examples/instancing/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/instancingcompute/dub.json b/examples/instancingcompute/dub.json index 01bf38af..15bb4d36 100644 --- a/examples/instancingcompute/dub.json +++ b/examples/instancingcompute/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/mrt/dub.json b/examples/mrt/dub.json index 43ec746e..3a444577 100644 --- a/examples/mrt/dub.json +++ b/examples/mrt/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/noninterleaved/dub.json b/examples/noninterleaved/dub.json index aa355bcf..572c11a1 100644 --- a/examples/noninterleaved/dub.json +++ b/examples/noninterleaved/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/nuklear/dub.json b/examples/nuklear/dub.json index a1ad23fb..111c46db 100644 --- a/examples/nuklear/dub.json +++ b/examples/nuklear/dub.json @@ -15,7 +15,7 @@ "buildOptions": [ "debugMode", "debugInfo" - ] + ] }, "release": { "buildOptions": [ @@ -50,6 +50,13 @@ "sokol-d": "nuklear-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/offscreen/dub.json b/examples/offscreen/dub.json index 335d91e9..6cd22b16 100644 --- a/examples/offscreen/dub.json +++ b/examples/offscreen/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/quad/dub.json b/examples/quad/dub.json index a2115e22..89ad5060 100644 --- a/examples/quad/dub.json +++ b/examples/quad/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/saudio/dub.json b/examples/saudio/dub.json index 8bf1e570..59bb29fd 100644 --- a/examples/saudio/dub.json +++ b/examples/saudio/dub.json @@ -50,6 +50,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/sglcontext/dub.json b/examples/sglcontext/dub.json index c091375d..0181d921 100644 --- a/examples/sglcontext/dub.json +++ b/examples/sglcontext/dub.json @@ -50,6 +50,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/sglpoints/dub.json b/examples/sglpoints/dub.json index 631509ce..a337d06d 100644 --- a/examples/sglpoints/dub.json +++ b/examples/sglpoints/dub.json @@ -50,6 +50,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/shapes/dub.json b/examples/shapes/dub.json index db6bc117..cfdf503a 100644 --- a/examples/shapes/dub.json +++ b/examples/shapes/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/texcube/dub.json b/examples/texcube/dub.json index 943f2e0f..e0014e1c 100644 --- a/examples/texcube/dub.json +++ b/examples/texcube/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/triangle/dub.json b/examples/triangle/dub.json index 26371c44..1eb23be8 100644 --- a/examples/triangle/dub.json +++ b/examples/triangle/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/userdata/dub.json b/examples/userdata/dub.json index f8a184cb..41f43b25 100644 --- a/examples/userdata/dub.json +++ b/examples/userdata/dub.json @@ -50,6 +50,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/vertexpull/dub.json b/examples/vertexpull/dub.json index 473d791a..222ccd58 100644 --- a/examples/vertexpull/dub.json +++ b/examples/vertexpull/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", From a9dc9ba3249c1c45b590af0bc23077f4e9dceb09 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 16:18:49 -0300 Subject: [PATCH 02/12] CI: build linux-vulkan examples --- .github/workflows/build.yml | 54 ++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0c87bd93..d7a1c128 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: compiler: dmd-latest runs-on: ${{ matrix.runs-on }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@main - uses: egor-tensin/vs-shell@v2 with: arch: x64 @@ -69,7 +69,7 @@ jobs: runs-on: [ubuntu-24.04-arm, ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.runs-on }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@main - uses: dlang-community/setup-dlang@v2 with: compiler: ldc-master @@ -105,7 +105,7 @@ jobs: runs-on: [ubuntu-24.04-arm, ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.runs-on }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@main - uses: dlang-community/setup-dlang@v2 with: compiler: ldc-master @@ -144,7 +144,7 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@main - name: prepare-linux run: | pacman -Syu --noconfirm @@ -171,3 +171,49 @@ jobs: dub build :texcube dub build :userdata dub build :vertexpull + + build-vulkan: + strategy: + fail-fast: false + matrix: + runs-on: [ubuntu-24.04-arm, ubuntu-latest] + runs-on: ${{ matrix.runs-on }} + steps: + - uses: actions/checkout@main + - uses: humbletim/setup-vulkan-sdk@main + with: + vulkan-query-version: 1.4.335.0 + vulkan-components: Vulkan-Headers, Vulkan-Loader + vulkan-use-cache: true + - uses: dlang-community/setup-dlang@v2 + with: + compiler: ldc-master + - name: prepare-linux + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install libgl1-mesa-dev libegl1-mesa-dev mesa-common-dev xorg-dev libasound-dev libvulkan-dev + - name: (dub) Build sokol examples + working-directory: examples + run: | + dub build :blend -c linux-vulkan -v + dub build :bufferoffsets -c linux-vulkan -v + dub build :clear -c linux-vulkan -v + dub build :cube -c linux-vulkan -v + dub build :debugtext -c linux-vulkan -v + dub build :droptest -c linux-vulkan -v + dub build :imgui -c linux-vulkan -v + dub build :instancing -c linux-vulkan -v + dub build :instancingcompute -c linux-vulkan -v + dub build :mrt -c linux-vulkan -v + dub build :noninterleaved -c linux-vulkan -v + dub build :nuklear -c linux-vulkan -v + dub build :offscreen -c linux-vulkan -v + dub build :quad -c linux-vulkan -v + dub build :shapes -c linux-vulkan -v + dub build :saudio -c linux-vulkan -v + dub build :sglcontext -c linux-vulkan -v + dub build :sglpoints -c linux-vulkan -v + dub build :triangle -c linux-vulkan -v + dub build :texcube -c linux-vulkan -v + dub build :vertexpull -c linux-vulkan -v From 6921e8f476135c16814923332b279827f7b22372 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 16:26:43 -0300 Subject: [PATCH 03/12] fix vulkan examples --- examples/blend/dub.json | 7 +++++++ examples/bufferoffsets/dub.json | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/examples/blend/dub.json b/examples/blend/dub.json index b6b08b18..494598de 100644 --- a/examples/blend/dub.json +++ b/examples/blend/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", diff --git a/examples/bufferoffsets/dub.json b/examples/bufferoffsets/dub.json index da5136a3..9a9297e9 100644 --- a/examples/bufferoffsets/dub.json +++ b/examples/bufferoffsets/dub.json @@ -53,6 +53,13 @@ "sokol-d": "sokol-static" } }, + { + "name": "linux-vulkan", + "targetType": "executable", + "subConfigurations": { + "sokol-d": "sokol-linux-vulkan" + } + }, { "name": "wasm", "targetType": "staticLibrary", From a333e935bc93dc71988b1163934e2c6c08a68ebf Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 16:32:59 -0300 Subject: [PATCH 04/12] CI/vulkan: remove verbose --- .github/workflows/build.yml | 43 +++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7a1c128..255a31cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -181,6 +181,7 @@ jobs: steps: - uses: actions/checkout@main - uses: humbletim/setup-vulkan-sdk@main + if: runner.os == 'Windows' with: vulkan-query-version: 1.4.335.0 vulkan-components: Vulkan-Headers, Vulkan-Loader @@ -196,24 +197,24 @@ jobs: - name: (dub) Build sokol examples working-directory: examples run: | - dub build :blend -c linux-vulkan -v - dub build :bufferoffsets -c linux-vulkan -v - dub build :clear -c linux-vulkan -v - dub build :cube -c linux-vulkan -v - dub build :debugtext -c linux-vulkan -v - dub build :droptest -c linux-vulkan -v - dub build :imgui -c linux-vulkan -v - dub build :instancing -c linux-vulkan -v - dub build :instancingcompute -c linux-vulkan -v - dub build :mrt -c linux-vulkan -v - dub build :noninterleaved -c linux-vulkan -v - dub build :nuklear -c linux-vulkan -v - dub build :offscreen -c linux-vulkan -v - dub build :quad -c linux-vulkan -v - dub build :shapes -c linux-vulkan -v - dub build :saudio -c linux-vulkan -v - dub build :sglcontext -c linux-vulkan -v - dub build :sglpoints -c linux-vulkan -v - dub build :triangle -c linux-vulkan -v - dub build :texcube -c linux-vulkan -v - dub build :vertexpull -c linux-vulkan -v + dub build :blend -c linux-vulkan + dub build :bufferoffsets -c linux-vulkan + dub build :clear -c linux-vulkan + dub build :cube -c linux-vulkan + dub build :debugtext -c linux-vulkan + dub build :droptest -c linux-vulkan + dub build :imgui -c linux-vulkan + dub build :instancing -c linux-vulkan + dub build :instancingcompute -c linux-vulkan + dub build :mrt -c linux-vulkan + dub build :noninterleaved -c linux-vulkan + dub build :nuklear -c linux-vulkan + dub build :offscreen -c linux-vulkan + dub build :quad -c linux-vulkan + dub build :shapes -c linux-vulkan + dub build :saudio -c linux-vulkan + dub build :sglcontext -c linux-vulkan + dub build :sglpoints -c linux-vulkan + dub build :triangle -c linux-vulkan + dub build :texcube -c linux-vulkan + dub build :vertexpull -c linux-vulkan From ea5cbcb8e56decad5b7840587f0d59c85e6c36d3 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 16:40:21 -0300 Subject: [PATCH 05/12] fix: vulkan + nuklear --- dub.json | 129 ++++++++++++++++++++++++++++++++++++++ examples/nuklear/dub.json | 2 +- 2 files changed, 130 insertions(+), 1 deletion(-) diff --git a/dub.json b/dub.json index 7de4e0f7..57702fc6 100644 --- a/dub.json +++ b/dub.json @@ -1260,6 +1260,135 @@ "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] }, + { + "name": "nuklear-linux-vulkan", + "targetName": "nuklear_d", + "targetPath": "build", + "excludedSourceFiles": [ + "src/sokol/*imgui.d", + "src/imgui/*.d", + "src/imgui/*.c" + ], + "dflags-dmd": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-i=nuklear", + "-P-I$PACKAGE_DIR/vendor/nuklear" + ], + "dflags-gdc": [ + "-I$PACKAGE_DIR/vendor/nuklear" + ], + "dflags-ldc": [ + "-i=sokol", + "-i=shaders", + "-i=handmade", + "-i=nuklear", + "-P-I$PACKAGE_DIR/vendor/nuklear", + "-mcpu=native" + ], + "libs": [ + "sokol", + "nuklear" + ], + "libs-linux": [ + "X11", + "vulkan", + "Xi", + "Xcursor", + "asound", + "m", + "dl" + ], + "libs-osx": [ + "objC" + ], + "libs-windows": [ + "imm32", + "dxgi", + "d3d11" + ], + "lflags-osx": [ + "-framework", + "Cocoa", + "-framework", + "QuartzCore", + "-framework", + "Foundation", + "-framework", + "MetalKit", + "-framework", + "Metal", + "-framework", + "AudioToolbox" + ], + "preBuildCommands-linux": [ + "mkdir -p $PACKAGE_DIR/build", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-nuklear", + "gcc -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -I$PACKAGE_DIR/vendor/nuklear -c -o $PACKAGE_DIR/build/nuklear.o $PACKAGE_DIR/src/nuklear/c/nuklearc.c", + "ar rcs $PACKAGE_DIR/build/libnuklear.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_log.o $PACKAGE_DIR/src/sokol/c/sokol_log.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_app.o $PACKAGE_DIR/src/sokol/c/sokol_app.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_args.o $PACKAGE_DIR/src/sokol/c/sokol_args.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_time.o $PACKAGE_DIR/src/sokol/c/sokol_time.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_gfx.o $PACKAGE_DIR/src/sokol/c/sokol_gfx.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_audio.o $PACKAGE_DIR/src/sokol/c/sokol_audio.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_gl.o $PACKAGE_DIR/src/sokol/c/sokol_gl.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_debugtext.o $PACKAGE_DIR/src/sokol/c/sokol_debugtext.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_shape.o $PACKAGE_DIR/src/sokol/c/sokol_shape.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_glue.o $PACKAGE_DIR/src/sokol/c/sokol_glue.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_fetch.o $PACKAGE_DIR/src/sokol/c/sokol_fetch.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_nuklear.o $PACKAGE_DIR/src/sokol/c/sokol_nuklear.c", + "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/nuklear -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", + "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o" + ], + "preBuildCommands-osx": [ + "mkdir -p $PACKAGE_DIR/build", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-nuklear", + "clang -Wall -Wextra -Wno-return-type-c-linkage -Wno-unused-function -DNDEBUG -O2 -fPIE -I$PACKAGE_DIR/vendor/nuklear -c -o $PACKAGE_DIR/build/nuklear.o $PACKAGE_DIR/src/nuklear/c/nuklearc.c", + "ar rcs $PACKAGE_DIR/build/libnuklear.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_log.o $PACKAGE_DIR/src/sokol/c/sokol_log.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_app.o $PACKAGE_DIR/src/sokol/c/sokol_app.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_args.o $PACKAGE_DIR/src/sokol/c/sokol_args.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_gfx.o $PACKAGE_DIR/src/sokol/c/sokol_gfx.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_time.o $PACKAGE_DIR/src/sokol/c/sokol_time.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_audio.o $PACKAGE_DIR/src/sokol/c/sokol_audio.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_gl.o $PACKAGE_DIR/src/sokol/c/sokol_gl.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_debugtext.o $PACKAGE_DIR/src/sokol/c/sokol_debugtext.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_shape.o $PACKAGE_DIR/src/sokol/c/sokol_shape.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_glue.o $PACKAGE_DIR/src/sokol/c/sokol_glue.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_fetch.o $PACKAGE_DIR/src/sokol/c/sokol_fetch.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_nuklear.o $PACKAGE_DIR/src/sokol/c/sokol_nuklear.c", + "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", + "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", + "rm $PACKAGE_DIR/build/*.o" + ], + "preBuildCommands-windows": [ + "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-nuklear", + "cl.exe /DNDEBUG /O2 /nologo /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\nuklear.obj $PACKAGE_DIR\\src\\nuklear\\c\\nuklearc.c", + "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\nuklear.lib $PACKAGE_DIR\\build\\*.obj", + "powershell -Command \"Remove-Item $PACKAGE_DIR\\build\\*.obj\"", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_nuklear.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_nuklear.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", + "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" + ] + }, { "name": "nuklear-wgles3", "libs": [ diff --git a/examples/nuklear/dub.json b/examples/nuklear/dub.json index 111c46db..c0b610eb 100644 --- a/examples/nuklear/dub.json +++ b/examples/nuklear/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "nuklear-linux-vulkan" } }, { From fdb6ea272b5e4803d7cf970fc101053442a6dad4 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 16:51:40 -0300 Subject: [PATCH 06/12] vulkan for windows --- .github/workflows/build.yml | 2 +- dub.json | 127 +++++++++++++++------------- examples/blend/dub.json | 2 +- examples/bufferoffsets/dub.json | 2 +- examples/clear/dub.json | 2 +- examples/cube/dub.json | 2 +- examples/debugtext/dub.json | 2 +- examples/droptest/dub.json | 2 +- examples/imgui/dub.json | 2 +- examples/instancing/dub.json | 2 +- examples/instancingcompute/dub.json | 2 +- examples/mrt/dub.json | 2 +- examples/noninterleaved/dub.json | 2 +- examples/nuklear/dub.json | 2 +- examples/offscreen/dub.json | 2 +- examples/quad/dub.json | 2 +- examples/saudio/dub.json | 2 +- examples/sglcontext/dub.json | 2 +- examples/sglpoints/dub.json | 2 +- examples/shapes/dub.json | 2 +- examples/texcube/dub.json | 2 +- examples/triangle/dub.json | 2 +- examples/userdata/dub.json | 2 +- examples/vertexpull/dub.json | 2 +- 24 files changed, 93 insertions(+), 80 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 255a31cf..5d87f068 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -176,7 +176,7 @@ jobs: strategy: fail-fast: false matrix: - runs-on: [ubuntu-24.04-arm, ubuntu-latest] + runs-on: [ubuntu-24.04-arm, ubuntu-latest, windows-latest] runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@main diff --git a/dub.json b/dub.json index 57702fc6..0f96117c 100644 --- a/dub.json +++ b/dub.json @@ -399,7 +399,7 @@ ] }, { - "name": "sokol-linux-vulkan", + "name": "sokol-vulkan", "excludedSourceFiles": [ "src/sokol/*imgui.d", "src/sokol/nuklear.d", @@ -435,6 +435,9 @@ "m", "dl" ], + "libs-windows": [ + "vulkan-1" + ], "preBuildCommands-linux": [ "mkdir -p $PACKAGE_DIR/build", "$DC -run $PACKAGE_DIR/build.d --download-sokol-tools --backend=vulkan", @@ -452,6 +455,23 @@ "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", "rm $PACKAGE_DIR/build/*.o" + ], + "preBuildCommands-windows": [ + "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", + "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] }, { @@ -820,7 +840,7 @@ ] }, { - "name": "imgui-linux-vulkan", + "name": "imgui-vulkan", "targetName": "cimguid", "targetPath": "build", "excludedSourceFiles": [ @@ -861,6 +881,10 @@ "m", "dl" ], + "libs-windows": [ + "imm32", + "vulkan-1" + ], "preBuildCommands-linux": [ "mkdir -p $PACKAGE_DIR/build", "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui --download-sokol-tools --backend=vulkan", @@ -889,6 +913,35 @@ "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -I$PACKAGE_DIR/vendor/imgui/src -O2 -fPIC -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", "rm $PACKAGE_DIR/build/*.o" + ], + "preBuildCommands-windows": [ + "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui.cpp", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_demo.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_demo.cpp", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_draw.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_draw.cpp", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_tables.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_tables.cpp", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_widgets.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_widgets.cpp", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\cimgui.obj $PACKAGE_DIR\\vendor\\imgui\\src\\cimgui.cpp", + "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\cimgui_internal.obj $PACKAGE_DIR\\vendor\\imgui\\src\\cimgui_internal.cpp", + "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\cimgui.lib $PACKAGE_DIR\\build\\*.obj", + "powershell -Command \"Remove-Item $PACKAGE_DIR\\build\\*.obj\"", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_imgui.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_imgui.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gfx_imgui.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx_imgui.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", + "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] }, { @@ -1261,7 +1314,7 @@ ] }, { - "name": "nuklear-linux-vulkan", + "name": "nuklear-vulkan", "targetName": "nuklear_d", "targetPath": "build", "excludedSourceFiles": [ @@ -1300,27 +1353,9 @@ "m", "dl" ], - "libs-osx": [ - "objC" - ], "libs-windows": [ "imm32", - "dxgi", - "d3d11" - ], - "lflags-osx": [ - "-framework", - "Cocoa", - "-framework", - "QuartzCore", - "-framework", - "Foundation", - "-framework", - "MetalKit", - "-framework", - "Metal", - "-framework", - "AudioToolbox" + "vulkan-1" ], "preBuildCommands-linux": [ "mkdir -p $PACKAGE_DIR/build", @@ -1344,47 +1379,25 @@ "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", "rm $PACKAGE_DIR/build/*.o" ], - "preBuildCommands-osx": [ - "mkdir -p $PACKAGE_DIR/build", - "$DC -run $PACKAGE_DIR/build.d --with-sokol-nuklear", - "clang -Wall -Wextra -Wno-return-type-c-linkage -Wno-unused-function -DNDEBUG -O2 -fPIE -I$PACKAGE_DIR/vendor/nuklear -c -o $PACKAGE_DIR/build/nuklear.o $PACKAGE_DIR/src/nuklear/c/nuklearc.c", - "ar rcs $PACKAGE_DIR/build/libnuklear.a $PACKAGE_DIR/build/*.o", - "rm $PACKAGE_DIR/build/*.o", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_log.o $PACKAGE_DIR/src/sokol/c/sokol_log.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_app.o $PACKAGE_DIR/src/sokol/c/sokol_app.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_args.o $PACKAGE_DIR/src/sokol/c/sokol_args.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_gfx.o $PACKAGE_DIR/src/sokol/c/sokol_gfx.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_time.o $PACKAGE_DIR/src/sokol/c/sokol_time.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_audio.o $PACKAGE_DIR/src/sokol/c/sokol_audio.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_gl.o $PACKAGE_DIR/src/sokol/c/sokol_gl.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_debugtext.o $PACKAGE_DIR/src/sokol/c/sokol_debugtext.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_shape.o $PACKAGE_DIR/src/sokol/c/sokol_shape.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_glue.o $PACKAGE_DIR/src/sokol/c/sokol_glue.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_fetch.o $PACKAGE_DIR/src/sokol/c/sokol_fetch.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_nuklear.o $PACKAGE_DIR/src/sokol/c/sokol_nuklear.c", - "clang -DNDEBUG -DIMPL -DSOKOL_METAL -Wall -Wextra -Wno-unused-function -Wno-return-type-c-linkage -I$PACKAGE_DIR/vendor/nuklear -ObjC -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_memtrack.o $PACKAGE_DIR/src/sokol/c/sokol_memtrack.c", - "ar rcs $PACKAGE_DIR/build/libsokol.a $PACKAGE_DIR/build/*.o", - "rm $PACKAGE_DIR/build/*.o" - ], "preBuildCommands-windows": [ "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", "$DC -run $PACKAGE_DIR/build.d --with-sokol-nuklear", "cl.exe /DNDEBUG /O2 /nologo /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\nuklear.obj $PACKAGE_DIR\\src\\nuklear\\c\\nuklearc.c", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\nuklear.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command \"Remove-Item $PACKAGE_DIR\\build\\*.obj\"", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_nuklear.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_nuklear.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D11 /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_nuklear.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_nuklear.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] diff --git a/examples/blend/dub.json b/examples/blend/dub.json index 494598de..67f52e04 100644 --- a/examples/blend/dub.json +++ b/examples/blend/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/bufferoffsets/dub.json b/examples/bufferoffsets/dub.json index 9a9297e9..daf5286f 100644 --- a/examples/bufferoffsets/dub.json +++ b/examples/bufferoffsets/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/clear/dub.json b/examples/clear/dub.json index 621807e1..49cc42b2 100644 --- a/examples/clear/dub.json +++ b/examples/clear/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/cube/dub.json b/examples/cube/dub.json index b1985681..efc272e6 100644 --- a/examples/cube/dub.json +++ b/examples/cube/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/debugtext/dub.json b/examples/debugtext/dub.json index a792a29e..12a2e14b 100644 --- a/examples/debugtext/dub.json +++ b/examples/debugtext/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/droptest/dub.json b/examples/droptest/dub.json index d229b559..cc2e483e 100644 --- a/examples/droptest/dub.json +++ b/examples/droptest/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "imgui-linux-vulkan" + "sokol-d": "imgui-vulkan" } }, { diff --git a/examples/imgui/dub.json b/examples/imgui/dub.json index fa2c607c..1c0630b9 100644 --- a/examples/imgui/dub.json +++ b/examples/imgui/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "imgui-linux-vulkan" + "sokol-d": "imgui-vulkan" } }, { diff --git a/examples/instancing/dub.json b/examples/instancing/dub.json index 29bcfa88..2ca3bdd7 100644 --- a/examples/instancing/dub.json +++ b/examples/instancing/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/instancingcompute/dub.json b/examples/instancingcompute/dub.json index 15bb4d36..ceb2d67b 100644 --- a/examples/instancingcompute/dub.json +++ b/examples/instancingcompute/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/mrt/dub.json b/examples/mrt/dub.json index 3a444577..c706ec1c 100644 --- a/examples/mrt/dub.json +++ b/examples/mrt/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/noninterleaved/dub.json b/examples/noninterleaved/dub.json index 572c11a1..0dc0bb8d 100644 --- a/examples/noninterleaved/dub.json +++ b/examples/noninterleaved/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/nuklear/dub.json b/examples/nuklear/dub.json index c0b610eb..c8b00d93 100644 --- a/examples/nuklear/dub.json +++ b/examples/nuklear/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "nuklear-linux-vulkan" + "sokol-d": "nuklear-vulkan" } }, { diff --git a/examples/offscreen/dub.json b/examples/offscreen/dub.json index 6cd22b16..56f8a098 100644 --- a/examples/offscreen/dub.json +++ b/examples/offscreen/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/quad/dub.json b/examples/quad/dub.json index 89ad5060..c48822c3 100644 --- a/examples/quad/dub.json +++ b/examples/quad/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/saudio/dub.json b/examples/saudio/dub.json index 59bb29fd..df35b820 100644 --- a/examples/saudio/dub.json +++ b/examples/saudio/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/sglcontext/dub.json b/examples/sglcontext/dub.json index 0181d921..d81e8e03 100644 --- a/examples/sglcontext/dub.json +++ b/examples/sglcontext/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/sglpoints/dub.json b/examples/sglpoints/dub.json index a337d06d..46b74cb7 100644 --- a/examples/sglpoints/dub.json +++ b/examples/sglpoints/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/shapes/dub.json b/examples/shapes/dub.json index cfdf503a..2a6ebb8c 100644 --- a/examples/shapes/dub.json +++ b/examples/shapes/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/texcube/dub.json b/examples/texcube/dub.json index e0014e1c..fc5c5dd6 100644 --- a/examples/texcube/dub.json +++ b/examples/texcube/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/triangle/dub.json b/examples/triangle/dub.json index 1eb23be8..761f0a9d 100644 --- a/examples/triangle/dub.json +++ b/examples/triangle/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/userdata/dub.json b/examples/userdata/dub.json index 41f43b25..58235532 100644 --- a/examples/userdata/dub.json +++ b/examples/userdata/dub.json @@ -54,7 +54,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { diff --git a/examples/vertexpull/dub.json b/examples/vertexpull/dub.json index 222ccd58..d928dfed 100644 --- a/examples/vertexpull/dub.json +++ b/examples/vertexpull/dub.json @@ -57,7 +57,7 @@ "name": "linux-vulkan", "targetType": "executable", "subConfigurations": { - "sokol-d": "sokol-linux-vulkan" + "sokol-d": "sokol-vulkan" } }, { From 3346bb6cf883d77ed6d6ba0a19e46bea86bbe2b9 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 16:55:18 -0300 Subject: [PATCH 07/12] ci: fix missing cl.exe --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5d87f068..a9f8b8ce 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,6 +21,7 @@ jobs: steps: - uses: actions/checkout@main - uses: egor-tensin/vs-shell@v2 + if: runner.os == 'Windows' with: arch: x64 - uses: dlang-community/setup-dlang@v2 @@ -180,6 +181,10 @@ jobs: runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@main + - uses: egor-tensin/vs-shell@v2 + if: runner.os == 'Windows' + with: + arch: x64 - uses: humbletim/setup-vulkan-sdk@main if: runner.os == 'Windows' with: From d687a0a504936291f0e9198cb12b929c8d8cb63b Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 17:17:35 -0300 Subject: [PATCH 08/12] env:VULKAN_SDK for windows --- dub.json | 102 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 40 deletions(-) diff --git a/dub.json b/dub.json index 0f96117c..31cbb3a3 100644 --- a/dub.json +++ b/dub.json @@ -423,6 +423,10 @@ ], "targetName": "sokold", "targetPath": "build", + "environments-windows": { + "ENVIRONMENTS": "root.environments", + "VULKAN_SDK": "${VULKAN_SDK}" + }, "libs": [ "sokol" ], @@ -435,6 +439,9 @@ "m", "dl" ], + "lflags-windows": [ + "/LIBPATH:$VULKAN_SDK\\Lib" + ], "libs-windows": [ "vulkan-1" ], @@ -458,18 +465,19 @@ ], "preBuildCommands-windows": [ "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "$DC -run $PACKAGE_DIR\\build.d --download-sokol-tools --backend=vulkan", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] @@ -867,6 +875,10 @@ "-P-I$PACKAGE_DIR/vendor/imgui/src", "-mcpu=native" ], + "environments-windows": { + "ENVIRONMENTS": "root.environments", + "VULKAN_SDK": "${VULKAN_SDK}" + }, "libs": [ "sokol", "cimgui" @@ -881,6 +893,9 @@ "m", "dl" ], + "lflags-windows": [ + "/LIBPATH:$VULKAN_SDK\\Lib" + ], "libs-windows": [ "imm32", "vulkan-1" @@ -916,7 +931,7 @@ ], "preBuildCommands-windows": [ "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", - "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui", + "$DC -run $PACKAGE_DIR/build.d --download-sokol-tools --with-sokol-imgui --backend=vulkan", "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui.cpp", "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_demo.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_demo.cpp", "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_draw.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_draw.cpp", @@ -926,20 +941,20 @@ "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\cimgui_internal.obj $PACKAGE_DIR\\vendor\\imgui\\src\\cimgui_internal.cpp", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\cimgui.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command \"Remove-Item $PACKAGE_DIR\\build\\*.obj\"", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_imgui.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_imgui.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gfx_imgui.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx_imgui.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_imgui.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_imgui.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_gfx_imgui.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx_imgui.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\imgui\\src\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] @@ -1340,6 +1355,13 @@ "-P-I$PACKAGE_DIR/vendor/nuklear", "-mcpu=native" ], + "environments-windows": { + "ENVIRONMENTS": "root.environments", + "VULKAN_SDK": "${VULKAN_SDK}" + }, + "lflags-windows": [ + "/LIBPATH:$VULKAN_SDK\\Lib" + ], "libs": [ "sokol", "nuklear" @@ -1385,19 +1407,19 @@ "cl.exe /DNDEBUG /O2 /nologo /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\nuklear.obj $PACKAGE_DIR\\src\\nuklear\\c\\nuklearc.c", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\nuklear.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command \"Remove-Item $PACKAGE_DIR\\build\\*.obj\"", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_nuklear.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_nuklear.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_nuklear.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_nuklear.c", + "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /nologo /wd4190 /O2 /c /I\"$VULKAN_SDK\\Include\" /I\"$PACKAGE_DIR\\vendor\\nuklear\" /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] From 14576bc1c14b71052c8936ca3ae5c988cf067a4b Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 17:23:03 -0300 Subject: [PATCH 09/12] rename config --- .github/workflows/build.yml | 42 ++++++++++++++--------------- examples/blend/dub.json | 2 +- examples/bufferoffsets/dub.json | 2 +- examples/clear/dub.json | 2 +- examples/cube/dub.json | 2 +- examples/debugtext/dub.json | 2 +- examples/droptest/dub.json | 2 +- examples/imgui/dub.json | 2 +- examples/instancing/dub.json | 2 +- examples/instancingcompute/dub.json | 2 +- examples/mrt/dub.json | 2 +- examples/noninterleaved/dub.json | 2 +- examples/nuklear/dub.json | 2 +- examples/offscreen/dub.json | 2 +- examples/quad/dub.json | 2 +- examples/saudio/dub.json | 2 +- examples/sglcontext/dub.json | 2 +- examples/sglpoints/dub.json | 2 +- examples/shapes/dub.json | 2 +- examples/texcube/dub.json | 2 +- examples/triangle/dub.json | 2 +- examples/userdata/dub.json | 2 +- examples/vertexpull/dub.json | 2 +- 23 files changed, 43 insertions(+), 43 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a9f8b8ce..3cc11ca5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -202,24 +202,24 @@ jobs: - name: (dub) Build sokol examples working-directory: examples run: | - dub build :blend -c linux-vulkan - dub build :bufferoffsets -c linux-vulkan - dub build :clear -c linux-vulkan - dub build :cube -c linux-vulkan - dub build :debugtext -c linux-vulkan - dub build :droptest -c linux-vulkan - dub build :imgui -c linux-vulkan - dub build :instancing -c linux-vulkan - dub build :instancingcompute -c linux-vulkan - dub build :mrt -c linux-vulkan - dub build :noninterleaved -c linux-vulkan - dub build :nuklear -c linux-vulkan - dub build :offscreen -c linux-vulkan - dub build :quad -c linux-vulkan - dub build :shapes -c linux-vulkan - dub build :saudio -c linux-vulkan - dub build :sglcontext -c linux-vulkan - dub build :sglpoints -c linux-vulkan - dub build :triangle -c linux-vulkan - dub build :texcube -c linux-vulkan - dub build :vertexpull -c linux-vulkan + dub build :blend -c vulkan + dub build :bufferoffsets -c vulkan + dub build :clear -c vulkan + dub build :cube -c vulkan + dub build :debugtext -c vulkan + dub build :droptest -c vulkan + dub build :imgui -c vulkan + dub build :instancing -c vulkan + dub build :instancingcompute -c vulkan + dub build :mrt -c vulkan + dub build :noninterleaved -c vulkan + dub build :nuklear -c vulkan + dub build :offscreen -c vulkan + dub build :quad -c vulkan + dub build :shapes -c vulkan + dub build :saudio -c vulkan + dub build :sglcontext -c vulkan + dub build :sglpoints -c vulkan + dub build :triangle -c vulkan + dub build :texcube -c vulkan + dub build :vertexpull -c vulkan diff --git a/examples/blend/dub.json b/examples/blend/dub.json index 67f52e04..11944bf2 100644 --- a/examples/blend/dub.json +++ b/examples/blend/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/bufferoffsets/dub.json b/examples/bufferoffsets/dub.json index daf5286f..5e2d85c3 100644 --- a/examples/bufferoffsets/dub.json +++ b/examples/bufferoffsets/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/clear/dub.json b/examples/clear/dub.json index 49cc42b2..728cc63a 100644 --- a/examples/clear/dub.json +++ b/examples/clear/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/cube/dub.json b/examples/cube/dub.json index efc272e6..7d85a541 100644 --- a/examples/cube/dub.json +++ b/examples/cube/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/debugtext/dub.json b/examples/debugtext/dub.json index 12a2e14b..efd97ac7 100644 --- a/examples/debugtext/dub.json +++ b/examples/debugtext/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/droptest/dub.json b/examples/droptest/dub.json index cc2e483e..2bfd74db 100644 --- a/examples/droptest/dub.json +++ b/examples/droptest/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "imgui-vulkan" diff --git a/examples/imgui/dub.json b/examples/imgui/dub.json index 1c0630b9..19660182 100644 --- a/examples/imgui/dub.json +++ b/examples/imgui/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "imgui-vulkan" diff --git a/examples/instancing/dub.json b/examples/instancing/dub.json index 2ca3bdd7..d0e7e950 100644 --- a/examples/instancing/dub.json +++ b/examples/instancing/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/instancingcompute/dub.json b/examples/instancingcompute/dub.json index ceb2d67b..21c550a8 100644 --- a/examples/instancingcompute/dub.json +++ b/examples/instancingcompute/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/mrt/dub.json b/examples/mrt/dub.json index c706ec1c..8a74ee17 100644 --- a/examples/mrt/dub.json +++ b/examples/mrt/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/noninterleaved/dub.json b/examples/noninterleaved/dub.json index 0dc0bb8d..0d24b897 100644 --- a/examples/noninterleaved/dub.json +++ b/examples/noninterleaved/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/nuklear/dub.json b/examples/nuklear/dub.json index c8b00d93..437f5cf0 100644 --- a/examples/nuklear/dub.json +++ b/examples/nuklear/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "nuklear-vulkan" diff --git a/examples/offscreen/dub.json b/examples/offscreen/dub.json index 56f8a098..607b8d25 100644 --- a/examples/offscreen/dub.json +++ b/examples/offscreen/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/quad/dub.json b/examples/quad/dub.json index c48822c3..db984f53 100644 --- a/examples/quad/dub.json +++ b/examples/quad/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/saudio/dub.json b/examples/saudio/dub.json index df35b820..32c9d732 100644 --- a/examples/saudio/dub.json +++ b/examples/saudio/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/sglcontext/dub.json b/examples/sglcontext/dub.json index d81e8e03..29bd43f9 100644 --- a/examples/sglcontext/dub.json +++ b/examples/sglcontext/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/sglpoints/dub.json b/examples/sglpoints/dub.json index 46b74cb7..2d7eb4e1 100644 --- a/examples/sglpoints/dub.json +++ b/examples/sglpoints/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/shapes/dub.json b/examples/shapes/dub.json index 2a6ebb8c..f190dab4 100644 --- a/examples/shapes/dub.json +++ b/examples/shapes/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/texcube/dub.json b/examples/texcube/dub.json index fc5c5dd6..a63a2e0e 100644 --- a/examples/texcube/dub.json +++ b/examples/texcube/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/triangle/dub.json b/examples/triangle/dub.json index 761f0a9d..c25709f5 100644 --- a/examples/triangle/dub.json +++ b/examples/triangle/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/userdata/dub.json b/examples/userdata/dub.json index 58235532..58cadbff 100644 --- a/examples/userdata/dub.json +++ b/examples/userdata/dub.json @@ -51,7 +51,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" diff --git a/examples/vertexpull/dub.json b/examples/vertexpull/dub.json index d928dfed..1d753b1e 100644 --- a/examples/vertexpull/dub.json +++ b/examples/vertexpull/dub.json @@ -54,7 +54,7 @@ } }, { - "name": "linux-vulkan", + "name": "vulkan", "targetType": "executable", "subConfigurations": { "sokol-d": "sokol-vulkan" From 0b4d87d50d361b9e8aecb356f9e4e7e803a9eba4 Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 17:30:33 -0300 Subject: [PATCH 10/12] genshaders-vk --- .github/workflows/build.yml | 2 ++ dub.json | 24 +++++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3cc11ca5..14ac879c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -199,6 +199,8 @@ jobs: run: | sudo apt-get update sudo apt-get install libgl1-mesa-dev libegl1-mesa-dev mesa-common-dev xorg-dev libasound-dev libvulkan-dev + - name: (dub) Running shdc + run: dub build -c genshaders-vk - name: (dub) Build sokol examples working-directory: examples run: | diff --git a/dub.json b/dub.json index 31cbb3a3..1659286e 100644 --- a/dub.json +++ b/dub.json @@ -447,7 +447,6 @@ ], "preBuildCommands-linux": [ "mkdir -p $PACKAGE_DIR/build", - "$DC -run $PACKAGE_DIR/build.d --download-sokol-tools --backend=vulkan", "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_log.o $PACKAGE_DIR/src/sokol/c/sokol_log.c", "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_app.o $PACKAGE_DIR/src/sokol/c/sokol_app.c", "gcc -DNDEBUG -DIMPL -DSOKOL_VULKAN -DSOKOL_DISABLE_WAYLAND -Wall -Wextra -Wno-unused-function -O2 -fPIE -c -o $PACKAGE_DIR/build/sokol_args.o $PACKAGE_DIR/src/sokol/c/sokol_args.c", @@ -465,7 +464,6 @@ ], "preBuildCommands-windows": [ "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", - "$DC -run $PACKAGE_DIR\\build.d --download-sokol-tools --backend=vulkan", "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", "cl.exe /DNDEBUG /DIMPL /DSOKOL_VULKAN /I\"$VULKAN_SDK\\Include\" /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", @@ -516,7 +514,6 @@ ], "preBuildCommands-windows": [ "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", - "$DC -run $PACKAGE_DIR\\build.d --download-sokol-tools --backend=d3d12", "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", @@ -902,7 +899,7 @@ ], "preBuildCommands-linux": [ "mkdir -p $PACKAGE_DIR/build", - "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui --download-sokol-tools --backend=vulkan", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui --backend=vulkan", "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui.o $PACKAGE_DIR/vendor/imgui/src/imgui.cpp", "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui_demo.o $PACKAGE_DIR/vendor/imgui/src/imgui_demo.cpp", "g++ -Wall -Wextra -Wno-unused-function -DNDEBUG -O2 -fPIE -c -o $PACKAGE_DIR/build/imgui_draw.o $PACKAGE_DIR/vendor/imgui/src/imgui_draw.cpp", @@ -931,7 +928,7 @@ ], "preBuildCommands-windows": [ "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", - "$DC -run $PACKAGE_DIR/build.d --download-sokol-tools --with-sokol-imgui --backend=vulkan", + "$DC -run $PACKAGE_DIR/build.d --with-sokol-imgui --backend=vulkan", "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui.cpp", "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_demo.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_demo.cpp", "cl.exe /DNDEBUG /O2 /nologo /c /Fo$PACKAGE_DIR\\build\\imgui_draw.obj $PACKAGE_DIR\\vendor\\imgui\\src\\imgui_draw.cpp", @@ -1498,6 +1495,23 @@ "postBuildCommands-windows": [ "powershell -Command Remove-Item $PACKAGE_DIR\\*.lib" ] + }, + { + "name": "genshaders-vk", + "excludedSourceFiles": [ + "src/sokol/*.d", + "src/imgui/*.d", + "src/nuklear/*.d" + ], + "preGenerateCommands": [ + "$DC -run $PACKAGE_DIR/build.d --download-sokol-tools --backend=vulkan" + ], + "postBuildCommands-posix": [ + "rm $PACKAGE_DIR/*.a" + ], + "postBuildCommands-windows": [ + "powershell -Command Remove-Item $PACKAGE_DIR\\*.lib" + ] } ], "subPackages": [ From 150c4fdcd37d592cc4a0da350d8ac7ac9d9134cf Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sat, 31 Jan 2026 17:39:53 -0300 Subject: [PATCH 11/12] readme updated --- README.md | 9 +++++++-- examples/README.md | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 34cbaa6a..0bf6573c 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ dub :triangle By default, the backend 3D API will be selected based on the target platform: - macOS: Metal -- Windows: D3D11 -- Linux: GL/Wayland +- Windows: D3D11/Vulkan +- Linux: GL/Wayland/Vulkan - Wasm (LDC2 required) - WebGL2/WebGPU support #### Usage - template project @@ -52,6 +52,7 @@ dub init -t sokol-d - imgui - instancing - instancingcompute +- nuklear - saudio - sglcontext - sglpoints @@ -68,17 +69,21 @@ Available configurations: sokol-shared # Shared/dynamic library build sokol-wayland-static # Wayland static build for Linux sokol-wayland-shared # Wayland shared build for Linux + sokol-vulkan # Sokol + Vulkan Static library build imgui-static # Sokol + Dear ImGui static build imgui-shared # Sokol + Dear ImGui shared build + imgui-vulkan # Sokol + Dear ImGui + Vulkan static build imgui-wgles3 # Sokol + Dear ImGui WebGL ES3 build imgui-wgpu # Sokol + Dear ImGui WebGPU build sokol-wgles3 # WebGL ES3 build sokol-wgpu # WebGPU build nuklear-static # Sokol + Nuklear static build nuklear-shared # Sokol + Nuklear shared build + nuklear-vulkan # Sokol + Nuklear + Vulkan static build nuklear-wgles3 # Sokol + Nuklear WebGL ES3 build nuklear-wgpu # Sokol + Nuklear WebGPU build genshaders # [re]Generate shader code + genshaders-vk # [re]Generate vk-shader code ``` ## Additional Build Options diff --git a/examples/README.md b/examples/README.md index 64d1da9f..9d178411 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,6 +17,7 @@ Available examples: - imgui - instancing - instancingcompute +- nuklear - saudio - sglcontext - sglpoints @@ -24,5 +25,5 @@ Available examples: Build command format: ```console -dub :[example] -c [native|wasm|wgpu] -b [debug|release|release-nobounds|release-betterc] +dub :[example] -c [native|vulkan|wasm|wgpu] -b [debug|release|release-nobounds|release-betterc] ``` From fb59800c8a5f7b76e1e5e3512591626057493b9b Mon Sep 17 00:00:00 2001 From: Matheus Catarino Date: Sun, 1 Feb 2026 10:16:06 -0300 Subject: [PATCH 12/12] drop d3d12 --- build.d | 5 +---- dub.json | 50 -------------------------------------------------- 2 files changed, 1 insertion(+), 54 deletions(-) diff --git a/build.d b/build.d index 36d83da9..703b4657 100644 --- a/build.d +++ b/build.d @@ -275,7 +275,6 @@ enum SokolBackend { _auto, d3d11, - d3d12, metal, glcore, gles3, @@ -354,9 +353,7 @@ void buildLibSokol(LibSokolOptions opts) @safe break; case "windows": cflags ~= ["/DNDEBUG", "/DIMPL", "/wd4190", "/O2"]; - lflags ~= opts.backend == SokolBackend.d3d12 ? ["dxgi.lib", "d3d12.lib"] : [ - "dxgi.lib", "d3d11.lib" - ]; + lflags ~= ["dxgi.lib", "d3d11.lib"]; break; case "wasm": cflags ~= ["-fPIE"]; diff --git a/dub.json b/dub.json index 1659286e..4eb08fc9 100644 --- a/dub.json +++ b/dub.json @@ -480,56 +480,6 @@ "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" ] }, - { - "name": "sokol-windows-dx12", - "excludedSourceFiles": [ - "src/sokol/*imgui.d", - "src/sokol/nuklear.d", - "src/emscripten/*.d", - "src/imgui/*.d", - "src/imgui/*.c", - "src/nuklear/*.d", - "src/nuklear/*.c" - ], - "dflags-dmd": [ - "-i=sokol", - "-i=shaders", - "-i=handmade", - "-i=nuklear" - ], - "dflags-ldc": [ - "-i=sokol", - "-i=shaders", - "-i=handmade", - "-mcpu=native" - ], - "targetName": "sokold", - "targetPath": "build", - "libs": [ - "sokol" - ], - "libs-windows": [ - "dxgi", - "d3d12" - ], - "preBuildCommands-windows": [ - "powershell -Command \"mkdir -Force $PACKAGE_DIR\\build\"", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_log.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_log.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_app.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_app.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_args.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_args.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gfx.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gfx.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_time.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_time.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_audio.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_audio.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_gl.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_gl.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_debugtext.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_debugtext.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_shape.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_shape.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_glue.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_glue.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_fetch.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_fetch.c", - "cl.exe /DNDEBUG /DIMPL /DSOKOL_D3D12 /nologo /wd4190 /O2 /c /Fo$PACKAGE_DIR\\build\\sokol_memtrack.obj $PACKAGE_DIR\\src\\sokol\\c\\sokol_memtrack.c", - "lib.exe /nologo /OUT:$PACKAGE_DIR\\build\\sokol.lib $PACKAGE_DIR\\build\\*.obj", - "powershell -Command Remove-Item $PACKAGE_DIR\\build\\*.obj" - ] - }, { "name": "imgui-static", "targetName": "cimguid",