Files
2026-08-09 20:46:14 +01:00

87 lines
2.6 KiB
Makefile

# 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 := 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" + 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 shaders from .slang to SPIR-V
shaders:
mkdir -p {{BUILDDIR}}/shaders
{{VK_SDK}}/bin/slangc -target spirv \
-profile spirv_1_6+\
SPV_GOOGLE_user_type+\
spvFragmentFullyCoveredEXT+\
spvDerivativeControl+\
spvImageQuery+\
spvImageGatherExtended+\
spvSparseResidency+\
spvMinLod \
-o {{BUILDDIR}}/shaders/blit.spv assets/blit.slang
# 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 -- {{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"