diff --git a/Makefile b/Makefile index db477d7184..9b2ddf5ae0 100644 --- a/Makefile +++ b/Makefile @@ -411,7 +411,7 @@ else endif endif -$(LIBOBJ): config.mk *.h include/capstone/*.h +$(LIBOBJ): config.mk $(LIBOBJ_ARM): $(DEP_ARM) $(LIBOBJ_ARM64): $(DEP_ARM64) @@ -449,6 +449,12 @@ else $(generate-pkgcfg) endif +# create a list of auto dependencies +AUTODEPS:= $(patsubst %.o,%.d, $(LIBOBJ)) + +# include by auto dependencies +-include $(AUTODEPS) + install: $(PKGCFGF) $(ARCHIVE) $(LIBRARY) mkdir -p $(LIBDIR) $(call install-library,$(LIBDIR)) @@ -472,6 +478,7 @@ clean: rm -f $(LIBOBJ) rm -f $(BLDIR)/lib$(LIBNAME).* $(BLDIR)/$(LIBNAME).pc rm -f $(PKGCFGF) + rm -f $(AUTODEPS) [ ${ANDROID} -eq 1 ] && rm -rf android-ndk-* $(MAKE) -C cstool clean diff --git a/cstool/Makefile b/cstool/Makefile index 9b28e43232..f709d3a79c 100644 --- a/cstool/Makefile +++ b/cstool/Makefile @@ -37,6 +37,7 @@ endif clean: ${RM} -rf *.o $(TARGET) + ${RM} -f *.d %.o: %.c ifeq ($(V), 0) diff --git a/functions.mk b/functions.mk index d946cd34e6..d734ce5d51 100644 --- a/functions.mk +++ b/functions.mk @@ -2,6 +2,7 @@ # Common functions used by Makefile & tests/Makefile define compile + @$(CC) -MM -MP -MT $@ -MT $(@:.o=.d) $(CFLAGS) $< > $(@:.o=.d) ${CC} ${CFLAGS} -c $< -o $@ endef diff --git a/suite/fuzz/Makefile b/suite/fuzz/Makefile index 4cd958690c..e0c0ef2b8a 100644 --- a/suite/fuzz/Makefile +++ b/suite/fuzz/Makefile @@ -53,6 +53,7 @@ all: $(REPRODUCERMC) $(REPRODUCERBIN) $(FUZZERBIN) $(PLATFORMDECODE) clean: rm -rf fuzz_harness $(OBJS) $(PLATFORMDECODE) $(REPRODUCERMC) $(REPRODUCERBIN) $(FUZZERBIN) $(OBJDIR)/lib$(LIBNAME).* $(OBJDIR)/$(LIBNAME).* + rm -f *.d $(OBJDIR)/*.d $(REPRODUCERMC): fuzz_disasm.o drivermc.o platform.o @mkdir -p $(@D) diff --git a/tests/Makefile b/tests/Makefile index e514c273ea..86a08e604f 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -137,6 +137,7 @@ all: $(BINARY) clean: rm -rf $(OBJS) $(BINARY) $(TESTDIR)/*.exe $(TESTDIR)/*.static $(OBJDIR)/lib$(LIBNAME).* $(OBJDIR)/$(LIBNAME).* + rm -f *.d $(TESTDIR)/*.d $(OBJDIR)/*.d # remove orphan files due to renaming from test.c to test_basic.c rm -rf $(TESTDIR)/test.o $(TESTDIR)/test.exe $(TESTDIR)/test.static $(TESTDIR)/test