When the header files are modified, the compiled objects are not going to be recompiled because the header files are not marked as a dependency for the objects. - Instruct the compiler to generate dependency files. - Include those files from src/Makefile. Ensure if any changes are made, files that depend on the changes are recompiled. Suggested-by: Ammar Faizi <ammarfaizi2@xxxxxxxxxxx> Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@xxxxxxxxxxx> --- src/Makefile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Makefile b/src/Makefile index f19d45e..bb165fa 100644 --- a/src/Makefile +++ b/src/Makefile @@ -43,19 +43,20 @@ else liburing_srcs += syscall.c endif +override CPPFLAGS += -MT "$@" -MMD -MP -MF "$@.d" liburing_objs := $(patsubst %.c,%.ol,$(liburing_srcs)) liburing_sobjs := $(patsubst %.c,%.os,$(liburing_srcs)) -$(liburing_srcs): syscall.h lib.h - -$(liburing_objs) $(liburing_sobjs): include/liburing/io_uring.h - %.os: %.c $(QUIET_CC)$(CC) $(CPPFLAGS) $(SO_CFLAGS) -c -o $@ $< %.ol: %.c $(QUIET_CC)$(CC) $(CPPFLAGS) $(L_CFLAGS) -c -o $@ $< +# Include compiler generated dependency files. +-include $(liburing_objs:%=%.d) +-include $(liburing_sobjs:%=%.d) + AR ?= ar RANLIB ?= ranlib liburing.a: $(liburing_objs) @@ -78,8 +79,6 @@ ifeq ($(ENABLE_SHARED),1) ln -sf $(relativelibdir)$(libname) $(libdevdir)/liburing.so endif -$(liburing_objs): include/liburing.h - clean: @rm -f $(all_targets) $(liburing_objs) $(liburing_sobjs) $(soname).new @rm -f *.so* *.a *.o -- 2.25.1