Build setup

This commit is contained in:
abdelrahman committed 2026-10-20 05:30:47 +01:00
1 parent beb854b1bc
commit 1f67b92c38
2 files changed
+72

No files matched your search

+69
View File
@@ -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:
Executable
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
time bear -a -- make -j6