Build setup
This commit is contained in:
1 parent
beb854b1bc
commit
1f67b92c38
2 files changed
+72
No files matched your search
@@ -0,0 +1,69 @@
|
||||
.PHONY: build FORCE
|
||||
|
||||
KERNEL = $(shell uname -s)
|
||||
MACHINE = $(shell uname -m)
|
||||
PLATFORM = $(KERNEL)_$(MACHINE)
|
||||
CC = clang
|
||||
CXX = clang++
|
||||
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
|
||||
CXXFLAGS = -g -c -Wno-nullability-completeness -DWP_DEBUG_ASSERT
|
||||
LDFLAGS = -g -DWP_DEBUG_ASSERT
|
||||
LDLIBS = -lm
|
||||
WND_BKND = SDL
|
||||
GPU_BKND = Vulkan
|
||||
BUILD_ROOT = .build
|
||||
BUILDDIR = $(BUILD_ROOT)/$(PLATFORM)
|
||||
OBJDIR = $(BUILDDIR)/obj
|
||||
COBJDIR = $(OBJDIR)/c
|
||||
CXXOBJDIR = $(OBJDIR)/cxx
|
||||
|
||||
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,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)
|
||||
|
||||
build: $(OUT)
|
||||
|
||||
$(OUT): $(OBJS)
|
||||
$(CXX) $(LDFLAGS) -o "$@" $^ $(LDLIBS)
|
||||
@cp -r src/shaders $(BUILDDIR)
|
||||
|
||||
$(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 "$@"
|
||||
|
||||
run:
|
||||
@cd $(BUILDDIR) && ./$(OUT_NAME)
|
||||
|
||||
clean:
|
||||
@rm -rf $(BUILD_ROOT)
|
||||
|
||||
FORCE:
|
||||
Reference in new issue
Block a user