82 lines
2.4 KiB
Makefile
82 lines
2.4 KiB
Makefile
.PHONY: build FORCE
|
|
|
|
KERNEL = $(shell uname -s)
|
|
MACHINE = $(shell uname -m)
|
|
PLATFORM = $(KERNEL)_$(MACHINE)
|
|
CC = clang
|
|
CXX = clang++
|
|
SLANGC = slangc
|
|
C_SRCS = src/main.c
|
|
C_UNITY_SRCS = src/wapp/wapp.c \
|
|
src/config/config_src.c \
|
|
src/window/window_src.c \
|
|
src/gpu/gpu_c_src.c
|
|
CXX_UNITY_SRCS = src/gpu/gpu_cc_src.cpp
|
|
CFLAGS = -g -c -DWP_DEBUG_ASSERT -DCGLM_DEFINE_PRINTS
|
|
CXXFLAGS = -g -c -Wno-nullability-completeness -DWP_DEBUG_ASSERT
|
|
LDFLAGS = -g -DWP_DEBUG_ASSERT
|
|
LDLIBS = -lm
|
|
WND_BKND = SDL
|
|
GPU_BKND = Vulkan
|
|
SLANGC_FLAGS = -entry vertMain -entry fragMain
|
|
SHADER_SRC = src/shaders/shader.slang
|
|
BUILD_ROOT = .build
|
|
BUILDDIR = $(BUILD_ROOT)/$(PLATFORM)
|
|
OBJDIR = $(BUILDDIR)/obj
|
|
COBJDIR = $(OBJDIR)/c
|
|
CXXOBJDIR = $(OBJDIR)/cxx
|
|
SHADER_OUTDIR = $(BUILDDIR)/shaders
|
|
ASSETS_DIR = assets
|
|
|
|
ifeq ($(WND_BKND), SDL)
|
|
CFLAGS += -DUSE_SDL_WINDOW_BACKEND
|
|
LDLIBS += -lSDL3
|
|
endif
|
|
|
|
ifeq ($(GPU_BKND), Vulkan)
|
|
C_SRCS += vendor/vulkan/include/volk/volk.c
|
|
CFLAGS += -DUSE_VULKAN_RENDER_BACKEND -DVK_NO_PROTOTYPES -Ivendor/vulkan/include
|
|
CXXFLAGS += -DUSE_VULKAN_RENDER_BACKEND -DVK_NO_PROTOTYPES -Ivendor/vulkan/include
|
|
LDFLAGS += -Lvendor/vulkan/lib -Wl,-rpath,$(shell realpath vendor/vulkan/lib)
|
|
endif
|
|
|
|
COBJS = $(patsubst %.c, $(COBJDIR)/%.o, $(C_SRCS))
|
|
C_UNITY_OBJS = $(patsubst %.c, $(COBJDIR)/%.o, $(C_UNITY_SRCS))
|
|
CXX_UNITY_OBJS = $(patsubst %.cpp, $(CXXOBJDIR)/%.o, $(CXX_UNITY_SRCS))
|
|
OBJS = $(COBJS) $(C_UNITY_OBJS) $(CXX_UNITY_OBJS)
|
|
OUT_NAME = main
|
|
OUT = $(BUILDDIR)/$(OUT_NAME)
|
|
SHADER_OUT = $(SHADER_OUTDIR)/shader.spv
|
|
|
|
build: $(OUT) $(SHADER_OUT) copy-assets
|
|
|
|
$(OUT): $(OBJS)
|
|
$(CXX) $(LDFLAGS) -o "$@" $^ $(LDLIBS)
|
|
|
|
$(COBJS): $(COBJDIR)/%.o: %.c
|
|
@mkdir -p "$(@D)"
|
|
$(CC) $(CFLAGS) "$<" -o "$@"
|
|
|
|
$(C_UNITY_OBJS): $(COBJDIR)/%.o: %.c FORCE
|
|
@mkdir -p "$(@D)"
|
|
$(CC) $(CFLAGS) "$<" -o "$@"
|
|
|
|
$(CXX_UNITY_OBJS): $(CXXOBJDIR)/%.o: %.cpp FORCE
|
|
@mkdir -p "$(@D)"
|
|
$(CXX) $(CXXFLAGS) "$<" -o "$@"
|
|
|
|
$(SHADER_OUT): $(SHADER_SRC)
|
|
@mkdir -p $(SHADER_OUTDIR)
|
|
$(SLANGC) $(SHADER_SRC) $(SLANGC_FLAGS) -o $(SHADER_OUT)
|
|
|
|
copy-assets:
|
|
@cp -r $(ASSETS_DIR) $(BUILDDIR)
|
|
|
|
run:
|
|
@cd $(BUILDDIR) && VK_LAYER_MESSAGE_ID_FILTER=0x8adbf7e3,0x8b6f2f9a ./$(OUT_NAME)
|
|
|
|
clean:
|
|
@rm -rf $(BUILD_ROOT)
|
|
|
|
FORCE:
|