diff options
| -rw-r--r-- | makefile | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -1,12 +1,15 @@ TARGET := red RAYLIB_PREFIX := "./raylib-5.5_linux_amd64" -CC := gcc -CFLAGS = -Wall -Wextra -O0 -I$(RAYLIB_PREFIX)/include -DMAIN_WINDOW_TITLE="\"${TARGET}\"" +CC ?= gcc +CFLAGS ?= -Wall -Wextra -O0 -I$(RAYLIB_PREFIX)/include -DMAIN_WINDOW_TITLE="\"$(TARGET)\"" # LDFLAGS=-v LDLIBS := $(RAYLIB_PREFIX)/lib/libraylib.a -lm SRCS := $(filter-out test_%.c, $(wildcard *.c)) OBJS := $(SRCS:.c=.o) -DEPS := $(SRCS:.c=.d) +DEPDIR := .deps +DEPS := $(addprefix $(DEPDIR)/, $(OBJS:.o=.d)) + +obj_rule = $(CC) $(1) -MMD -MF $(DEPDIR)/$(patsubst %.o,%.d,$@) -c $< -o $@ ifeq ($(DEBUG), 1) CFLAGS += -DDEBUG -ggdb @@ -16,11 +19,14 @@ endif all: $(TARGET) +$(DEPDIR): + mkdir -p $(DEPDIR) + $(TARGET): $(OBJS) $(CC) $(LDFLAGS) -o $(TARGET) $(OBJS) $(LDLIBS) -%.o: %.c $(MAKEFILE_LIST) - $(CC) $(CFLAGS) -MMD -c $< -o $@ +%.o: %.c $(MAKEFILE_LIST) | $(DEPDIR) + $(call obj_rule, $(CFLAGS)) -include $(DEPS) @@ -32,15 +38,15 @@ test: $(TEST_TARGET) TEST_SRCS := $(wildcard test_*.c) TEST_OBJS := $(patsubst %.o,%.test.o,$(filter-out main.o,$(OBJS))) -TEST_DEPS := $(TEST_OBJS:.test.o=.test.d) +TEST_DEPS := $(addprefix $(DEPDIR)/, $(TEST_OBJS:.o=.d)) -include $(TEST_DEPS) -%.test.o: %.c $(MAKEFILE_LIST) - $(CC) $(CFLAGS) $(TEST_CFLAGS) -MMD -c $< -o $@ +%.test.o: %.c $(MAKEFILE_LIST) | $(DEPDIR) + $(call obj_rule, $(CFLAGS) $(TEST_CFLAGS)) $(TEST_TARGET): $(TEST_SRCS) $(TEST_OBJS) $(CC) $(CFLAGS) $(TEST_CFLAGS) $^ -o $@ -lcriterion $(LDLIBS) clean: - rm -rf *.d *.o $(TARGET) $(TEST_TARGET) + rm -rf $(DEPDIR) *.o $(TARGET) $(TEST_TARGET) |
