summaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'makefile')
-rw-r--r--makefile24
1 files changed, 15 insertions, 9 deletions
diff --git a/makefile b/makefile
index cd9559f..9d89398 100644
--- a/makefile
+++ b/makefile
@@ -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)