CC := gcc CFLAGS := -O0 -g -Wall -Wextra -fanalyzer \ -fsanitize=address -fno-omit-frame-pointer LDFLAGS := -g -fsanitize=address LDLIBS := -lncurses SRC_DIR := src OBJ_DIR := obj BIN_DIR := bin EXE := $(BIN_DIR)/run SRC := $(wildcard $(SRC_DIR)/*.c) OBJ := $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) .PHONY: all clean all: $(EXE) $(EXE): $(OBJ) | $(BIN_DIR) $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ $(BIN_DIR) $(OBJ_DIR): mkdir -p $@ clean: @$(RM) -rv $(BIN_DIR) $(OBJ_DIR) -include $(OBJ:.o=.d)