Hi, I came across a weird bug in dependency generation: basically, the SUBDIR is sometimes not added.
That seems easy to fix once the offending line is found, but my knowledge in Makefile and git blame does not allow me to see if this is correct or there's an historical reason. Only tested msys2's make, 4.1.90, under Win64, and an out-of-dir build. -- Christophe
From 20e5de4203bff2cf9878385ef195ee6cf355e2e1 Mon Sep 17 00:00:00 2001 From: Christophe Gisquet <christophe.gisq...@gmail.com> Date: Thu, 8 Oct 2015 12:30:51 +0200 Subject: [PATCH] build system: fix dependency generation When trying to build the binary dct-test under MSYS2/Win64, the makefile rule does not have the SUBDIR in the target for its object file. Consequently, modifications to various include files (e.g. C ones) do not trigger a recompilation. When tracing the dependency generating, the dependency generation has this strange content (linebreak inserted): sed -e "/^#.*/d" -e "s,^[[:space:]]*dct\\.o,libavcodec/dct.o," \ > libavcodec/dct-test.d For some reason, the $(*F) has weird content. It looks simpler to use $(@F) instead of $(*F)\\.o, although this was tested on one single version of make. --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 43d1bed..52ff3b0 100755 --- a/configure +++ b/configure @@ -2983,7 +2983,7 @@ target_path='$(CURDIR)' # since the object filename is not given with the -MM flag, the compiler # is only able to print the basename, and we must add the path ourselves -DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)' +DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)' DEPFLAGS='-MM' # find source path -- 2.6.0
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel