[RFA] Fix dependency tracking for objects in subdirectories
Commit Message
On irc, Pedro pointed out that dependencies for objects in
subdirectories didn't seem to be working.
The bug was that the "-include" for .deps files was using the wrong file
name for subdirectory objects; e.g., for cli/cli-decode.o it was trying
to open .deps/cli/cli-decode.o, whereas the correct file is
cli/.deps/cli-decode.o.
This patch changes how the dep files are found. Tested by touching a
source file and rebuilding cli/cli-decode.o.
2017-11-30 Tom Tromey <tom@tromey.com>
* Makefile.in (all_deps_files): New variable.
Include .Po files using all_deps_files.
---
gdb/ChangeLog | 5 +++++
gdb/Makefile.in | 6 +++++-
2 files changed, 10 insertions(+), 1 deletion(-)
Comments
On 11/30/2017 06:52 PM, Tom Tromey wrote:
> On irc, Pedro pointed out that dependencies for objects in
> subdirectories didn't seem to be working.
>
> The bug was that the "-include" for .deps files was using the wrong file
> name for subdirectory objects; e.g., for cli/cli-decode.o it was trying
> to open .deps/cli/cli-decode.o, whereas the correct file is
> cli/.deps/cli-decode.o.
>
> This patch changes how the dep files are found. Tested by touching a
> source file and rebuilding cli/cli-decode.o.
>
> 2017-11-30 Tom Tromey <tom@tromey.com>
>
> * Makefile.in (all_deps_files): New variable.
> Include .Po files using all_deps_files.
OK.
Thanks,
Pedro Alves
@@ -1,3 +1,8 @@
+2017-11-30 Tom Tromey <tom@tromey.com>
+
+ * Makefile.in (all_deps_files): New variable.
+ Include .Po files using all_deps_files.
+
2017-11-29 Tom Tromey <tom@tromey.com>
* Makefile.in (distclean): Handle the case where rmdir fails.
@@ -2644,6 +2644,10 @@ endif
all_object_files = gdb.o $(LIBGDB_OBS) gdbtk-main.o \
test-cp-name-parser.o
+# All the .deps files to include.
+all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
+ $(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
+
# Ensure that generated files are created early. Use order-only
# dependencies if available. They require GNU make 3.80 or newer,
# and the .VARIABLES variable was introduced at the same time.
@@ -2654,7 +2658,7 @@ $(all_object_files) : $(generated_files)
endif
# Dependencies.
--include $(patsubst %.o, $(DEPDIR)/%.Po, $(all_object_files))
+-include $(all_deps_files)
# Disable implicit make rules.
include $(srcdir)/disable-implicit-rules.mk