From: Tom Tromey <tromey@redhat.com>
To: gdb-patches@sourceware.org
Subject: RFC: automatic dependency tracking for gdbserver
Date: Mon, 03 Dec 2012 21:18:00 -0000 [thread overview]
Message-ID: <87r4n6vnqx.fsf@fleche.redhat.com> (raw)
This patch applies the same automatic dependency tracking logic that gdb
uses to gdbserver.
The downside of this patch is that gdbserver dependencies will not be
tracked unless the developer is using GNU make. On the other hand,
we've had this same code in gdb for several years without any
complaints.
Comments?
Tom
2012-12-03 Tom Tromey <tromey@redhat.com>
* Makefile.in (DEPMODE, DEPDIR, depcomp, COMPILE.pre)
(COMPILE.post, COMPILE, POSTCOMPILE, IPAGENT_COMPILE): New
macros.
(.c.o): Rewrite.
(ax-ipa.o, tracepoint-ipa.o, utils-ipa.o, format-ipa.o)
(common-utils-ipa.o, remote-utils-ipa.o, regcache-ipa.o)
(i386-linux-ipa.o, linux-i386-ipa.o, linux-amd64-ipa.o)
(amd64-linux-ipa.o, ax.o): Rewrite.
(event-loop.o, hostio.o, hostio-errno.o, inferiors.o, mem-break.o)
(proc-service.o, regcache.o, remote-utils.o, server.o, target.o)
(thread-db.o, tracepoint.o, utils.o, gdbreplay.o, dll.o): Remove.
(signals.o, linux-procfs.o, linux-ptrace.o, common-utils.o, vec.o)
(gdb_vecs.o, xml-utils.o, linux-osdata.o, ptid.o, buffer.o)
(format.o, agent.o, vasprintf.o, vsnprintf.o): Rewrite.
(i386-low.o, i387-fp.o, linux-low.o, linux-arm-low.o)
(linux-bfin-low.o, linux-cris-low.o, linux-crisv32-low.o)
(linux-ia64-low.o, linux-m32r-low.o, linux-mips-low.o)
(linux-ppc-low.o, linux-s390-low.o, linux-sh-low.o)
(linux-tic6x-low.o, linux-x86-low.o, linux-xtensa-low.o)
(linux-tile-low.o, lynx-low.o, lynx-ppc-low.o, nto-low.o)
(nto-x86-low.o, linux-low.o, win32-low.o, win32-arm-low.o)
(win32-i386-low.o, spu-low.o, reg-arm.o, arm-with-iwmmxt.o)
(arm-with-vfpv2.o, arm-with-vfpv3.o, arm-with-neon.o, reg-bfin.o)
(reg-cris.o, reg-crisv32.o, i386.o, i386-linux.o, i386-avx.o)
(i386-avx-linux.o, i386-mmx.o, i386-mmx-linux.o, reg-ia64.o)
(reg-m32r.o, reg-m68k.o, reg-cf.o, mips-linux.o, mips-dsp-linux.o)
(mips64-linux.o, mips64-dsp-linux.o, powerpc-32.o, powerpc-32l.o)
(powerpc-altivec32l.o, powerpc-cell32l.o, powerpc-vsx32l.o)
(powerpc-isa205-32l.o, powerpc-isa205-altivec32l.o)
(powerpc-isa205-vsx32l.o, powerpc-e500l.o, powerpc-64l.o)
(powerpc-altivec64l.o, powerpc-cell64l.o, powerpc-vsx64l.o)
(powerpc-isa205-64l.o, powerpc-isa205-altivec64l.o)
(powerpc-isa205-vsx64l.o, s390-linux32.o, s390-linux32v1.o)
(s390-linux32v2.o, s390-linux64.o, s390-linux64v1.o)
(s390-linux64v2.o, s390x-linux64.o, s390x-linux64v1.o)
(s390x-linux64v2.o, tic6x-c64xp-linux.o, tic6x-c64x-linux.o)
(tic6x-c62x-linux.o, reg-sh.o, reg-sparc64.o, reg-spu.o, amd64.o)
(amd64-linux.o, amd64-avx.o, amd64-avx-linux.o, x32.o)
(x32-linux.o, x32-avx.o, x32-avx-linux.o, reg-xtensa.o)
(reg-tilegx.o): Remove.
(all_object_files): New macro.
Include .deps files.
* aclocal.m4, configure: Rebuild.
* configure.ac: Invoke ZW_CREATE_DEPDIR,
ZW_PROG_COMPILER_DEPENDENCIES. Compute GMAKE condition.
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index fc4fd1d..872202e 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -51,6 +51,18 @@ RANLIB = @RANLIB@
CC = @CC@
+# Dependency tracking information.
+DEPMODE = @CCDEPMODE@
+DEPDIR = @DEPDIR@
+depcomp = $(SHELL) $(srcdir)/../depcomp
+
+# Note that these are overridden by GNU make-specific code below if
+# GNU make is used. The overrides implement dependency tracking.
+COMPILE.pre = $(CC)
+COMPILE.post = -c -o $@
+COMPILE = $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
+POSTCOMPILE = @true
+
# Directory containing source files. Don't clean up the spacing,
# this exact string is matched for by the "configure" script.
srcdir = @srcdir@
@@ -216,10 +228,9 @@ FLAGS_TO_PASS = \
# All generated files which can be included by another file.
generated_files = config.h $(GNULIB_H)
-# Prevent Sun make from putting in the machine type. Setting
-# TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
.c.o:
- ${CC} -c ${INTERNAL_CFLAGS} $<
+ $(COMPILE) $<
+ $(POSTCOMPILE)
all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
@$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
@@ -453,325 +464,268 @@ IPAGENT_CFLAGS = $(CPPFLAGS) $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
-fPIC -DIN_PROCESS_AGENT \
-fvisibility=hidden
+IPAGENT_COMPILE = $(COMPILE.pre) $(IPAGENT_CFLAGS) $(COMPILE.post)
+
# In-process agent object rules
-ax-ipa.o: ax.c $(server_h) $(ax_h) $(srcdir)/../common/ax.def
- $(CC) -c $(IPAGENT_CFLAGS) $(WARN_CFLAGS_NO_FORMAT) $< -o ax-ipa.o
-tracepoint-ipa.o: tracepoint.c $(server_h) ${ax_h}
- $(CC) -c $(IPAGENT_CFLAGS) $< -o tracepoint-ipa.o
-utils-ipa.o: utils.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o utils-ipa.o
-format-ipa.o: ../common/format.c $(server_h) ${ax_h}
- $(CC) -c $(IPAGENT_CFLAGS) $< -o format-ipa.o
-common-utils-ipa.o: ../common/common-utils.c $(server_h)
- $(CC) -c $(IPAGENT_CFLAGS) $< -o common-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
-
-ax.o: ax.c $(server_h) $(ax_h) $(srcdir)/../common/ax.def
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $(WARN_CFLAGS_NO_FORMAT) $<
-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) $(gdbthread_h)
-mem-break.o: mem-break.c $(server_h) $(ax_h)
-proc-service.o: proc-service.c $(server_h) $(gdb_proc_service_h)
-regcache.o: regcache.c $(server_h) $(regdef_h) $(gdbthread_h)
-remote-utils.o: remote-utils.c terminal.h $(server_h) $(gdbthread_h)
-server.o: server.c $(server_h) $(agent_h) $(gdbthread_h)
-target.o: target.c $(server_h)
-thread-db.o: thread-db.c $(server_h) $(linux_low_h) $(gdb_proc_service_h) \
- $(gdb_thread_db_h) $(gdb_vecs_h)
-tracepoint.o: tracepoint.c $(server_h) $(ax_h) $(agent_h) $(gdbthread_h)
-utils.o: utils.c $(server_h)
-gdbreplay.o: gdbreplay.c config.h
-dll.o: dll.c $(server_h)
-
-signals.o: ../common/signals.c $(server_h) $(signals_def)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-linux-procfs.o: ../common/linux-procfs.c $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-linux-ptrace.o: ../common/linux-ptrace.c $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-common-utils.o: ../common/common-utils.c $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-vec.o: ../common/vec.c $(vec_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-gdb_vecs.o: ../common/gdb_vecs.c $(vec_h) $(gdb_vecs_h) $(host_defs_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-xml-utils.o: ../common/xml-utils.c $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-linux-osdata.o: ../common/linux-osdata.c $(server_h) $(linux_osdata_h) ../common/gdb_dirent.h
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-ptid.o: ../common/ptid.c $(ptid_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-buffer.o: ../common/buffer.c $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-format.o: ../common/format.c $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
-
-agent.o: ../common/agent.c $(server_h) $(agent_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
+ax-ipa.o: ax.c
+ $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
+ $(POSTCOMPILE)
+tracepoint-ipa.o: tracepoint.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+utils-ipa.o: utils.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+format-ipa.o: ../common/format.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+common-utils-ipa.o: ../common/common-utils.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+remote-utils-ipa.o: remote-utils.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+regcache-ipa.o: regcache.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+i386-linux-ipa.o : i386-linux.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+linux-i386-ipa.o: linux-i386-ipa.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+linux-amd64-ipa.o: linux-amd64-ipa.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+amd64-linux-ipa.o : amd64-linux.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+ax.o: ax.c
+ $(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
+ $(POSTCOMPILE)
+
+signals.o: ../common/signals.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+linux-procfs.o: ../common/linux-procfs.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+linux-ptrace.o: ../common/linux-ptrace.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+common-utils.o: ../common/common-utils.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+vec.o: ../common/vec.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+gdb_vecs.o: ../common/gdb_vecs.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+xml-utils.o: ../common/xml-utils.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+linux-osdata.o: ../common/linux-osdata.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+ptid.o: ../common/ptid.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+buffer.o: ../common/buffer.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+format.o: ../common/format.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+agent.o: ../common/agent.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
# 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 $<
+ $(COMPILE) $< -DHAVE_CONFIG_H
+ $(POSTCOMPILE)
vsnprintf.o: $(srcdir)/../../libiberty/vsnprintf.c
- $(CC) -o vsnprintf.o -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $<
+ $(COMPILE) $<
+ $(POSTCOMPILE)
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) $(linux_ptrace_h) $(linux_procfs_h) \
- $(server_h) $(linux_osdata_h) $(agent_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-bfin-low.o: linux-bfin-low.c $(linux_low_h) $(server_h) $(libiberty_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-tic6x-low.o: linux-tic6x-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) $(agent_h)
-linux-xtensa-low.o: linux-xtensa-low.c xtensa-xtregs.c $(linux_low_h) $(server_h)
-linux-tile-low.o: linux-tile-low.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) $(gdbthread_h)
-nto-x86-low.o: nto-x86-low.c $(server_h) $(nto_low_h) $(regdef_h) $(regcache_h)
+linux-low.o: linux-low.c
+ $(COMPILE) $< @USE_THREAD_DB@
+ $(POSTCOMPILE)
win32_low_h = $(srcdir)/win32-low.h
-win32-low.o: win32-low.c $(win32_low_h) $(server_h) $(regdef_h) $(regcache_h) $(gdbthread_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-bfin.o : reg-bfin.c $(regdef_h)
reg-bfin.c : $(srcdir)/../regformats/reg-bfin.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-bfin.dat reg-bfin.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
-mips-dsp-linux.o : mips-dsp-linux.c $(regdef_h)
mips-dsp-linux.c : $(srcdir)/../regformats/mips-dsp-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/mips-dsp-linux.dat mips-dsp-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
-mips64-dsp-linux.o : mips64-dsp-linux.c $(regdef_h)
mips64-dsp-linux.c : $(srcdir)/../regformats/mips64-dsp-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/mips64-dsp-linux.dat mips64-dsp-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-linux32v1.o : s390-linux32v1.c $(regdef_h)
s390-linux32v1.c : $(srcdir)/../regformats/s390-linux32v1.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux32v1.dat s390-linux32v1.c
-s390-linux32v2.o : s390-linux32v2.c $(regdef_h)
s390-linux32v2.c : $(srcdir)/../regformats/s390-linux32v2.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux32v2.dat s390-linux32v2.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
-s390-linux64v1.o : s390-linux64v1.c $(regdef_h)
s390-linux64v1.c : $(srcdir)/../regformats/s390-linux64v1.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux64v1.dat s390-linux64v1.c
-s390-linux64v2.o : s390-linux64v2.c $(regdef_h)
s390-linux64v2.c : $(srcdir)/../regformats/s390-linux64v2.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390-linux64v2.dat s390-linux64v2.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
-s390x-linux64v1.o : s390x-linux64v1.c $(regdef_h)
s390x-linux64v1.c : $(srcdir)/../regformats/s390x-linux64v1.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-linux64v1.dat s390x-linux64v1.c
-s390x-linux64v2.o : s390x-linux64v2.c $(regdef_h)
s390x-linux64v2.c : $(srcdir)/../regformats/s390x-linux64v2.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/s390x-linux64v2.dat s390x-linux64v2.c
-tic6x-c64xp-linux.o : tic6x-c64xp-linux.c $(regdef_h)
tic6x-c64xp-linux.c : $(srcdir)/../regformats/tic6x-c64xp-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/tic6x-c64xp-linux.dat tic6x-c64xp-linux.c
-tic6x-c64x-linux.o : tic6x-c64x-linux.c $(regdef_h)
tic6x-c64x-linux.c : $(srcdir)/../regformats/tic6x-c64x-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/tic6x-c64x-linux.dat tic6x-c64x-linux.c
-tic6x-c62x-linux.o : tic6x-c62x-linux.c $(regdef_h)
tic6x-c62x-linux.c : $(srcdir)/../regformats/tic6x-c62x-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/tic6x-c62x-linux.dat tic6x-c62x-linux.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
-x32.o : x32.c $(regdef_h)
x32.c : $(srcdir)/../regformats/i386/x32.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32.dat x32.c
-x32-linux.o : x32-linux.c $(regdef_h)
x32-linux.c : $(srcdir)/../regformats/i386/x32-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32-linux.dat x32-linux.c
-x32-avx.o : x32-avx.c $(regdef_h)
x32-avx.c : $(srcdir)/../regformats/i386/x32-avx.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32-avx.dat x32-avx.c
-x32-avx-linux.o : x32-avx-linux.c $(regdef_h)
x32-avx-linux.c : $(srcdir)/../regformats/i386/x32-avx-linux.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/i386/x32-avx-linux.dat x32-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
-reg-tilegx.o : reg-tilegx.c $(regdef_h)
reg-tilegx.c : $(srcdir)/../regformats/reg-tilegx.dat $(regdat_sh)
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-tilegx.dat reg-tilegx.c
+
+#
+# Dependency tracking. Most of this is conditional on GNU Make being
+# found by configure; if GNU Make is not found, we fall back to a
+# simpler scheme.
+#
+
+@GMAKE_TRUE@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.
+@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
+@GMAKE_TRUE@ -MF $(DEPDIR)/$(basename $(@F)).Tpo
+@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
+@GMAKE_TRUE@ $(DEPDIR)/$(basename $(@F)).Po
+@GMAKE_TRUE@else
+@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \
+@GMAKE_TRUE@ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)
+# depcomp handles atomicity for us, so we don't need a postcompile
+# step.
+@GMAKE_TRUE@override POSTCOMPILE =
+@GMAKE_TRUE@endif
+
+# A list of all the objects we might care about in this build, for
+# dependency tracking.
+all_object_files = $(OBS) $(GDBREPLAY_OBS)
+
+# 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.
+@GMAKE_TRUE@ifdef .VARIABLES
+@GMAKE_TRUE@$(all_object_files): | $(generated_files)
+@GMAKE_TRUE@else
+$(all_object_files) : $(generated_files)
+@GMAKE_TRUE@endif
+
+# Dependencies.
+@GMAKE_TRUE@-include $(patsubst %.o, $(DEPDIR)/%.Po, $(all_object_files))
+
# This is the end of "Makefile.in".
diff --git a/gdb/gdbserver/aclocal.m4 b/gdb/gdbserver/aclocal.m4
index 7b546b7..55bf0d8 100644
--- a/gdb/gdbserver/aclocal.m4
+++ b/gdb/gdbserver/aclocal.m4
@@ -106,4 +106,6 @@ AC_DEFUN([_AM_SUBST_NOTMAKE])
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4_include([../../config/depstand.m4])
+m4_include([../../config/lead-dot.m4])
m4_include([acinclude.m4])
diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
index 35da28b..6493c0f 100644
--- a/gdb/gdbserver/configure.ac
+++ b/gdb/gdbserver/configure.ac
@@ -40,8 +40,20 @@ AC_HEADER_DIRENT
AC_FUNC_ALLOCA
+# Dependency checking.
+ZW_CREATE_DEPDIR
+ZW_PROG_COMPILER_DEPENDENCIES([CC])
+
# Check for the 'make' the user wants to use.
AC_CHECK_PROGS(MAKE, make)
+MAKE_IS_GNU=
+case "`$MAKE --version 2>&1 | sed 1q`" in
+ *GNU*)
+ MAKE_IS_GNU=yes
+ ;;
+esac
+AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes)
+AC_PROG_MAKE_SET
# Configure gnulib. We can't use AC_CONFIG_SUBDIRS as that'd expect
# to find the the source subdir to be configured directly under
next reply other threads:[~2012-12-03 21:18 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-03 21:18 Tom Tromey [this message]
2012-12-07 3:12 ` Joel Brobecker
2012-12-07 10:18 ` Pedro Alves
2012-12-07 14:43 ` Tom Tromey
2013-01-16 19:48 ` Make autoreconf under gdb/ work (Re: RFC: automatic dependency tracking for gdbserver) Pedro Alves
2013-01-16 21:15 ` Tom Tromey
2013-01-17 11:08 ` Pedro Alves
2012-12-10 20:15 ` RFC: automatic dependency tracking for gdbserver Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r4n6vnqx.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox