CC=g++ C_FLAGS=-g -Wall -Wextra -O0 -Wno-unused-function -MMD -MP VAL_FLAGS=--leak-check=full --show-leak-kinds=all --track-origins=yes -s DIR_SRC=src DIR_INC=include DIR_BUILD=build DEPS=SDL3 OUTBIN=$(DIR_BUILD)/bin/main SRCS=$(shell find $(DIR_SRC)/ -type f -name '*.cpp') OBJS=$(patsubst $(DIR_SRC)/%.cpp,$(DIR_BUILD)/obj/%.o,$(SRCS)) DEPMF=$(patsubst $(DIR_SRC)/%.cpp,$(DIR_BUILD)/obj/%.d,$(SRCS)) DEPS_EXT=$(patsubst %,-l%,$(DEPS)) INCS_EXT=$(patsubst %,-I%,$(DIR_INC)) .PHONY: all build run dbg val clean test clean-tests all: build build: $(OUTBIN) rebuild: clean .WAIT build run: $(OUTBIN) ./i3bgwin $(OUTBIN) {windowid} runn: $(OUTBIN) $(OUTBIN) $(OUTBIN): $(OBJS) @mkdir -p $(@D) $(CC) $(OBJS) $(DEPS_EXT) -o $@ $(DIR_BUILD)/obj/%.o: $(DIR_SRC)/%.cpp @mkdir -p $(@D) $(CC) $(C_FLAGS) $(INCS_EXT) -c $< -o $@ -include $(DEPMF) dbg: $(DBG_BIN) gdb $(GDB_FLAGS) ./$(OUTBIN) val: $(DBG_BIN) valgrind $(VAL_FLAGS) ./$(OUTBIN) clean: $(RM) -r $(DIR_BUILD)