From afe64ff4fef9c376f04d5d4eccff273a8f9c3b3e Mon Sep 17 00:00:00 2001 From: Rutherther Date: Wed, 23 Oct 2024 20:23:33 +0200 Subject: [PATCH] fix: Makefile correct dynamic header dependencies --- Makefile | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 2d9064a..69b8fef 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ BINDIR=bin SRCDIR=src INCDIR=include OBJDIR=obj +DEPDIR=$(OBJDIR)/.deps DEVICEDIR=devices/$(DEVICE) GENERALDIR=devices/general @@ -17,8 +18,10 @@ GENERALSRCS=$(wildcard $(GENERALDIR)/*.c) DEVICESRCS=$(wildcard $(DEVICEDIR)/*.c) SRCS=$(PROJSRCS) $(GENERALSRCS) $(DEVICESRCS) -OBJS=$(patsubst %.c,obj/%.o,$(SRCS)) +OBJS=$(patsubst %.c,$(OBJDIR)/%.o,$(SRCS)) +DEPFILES=$(patsubst %.c,$(DEPDIR)/%.d,$(SRCS)) +DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.d CFLAGS=-I$(INCDIR) \ -I$(DEVICEDIR)/$(INCDIR) \ -Ilibs/CMSIS_6/CMSIS/Core/Include \ @@ -31,21 +34,14 @@ CC=arm-none-eabi-gcc LD=arm-none-eabi-ld OPENOCD=openocd -$(BINDIR)/$(APP): $(OBJS) - mkdir -p $(BINDIR) - $(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS) +$(BINDIR)/$(APP): $(OBJS) | $(BINDIR) + $(CC) $^ -o $@ $(CFLAGS) $(LDFLAGS) $(DEPFLAGS) -$(OBJDIR)/src/%.o: $(SRCDIR)/%.c - mkdir -p "$(OBJDIR)/src" - $(CC) -c $< -o $@ $(CFLAGS) - -$(OBJDIR)/$(DEVICEDIR)/%.o: $(DEVICEDIR)/%.c - mkdir -p "$(OBJDIR)/$(DEVICEDIR)" - $(CC) -c $< -o $@ $(CFLAGS) - -$(OBJDIR)/$(GENERALDIR)/%.o: $(GENERALDIR)/%.c - mkdir -p "$(OBJDIR)/$(GENERALDIR)" - $(CC) -c $< -o $@ $(CFLAGS) +%.o : %.c +$(OBJDIR)/%.o: %.c | $(DEPDIR) $(OBJDIR) + mkdir -p "$(dir $@)" + mkdir -p $(dir $(DEPDIR)/$*.d) + $(CC) -c $< -o $@ $(CFLAGS) $(DEPFLAGS) .PHONY: openocd flash clean openocd: @@ -55,11 +51,11 @@ flash: $(BINDIR)/$(APP) $(OPENOCD) -f interface/stlink.cfg -f target/$(TARGET).cfg -c "program $(BINDIR)/$(APP) verify reset exit" clean: - rm -rf $(OBJDIR) $(BINDIR) + rm -rf $(OBJDIR) $(BINDIR) $(DEPDIR) -depend: .depend -.depend: $(SRCS) - rm -f "$@" - $(CC) $(CFLAGS) -MM $^ > "$@" +$(BINDIR): ; mkdir -p $@ +$(OBJDIR): ; mkdir -p $@ +$(DEPDIR): ; mkdir -p $@ -include .depend +$(DEPFILES): +include $(wildcard $(DEPFILES)) -- 2.48.1