Add shader compilation to Makefile

This commit is contained in:
abdelrahman committed 2026-10-24 04:48:33 +01:00
1 parent d35713efdb
commit 9d76e874d4
2 files changed
+10 -3

No files matched your search

-1
View File
@@ -2,4 +2,3 @@
.build .build
vendor/vulkan vendor/vulkan
compile_commands.json compile_commands.json
*.spv
+10 -2
View File
@@ -5,6 +5,7 @@ MACHINE = $(shell uname -m)
PLATFORM = $(KERNEL)_$(MACHINE) PLATFORM = $(KERNEL)_$(MACHINE)
CC = clang CC = clang
CXX = clang++ CXX = clang++
SLANGC = slangc
C_SRCS = src/main.c C_SRCS = src/main.c
C_UNITY_SRCS = src/wapp/wapp.c \ C_UNITY_SRCS = src/wapp/wapp.c \
src/config/config_src.c \ src/config/config_src.c \
@@ -17,11 +18,14 @@ LDFLAGS = -g -DWP_DEBUG_ASSERT
LDLIBS = -lm LDLIBS = -lm
WND_BKND = SDL WND_BKND = SDL
GPU_BKND = Vulkan GPU_BKND = Vulkan
SLANGC_FLAGS = -entry vertMain -entry fragMain
SHADER_SRC = src/shaders/shader.slang
BUILD_ROOT = .build BUILD_ROOT = .build
BUILDDIR = $(BUILD_ROOT)/$(PLATFORM) BUILDDIR = $(BUILD_ROOT)/$(PLATFORM)
OBJDIR = $(BUILDDIR)/obj OBJDIR = $(BUILDDIR)/obj
COBJDIR = $(OBJDIR)/c COBJDIR = $(OBJDIR)/c
CXXOBJDIR = $(OBJDIR)/cxx CXXOBJDIR = $(OBJDIR)/cxx
SHADER_OUTDIR = $(BUILDDIR)/shaders
ifeq ($(WND_BKND), SDL) ifeq ($(WND_BKND), SDL)
CFLAGS += -DUSE_SDL_WINDOW_BACKEND CFLAGS += -DUSE_SDL_WINDOW_BACKEND
@@ -41,12 +45,12 @@ CXX_UNITY_OBJS = $(patsubst %.cpp, $(CXXOBJDIR)/%.o, $(CXX_UNITY_SRCS))
OBJS = $(COBJS) $(C_UNITY_OBJS) $(CXX_UNITY_OBJS) OBJS = $(COBJS) $(C_UNITY_OBJS) $(CXX_UNITY_OBJS)
OUT_NAME = main OUT_NAME = main
OUT = $(BUILDDIR)/$(OUT_NAME) OUT = $(BUILDDIR)/$(OUT_NAME)
SHADER_OUT = $(SHADER_OUTDIR)/shader.spv
build: $(OUT) build: $(OUT) $(SHADER_OUT)
$(OUT): $(OBJS) $(OUT): $(OBJS)
$(CXX) $(LDFLAGS) -o "$@" $^ $(LDLIBS) $(CXX) $(LDFLAGS) -o "$@" $^ $(LDLIBS)
@cp -r src/shaders $(BUILDDIR)
$(COBJS): $(COBJDIR)/%.o: %.c $(COBJS): $(COBJDIR)/%.o: %.c
@mkdir -p "$(@D)" @mkdir -p "$(@D)"
@@ -60,6 +64,10 @@ $(CXX_UNITY_OBJS): $(CXXOBJDIR)/%.o: %.cpp FORCE
@mkdir -p "$(@D)" @mkdir -p "$(@D)"
$(CXX) $(CXXFLAGS) "$<" -o "$@" $(CXX) $(CXXFLAGS) "$<" -o "$@"
$(SHADER_OUT): $(SHADER_SRC)
@mkdir -p $(SHADER_OUTDIR)
$(SLANGC) $(SHADER_SRC) $(SLANGC_FLAGS) -o $(SHADER_OUT)
run: run:
@cd $(BUILDDIR) && ./$(OUT_NAME) @cd $(BUILDDIR) && ./$(OUT_NAME)