# Prism — Build tasks # See https://just.systems default: build CC := "clang" CXX := "clang++" SLANGC := "slangc" BUILDDIR := "build" # Resolve VULKAN_SDK once via backtick VK_SDK := `echo $VULKAN_SDK` VENDOR_INC := BUILDDIR + "/include" VENDOR_LIB := BUILDDIR + "/lib" VK_FLAGS := "-DPR_RHI_VULKAN -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 {{BUILDDIR}}/ktx cmake src/vendor/ktx -B {{BUILDDIR}}/ktx \ -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)/{{BUILDDIR}} \ -D CMAKE_CXX_STANDARD=17 \ -D CMAKE_CXX_FLAGS="-msse4.1" \ -G Ninja cmake --build {{BUILDDIR}}/ktx --config Release cmake --install {{BUILDDIR}}/ktx # Compile Slang shaders to SPIR-V shaders: mkdir -p assets/shaders {{SLANGC}} -target spirv -stage vertex -entry main src/shaders/blit.vert.slang -o assets/shaders/blit.vert.spv {{SLANGC}} -target spirv -stage vertex -entry main src/shaders/blit_to_swap.vert.slang -o assets/shaders/blit_to_swap.vert.spv {{SLANGC}} -target spirv -stage fragment -entry main src/shaders/read.frag.slang -o assets/shaders/read.frag.spv {{SLANGC}} -target spirv -stage fragment -entry main src/shaders/blur.frag.slang -o assets/shaders/blur.frag.spv {{SLANGC}} -target spirv -stage fragment -entry main src/shaders/grade.frag.slang -o assets/shaders/grade.frag.spv {{SLANGC}} -target spirv -stage fragment -entry main src/shaders/blend.frag.slang -o assets/shaders/blend.frag.spv {{SLANGC}} -target spirv -stage fragment -entry main src/shaders/blit_to_swap.frag.slang -o assets/shaders/blit_to_swap.frag.spv # Build all objects, then link build: vendor shaders mkdir -p {{BUILDDIR}}/bin 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/pr_rhi.c -o {{BUILDDIR}}/pr_rhi.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/vendor/wapp/wapp.c -o {{BUILDDIR}}/wapp.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} src/prism/allocators/pr_pool_allocator.c -o {{BUILDDIR}}/pr_pool_allocator.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} src/prism/core/pr_graph.c -o {{BUILDDIR}}/pr_graph.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} src/prism/core/pr_node.c -o {{BUILDDIR}}/pr_node.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} src/prism/core/pr_node_eval.c -o {{BUILDDIR}}/pr_node_eval.o bear -a -- {{CC}} -g -c {{VK_FLAGS}} src/prism/core/pr_texture_pool.c -o {{BUILDDIR}}/pr_texture_pool.o bear -a -- {{CXX}} -g -c {{VK_FLAGS}} -Wno-nullability-completeness -DVK_NO_PROTOTYPES \ {{APP_INC}} \ src/main.cpp \ -o {{BUILDDIR}}/main.o bear -a -- {{CXX}} -g {{VK_FLAGS}} \ -L{{VK_SDK}}/lib -L{{VENDOR_LIB}} \ build/*.o \ -lSDL3 -lktx -lvulkan \ -Wl,-rpath,{{VENDOR_LIB}} -Wl,-rpath,{{VK_SDK}}/lib \ -o {{BUILDDIR}}/bin/prism @echo "--- build done: {{BUILDDIR}}/bin/prism ---" @rm {{BUILDDIR}}/*.o run: ./{{BUILDDIR}}/bin/prism # Clean clean: rm -rf {{BUILDDIR}} # Run linter lint: @echo "TODO: implement linter" # Run tests test: @echo "TODO: implement tests"