Fix dependency tracking for objects in subdirectories
authorTom Tromey <tom@tromey.com>
Thu, 30 Nov 2017 18:49:27 +0000 (11:49 -0700)
committerTom Tromey <tom@tromey.com>
Fri, 1 Dec 2017 14:56:11 +0000 (07:56 -0700)
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-12-01  Tom Tromey  <tom@tromey.com>

* Makefile.in (all_deps_files): New variable.
Include .Po files using all_deps_files.

gdb/ChangeLog
gdb/Makefile.in

index 6e6b4a6d55db41df5f5c61176543717c6fd4e008..a51b0f764cb7c56439976697ff2646515c64aacf 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-01  Tom Tromey  <tom@tromey.com>
+
+       * Makefile.in (all_deps_files): New variable.
+       Include .Po files using all_deps_files.
+
 2017-12-01  Joel Brobecker  <brobecker@adacore.com>
 
        * MAINTAINERS: Update list of maintainers, moving those who
index 284559b030d9d0d7a96e166328363f5707260342..58230980366587d0a1189f78f1b77b8308c0083d 100644 (file)
@@ -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