-# In-process agent object rules
-tracepoint-ipa.o: tracepoint.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o tracepoint-ipa.o
-utils-ipa.o: utils.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o utils-ipa.o
-remote-utils-ipa.o: remote-utils.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o remote-utils-ipa.o
-regcache-ipa.o: regcache.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o regcache-ipa.o
-i386-linux-ipa.o : i386-linux.c $(regdef_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o i386-linux-ipa.o
-linux-i386-ipa.o: linux-i386-ipa.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o linux-i386-ipa.o
-linux-amd64-ipa.o: linux-amd64-ipa.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o linux-amd64-ipa.o
-amd64-linux-ipa.o : amd64-linux.c $(regdef_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o amd64-linux-ipa.o
-
-event-loop.o: event-loop.c $(server_h)
-hostio.o: hostio.c $(server_h)
-hostio-errno.o: hostio-errno.c $(server_h)
-inferiors.o: inferiors.c $(server_h)
-mem-break.o: mem-break.c $(server_h)
-proc-service.o: proc-service.c $(server_h) $(gdb_proc_service_h)
-regcache.o: regcache.c $(server_h) $(regdef_h)
-remote-utils.o: remote-utils.c terminal.h $(server_h)
-server.o: server.c $(server_h)
-target.o: target.c $(server_h)
-thread-db.o: thread-db.c $(server_h) $(linux_low_h) $(gdb_proc_service_h)
-tracepoint.o: tracepoint.c $(server_h)
-utils.o: utils.c $(server_h)
-gdbreplay.o: gdbreplay.c config.h
-
-signals.o: ../common/signals.c $(server_h) $(signals_def)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $< -DGDBSERVER
-
-# We build memmem.c without -Werror because this file is not under
-# our control. On LynxOS, the compiler generates some warnings
-# because str-two-way.h uses a constant (MAX_SIZE) whose definition
-# makes it ambiguous whether it is signed or unsigned ("warning: this
-# decimal constant is unsigned only in ISO C90").
-memmem.o: ../gnulib/memmem.c
- $(CC) -o memmem.o -c $(CPPFLAGS) $(INTERNAL_WARN_CFLAGS) $<
-
-# We build vasprintf with -DHAVE_CONFIG_H because we want that unit to
-# include our config.h file. Otherwise, some system headers do not get
-# included, and the compiler emits a warning about implicitly defined
-# functions (missing declaration).
-vasprintf.o: $(srcdir)/../../libiberty/vasprintf.c
- $(CC) -o vasprintf.o -c $(CPPFLAGS) $(INTERNAL_CFLAGS) -DHAVE_CONFIG_H $<
-vsnprintf.o: $(srcdir)/../../libiberty/vsnprintf.c
- $(CC) -o vsnprintf.o -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-i386_low_h = $(srcdir)/i386-low.h
-
-i386-low.o: i386-low.c $(i386_low_h) $(server_h) $(target_h)
-
-i387-fp.o: i387-fp.c $(server_h)
-
-linux-low.o: linux-low.c $(linux_low_h) $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $< @USE_THREAD_DB@
-
-linux-arm-low.o: linux-arm-low.c $(linux_low_h) $(server_h) \
- $(gdb_proc_service_h)
-linux-cris-low.o: linux-cris-low.c $(linux_low_h) $(server_h)
-linux-crisv32-low.o: linux-crisv32-low.c $(linux_low_h) $(server_h)
-linux-ia64-low.o: linux-ia64-low.c $(linux_low_h) $(server_h)
-linux-m32r-low.o: linux-m32r-low.c $(linux_low_h) $(server_h)
-linux-mips-low.o: linux-mips-low.c $(linux_low_h) $(server_h) \
- $(gdb_proc_service_h)
-linux-ppc-low.o: linux-ppc-low.c $(linux_low_h) $(server_h)
-linux-s390-low.o: linux-s390-low.c $(linux_low_h) $(server_h)
-linux-sh-low.o: linux-sh-low.c $(linux_low_h) $(server_h)
-linux-x86-low.o: linux-x86-low.c $(linux_low_h) $(server_h) \
- $(gdb_proc_service_h) $(i386_low_h)
-linux-xtensa-low.o: linux-xtensa-low.c xtensa-xtregs.c $(linux_low_h) $(server_h)
-
-lynx-low.o: lynx-low.c $(server_h) $(target_h) $(lynx_low_h)
-lynx-ppc-low.o: lynx-ppc-low.c $(server_h) $(lynx_low_h)
-nto-low.o: nto-low.c $(server_h) $(nto_low_h)
-nto-x86-low.o: nto-x86-low.c $(server_h) $(nto_low_h) $(regdef_h) $(regcache_h)
-
-win32_low_h = $(srcdir)/win32-low.h
-
-win32-low.o: win32-low.c $(win32_low_h) $(server_h) $(regdef_h) $(regcache_h)
-
-win32-arm-low.o: win32-arm-low.c $(win32_low_h) $(server_h)
-win32-i386-low.o: win32-i386-low.c $(win32_low_h) $(server_h) $(i386_low_h)
-
-spu-low.o: spu-low.c $(server_h)
-
-reg-arm.o : reg-arm.c $(regdef_h)
-reg-arm.c : $(srcdir)/../regformats/reg-arm.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-arm.dat reg-arm.c
-arm-with-iwmmxt.o : arm-with-iwmmxt.c $(regdef_h)
-arm-with-iwmmxt.c : $(srcdir)/../regformats/arm-with-iwmmxt.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-iwmmxt.dat arm-with-iwmmxt.c
-arm-with-vfpv2.o : arm-with-vfpv2.c $(regdef_h)
-arm-with-vfpv2.c : $(srcdir)/../regformats/arm-with-vfpv2.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-vfpv2.dat arm-with-vfpv2.c
-arm-with-vfpv3.o : arm-with-vfpv3.c $(regdef_h)
-arm-with-vfpv3.c : $(srcdir)/../regformats/arm-with-vfpv3.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-vfpv3.dat arm-with-vfpv3.c
-arm-with-neon.o : arm-with-neon.c $(regdef_h)
-arm-with-neon.c : $(srcdir)/../regformats/arm-with-neon.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-neon.dat arm-with-neon.c
-reg-cris.o : reg-cris.c $(regdef_h)
-reg-cris.c : $(srcdir)/../regformats/reg-cris.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-cris.dat reg-cris.c
-reg-crisv32.o : reg-crisv32.c $(regdef_h)
-reg-crisv32.c : $(srcdir)/../regformats/reg-crisv32.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-crisv32.dat reg-crisv32.c
-i386.o : i386.c $(regdef_h)
-i386.c : $(srcdir)/../regformats/i386/i386.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386.dat i386.c
-i386-linux.o : i386-linux.c $(regdef_h)
-i386-linux.c : $(srcdir)/../regformats/i386/i386-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-linux.dat i386-linux.c
-i386-avx.o : i386-avx.c $(regdef_h)
-i386-avx.c : $(srcdir)/../regformats/i386/i386-avx.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx.dat i386-avx.c
-i386-avx-linux.o : i386-avx-linux.c $(regdef_h)
-i386-avx-linux.c : $(srcdir)/../regformats/i386/i386-avx-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-avx-linux.dat i386-avx-linux.c
-i386-mmx.o : i386-mmx.c $(regdef_h)
-i386-mmx.c : $(srcdir)/../regformats/i386/i386-mmx.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mmx.dat i386-mmx.c
-i386-mmx-linux.o : i386-mmx-linux.c $(regdef_h)
-i386-mmx-linux.c : $(srcdir)/../regformats/i386/i386-mmx-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/i386-mmx-linux.dat i386-mmx-linux.c
-reg-ia64.o : reg-ia64.c $(regdef_h)
-reg-ia64.c : $(srcdir)/../regformats/reg-ia64.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-ia64.dat reg-ia64.c
-reg-m32r.o : reg-m32r.c $(regdef_h)
-reg-m32r.c : $(srcdir)/../regformats/reg-m32r.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-m32r.dat reg-m32r.c
-reg-m68k.o : reg-m68k.c $(regdef_h)
-reg-m68k.c : $(srcdir)/../regformats/reg-m68k.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-m68k.dat reg-m68k.c
-reg-cf.o : reg-cf.c $(regdef_h)
-reg-cf.c : $(srcdir)/../regformats/reg-cf.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-cf.dat reg-cf.c
-mips-linux.o : mips-linux.c $(regdef_h)
-mips-linux.c : $(srcdir)/../regformats/mips-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/mips-linux.dat mips-linux.c
-mips64-linux.o : mips64-linux.c $(regdef_h)
-mips64-linux.c : $(srcdir)/../regformats/mips64-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/mips64-linux.dat mips64-linux.c
-powerpc-32.o : powerpc-32.c $(regdef_h)
-powerpc-32.c : $(srcdir)/../regformats/rs6000/powerpc-32.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-32.dat powerpc-32.c
-powerpc-32l.o : powerpc-32l.c $(regdef_h)
-powerpc-32l.c : $(srcdir)/../regformats/rs6000/powerpc-32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-32l.dat powerpc-32l.c
-powerpc-altivec32l.o : powerpc-altivec32l.c $(regdef_h)
-powerpc-altivec32l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat powerpc-altivec32l.c
-powerpc-cell32l.o : powerpc-cell32l.c $(regdef_h)
-powerpc-cell32l.c : $(srcdir)/../regformats/rs6000/powerpc-cell32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-cell32l.dat powerpc-cell32l.c
-powerpc-vsx32l.o : powerpc-vsx32l.c $(regdef_h)
-powerpc-vsx32l.c : $(srcdir)/../regformats/rs6000/powerpc-vsx32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-vsx32l.dat powerpc-vsx32l.c
-powerpc-isa205-32l.o : powerpc-isa205-32l.c $(regdef_h)
-powerpc-isa205-32l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-32l.dat powerpc-isa205-32l.c
-powerpc-isa205-altivec32l.o : powerpc-isa205-altivec32l.c $(regdef_h)
-powerpc-isa205-altivec32l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec32l.dat powerpc-isa205-altivec32l.c
-powerpc-isa205-vsx32l.o : powerpc-isa205-vsx32l.c $(regdef_h)
-powerpc-isa205-vsx32l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx32l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx32l.dat powerpc-isa205-vsx32l.c
-powerpc-e500l.o : powerpc-e500l.c $(regdef_h)
-powerpc-e500l.c : $(srcdir)/../regformats/rs6000/powerpc-e500l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-e500l.dat powerpc-e500l.c
-powerpc-64l.o : powerpc-64l.c $(regdef_h)
-powerpc-64l.c : $(srcdir)/../regformats/rs6000/powerpc-64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-64l.dat powerpc-64l.c
-powerpc-altivec64l.o : powerpc-altivec64l.c $(regdef_h)
-powerpc-altivec64l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat powerpc-altivec64l.c
-powerpc-cell64l.o : powerpc-cell64l.c $(regdef_h)
-powerpc-cell64l.c : $(srcdir)/../regformats/rs6000/powerpc-cell64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-cell64l.dat powerpc-cell64l.c
-powerpc-vsx64l.o : powerpc-vsx64l.c $(regdef_h)
-powerpc-vsx64l.c : $(srcdir)/../regformats/rs6000/powerpc-vsx64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-vsx64l.dat powerpc-vsx64l.c
-powerpc-isa205-64l.o : powerpc-isa205-64l.c $(regdef_h)
-powerpc-isa205-64l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-64l.dat powerpc-isa205-64l.c
-powerpc-isa205-altivec64l.o : powerpc-isa205-altivec64l.c $(regdef_h)
-powerpc-isa205-altivec64l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-altivec64l.dat powerpc-isa205-altivec64l.c
-powerpc-isa205-vsx64l.o : powerpc-isa205-vsx64l.c $(regdef_h)
-powerpc-isa205-vsx64l.c : $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx64l.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-isa205-vsx64l.dat powerpc-isa205-vsx64l.c
-s390-linux32.o : s390-linux32.c $(regdef_h)
-s390-linux32.c : $(srcdir)/../regformats/s390-linux32.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux32.dat s390-linux32.c
-s390-linux64.o : s390-linux64.c $(regdef_h)
-s390-linux64.c : $(srcdir)/../regformats/s390-linux64.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux64.dat s390-linux64.c
-s390x-linux64.o : s390x-linux64.c $(regdef_h)
-s390x-linux64.c : $(srcdir)/../regformats/s390x-linux64.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-linux64.dat s390x-linux64.c
-reg-sh.o : reg-sh.c $(regdef_h)
-reg-sh.c : $(srcdir)/../regformats/reg-sh.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-sh.dat reg-sh.c
-reg-sparc64.o : reg-sparc64.c $(regdef_h)
-reg-sparc64.c : $(srcdir)/../regformats/reg-sparc64.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-sparc64.dat reg-sparc64.c
-reg-spu.o : reg-spu.c $(regdef_h)
-reg-spu.c : $(srcdir)/../regformats/reg-spu.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-spu.dat reg-spu.c
-amd64.o : amd64.c $(regdef_h)
-amd64.c : $(srcdir)/../regformats/i386/amd64.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64.dat amd64.c
-amd64-linux.o : amd64-linux.c $(regdef_h)
-amd64-linux.c : $(srcdir)/../regformats/i386/amd64-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-linux.dat amd64-linux.c
-amd64-avx.o : amd64-avx.c $(regdef_h)
-amd64-avx.c : $(srcdir)/../regformats/i386/amd64-avx.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx.dat amd64-avx.c
-amd64-avx-linux.o : amd64-avx-linux.c $(regdef_h)
-amd64-avx-linux.c : $(srcdir)/../regformats/i386/amd64-avx-linux.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/amd64-avx-linux.dat amd64-avx-linux.c
-reg-xtensa.o : reg-xtensa.c $(regdef_h)
-reg-xtensa.c : $(srcdir)/../regformats/reg-xtensa.dat $(regdat_sh)
- $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-xtensa.dat reg-xtensa.c
+IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(COMPILE.post)
+
+# Rules for special cases.
+
+ax-ipa.o: ax.c
+ $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
+ $(POSTCOMPILE)
+
+ax.o: ax.c
+ $(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
+ $(POSTCOMPILE)
+
+# Rules for objects that go in the in-process agent.
+
+arch/%-ipa.o: ../arch/%.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+common/%-ipa.o: ../common/%.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+%-ipa.o: %-generated.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+%-ipa.o: %.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
+# Therefore, this one needs to be before "%.o: %.c" for it to be considered for
+# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.
+#
+# Later versions of GNU Make choose the rule with the shortest stem, so it would
+# work in any order.
+
+%-ipa.o: %-ipa.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+# Rules for objects that go in the gdbserver binary.
+
+arch/%.o: ../arch/%.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
+common/%.o: ../common/%.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
+%.o: %-generated.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
+%.o: %.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
+%.o: ../nat/%.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
+%.o: ../target/%.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
+# Rules for register format descriptions. Suffix destination files with
+# -generated to identify and clean them easily.
+
+%-generated.c: ../regformats/%.dat | $(regdat_sh)
+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
+
+%-generated.c: ../regformats/arm/%.dat | $(regdat_sh)
+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
+
+%-generated.c: ../regformats/i386/%.dat | $(regdat_sh)
+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
+
+%-generated.c: ../regformats/rs6000/%.dat | $(regdat_sh)
+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
+
+#
+# Dependency tracking.
+#
+
+ifeq ($(DEPMODE),depmode=gcc3)
+# Note that we put the dependencies into a .Tpo file, then move them
+# into place if the compile succeeds. We need this because gcc does
+# not atomically write the dependency output file.
+override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
+ -MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo
+override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \
+ $(@D)/$(DEPDIR)/$(basename $(@F)).Po
+else
+override COMPILE.pre = source='$<' object='$@' libtool=no \
+ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \
+ $(CXX) -x c++ $(CXX_DIALECT)
+# depcomp handles atomicity for us, so we don't need a postcompile
+# step.
+override POSTCOMPILE =
+endif
+
+# A list of all the objects we might care about in this build, for
+# dependency tracking.
+all_object_files = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS)
+
+# 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.
+ifdef .VARIABLES
+$(all_object_files): | $(generated_files)
+else
+$(all_object_files) : $(generated_files)
+endif
+
+# All the .deps files to include.
+all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
+ $(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
+
+# Dependencies.
+-include $(all_deps_files)
+
+# Disable implicit make rules.
+include $(srcdir)/../disable-implicit-rules.mk
+
+# Do not delete intermediate files (e.g. *-generated.c).
+.SECONDARY:
+