# Prism — Build tasks # See https://just.systems default: build CC := "clang" CXX := "clang++" BUILDDIR := "build" # Resolve VULKAN_SDK once via backtick VK_SDK := `echo $VULKAN_SDK` VENDOR_INC := "vendor/include" VENDOR_LIB := "vendor/lib" VK_FLAGS := "-DVK_NO_PROTOTYPES -I" + VK_SDK + "/include -I" + VK_SDK + "/include/vma -I" + VENDOR_INC APP_INC := "-I" + VK_SDK + "/include -I" + VK_SDK + "/include/vma -I" + VK_SDK + "/include/slang -I" + VENDOR_INC + " -Isrc" # Build KTX from source vendor: mkdir -p vendor/ktx/build cmake vendor/ktx -B vendor/ktx/build \ -D KTX_FEATURE_LOADTEST_APPS=OFF \ -D KTX_FEATURE_DOC=OFF \ -D CMAKE_EXPORT_COMPILE_COMMANDS=1 \ -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=$(pwd)/vendor \ -D CMAKE_CXX_STANDARD=17 \ -D CMAKE_CXX_FLAGS="-msse4.1" \ -G Ninja cmake --build vendor/ktx/build --config Release cmake --install vendor/ktx/build # Build all objects, then link build: vendor mkdir -p {{BUILDDIR}} bear -- {{CXX}} -g -c -Wno-nullability-completeness {{VK_FLAGS}} \ src/prism/rhi/vulkan/profiles/vulkan_profiles.cpp \ -o {{BUILDDIR}}/vulkan_profiles.o bear -a -- {{CXX}} -g -c -Wno-nullability-completeness {{VK_FLAGS}} \ src/prism/rhi/vulkan/pr_rhi_vk_vma.cpp \ -o {{BUILDDIR}}/pr_rhi_vk_vma.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} {{VK_SDK}}/include/volk/volk.c -o {{BUILDDIR}}/volk.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} src/prism/rhi/vulkan/pr_rhi_vk.c -o {{BUILDDIR}}/pr_rhi_vk.o bear -a -- {{CC}} -g -c src/wapp/wapp.c -o {{BUILDDIR}}/wapp.o bear -a -- {{CXX}} -g -c -Wno-nullability-completeness -DVK_NO_PROTOTYPES \ {{APP_INC}} \ src/main.cpp \ -o {{BUILDDIR}}/main.o bear -a -- {{CXX}} -g -DVK_NO_PROTOTYPES \ -L{{VK_SDK}}/lib -L{{VENDOR_LIB}} \ build/*.o \ -lSDL3 -lglm -ltinyobjloader -lktx -lslang -lvulkan \ -Wl,-rpath,{{VENDOR_LIB}} -Wl,-rpath,{{VK_SDK}}/lib \ -o {{BUILDDIR}}/prism @echo "--- build done: {{BUILDDIR}}/prism ---" # Clean clean: rm -rf {{BUILDDIR}} # Run linter lint: @echo "TODO: implement linter" # Run tests test: @echo "TODO: implement tests"