This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: automatic dependency tracking


Hello,

this is a review of a slightly more updated patch Tom sent me:

* Tom Tromey wrote on Tue, Jul 22, 2008 at 12:13:28AM CEST:
> This patch implements automatic dependency tracking for gdb.

> For the non-GNU make case, this patch yields somewhat worse results --
> dependencies are not tracked.

[ChangeLog]
> 	(cli-decode.o, cli-dump.o, cli-interp.o, cli-logging.o,
> 	cli-script.o, cli-setshow.o, cli-utils.o): Likewise.

Missing cli-cmds.o.

> --- Makefile.in	28 Jul 2008 17:53:52 -0000	1.1041
> +++ Makefile.in	31 Jul 2008 14:41:27 -0000
> @@ -83,6 +83,18 @@
>  # distribution will fix your include files up.
>  CC=@CC@
>  
> +# Dependency tracking information.
> +DEPMODE = @CCDEPMODE@
> +DEPDIR = @DEPDIR@
> +depcomp = $(SHELL) $(srcdir)/../depcomp
> +
> +# Note that these are overridden by the GNUMakefile if GNU make is

s/by the GNUMakefile/by GNU make-specific code below/

FWIW the file, if used, is called GNUmakefile (lower-case 'm');
I've been bitten by that before, caused much head-scratching.

> +# used.  The overrides implement dependency tracking.
> +COMPILE.pre = $(CC)
> +COMPILE.post = -c -o $@
> +COMPILE = $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
> +POSTCOMPILE =

OK, so I gather that non-GNU make users won't have correct header
dependencies any more (I saw you stated that earlier).

BSD make will complain about a rule command
	$(POSTCOMPILE)

when the macro expands to empty; let's set it to '@true' instead.

> @@ -1113,10 +827,13 @@
>  
>  DISTSTUFF = $(YYFILES)
>  
> -# 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.
> +
> +# All generated files which can be included by another file.
> +generated_files = config.h observer.h observer.inc ada-lex.c
> +

>  hpux-thread.o: $(srcdir)/hpux-thread.c
> -	$(CC) -c $(INTERNAL_CFLAGS) -I$(srcdir)/osf-share \
> -		-I$(srcdir)/osf-share/HP800 -I/usr/include/dce \
> -		$(srcdir)/hpux-thread.c
> +	$(COMPILE) -I$(srcdir)/osf-share -I$(srcdir)/osf-share/HP800 \
> +		-I/usr/include/dce $<

BSD make barfs over $< outside of inference rules.

> +	$(POSTCOMPILE)


>  # gdb/cli/ dependencies
>  #
>  # Need to explicitly specify the compile rule as make will do nothing
>  # or try to compile the object file into the sub-directory.

Have you thought of simply compiling the object file in the sub
directory?  That's not a bad option; and the makefile has already been
assuming that the compiler understands '-c -o' anyway.

Likewise gdbtk/, mi/, signals/, tui/

> -cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(defs_h) $(readline_h) \
> -	$(readline_tilde_h) $(completer_h) $(target_h) $(gdb_wait_h) \
> -	$(gdb_regex_h) $(gdb_string_h) $(gdb_vfork_h) $(linespec_h) \
> -	$(expression_h) $(frame_h) $(value_h) $(language_h) $(filenames_h) \
> -	$(objfiles_h) $(source_h) $(disasm_h) $(ui_out_h) $(top_h) \
> -	$(cli_decode_h) $(cli_script_h) $(cli_setshow_h) $(cli_cmds_h) \
> -	$(tui_h)
> -	$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-cmds.c
[...]
> +cli-cmds.o: $(srcdir)/cli/cli-cmds.c
> +	$(COMPILE) $<
> +	$(POSTCOMPILE)
[...]

> +# 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 =

This POSTCOMPILE can remain empty I suppose, unless an older GNU make
dislikes that too.

> +@GMAKE_TRUE@endif
> +
> +# A list of all the objects we might care about in this build, for
> +# dependency tracking.
> +all_object_files = gdb.o tui-main.o $(LIBGDB_OBS) gdbtk-main.o \
> +	test-cp-name-parser.o
> +
> +@GMAKE_TRUE@$(all_object_files): | $(generated_files)

This order-only dependency requires make 3.80 or newer.
I've looked whether it could be eliminated: the problem is only header
files which do not exist before any compilation.
- config.h exists after config.status has run,
- observer.h observer.inc ada-lex.c don't exist.

The last three could be dealt with using explicit dependencies whereever
they are included, or triggering their build at config.status time
(probably not nice to do this for ada-lex.c).

Not sure if you want to change this, but I guess the documentation
should otherwise be updated to reflect that GNU make < 3.80 can't be
used.  (Or you disable GMAKE_TRUE for that...)

> +# Dependencies.
> +@GMAKE_TRUE@-include $(patsubst %.o, $(DEPDIR)/%.Po, $(all_object_files))
> +
> +@GMAKE_FALSE@$(all_object_files) : $(generated_files)
>  
>  ### end of the gdb Makefile.in.


> --- acinclude.m4	26 Jun 2008 15:51:27 -0000	1.20
> +++ acinclude.m4	31 Jul 2008 14:41:28 -0000
> @@ -20,6 +20,9 @@
>  dnl For ACX_PKGVERSION and ACX_BUGURL.
>  sinclude(../config/acx.m4)
>  
> +dnl For dependency tracking macros.
> +sinclude([../config/depstand.m4])

Why sinclude?  Shouldn't aclocal fail if the file cannot be included?
(Just curious, really; I see this is done with other files, too.)

> --- configure.ac	27 Jul 2008 21:18:50 -0000	1.76
> +++ configure.ac	31 Jul 2008 14:41:28 -0000
> @@ -35,6 +35,21 @@
>  AC_CONFIG_AUX_DIR(..)
>  AC_CANONICAL_SYSTEM
>  
> +# 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
> +
>  dnl List of object files and targets accumulated by configure.
>  
>  CONFIG_OBS=

While trying to build with BSD make, I found a couple more issues: $^ is
not portable (used in gdbserver/Makefile.in).  Also, relying on a hash
before backslash-newline to also comment out the following line is not
portable either (but you can put a hash at the start of the next); this
happens with MAINTAINER_MODE_TRUE in the copying.c rule.

Adding the patch below on top of yours should fix all these issues.

Hope that helps.

I started building the archer tree on AIX, but seeing other, independent
issues that need help first, am stopping now.

Cheers,
Ralf

gdb/ChangeLog:
2008-08-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (POSTCOMPILE): Set to '@true' for non-GNU make.
	($(srcdir)/copying.c): Avoid backslash-newline after comment
	sign (@MAINTAINER_MODE_TRUE@).
	(hpux-thread.o, main.o, monitor.o, printcmd.o, procfs.o):
	Do not use $< in explicit rule.
	(cli-cmds.o, cli-decode.o, cli-dump.o, cli-interp.o, cli-logging.o,
	cli-script.o, cli-setshow.o, cli-utils.o): Likewise.
	(gdbtk.o, gdbtk-bp.o, gdbtk-cmds.o, gdbtk-hooks.o, gdbtk-interp.o,
	gdbtk-main.o, gdbtk-register.o, gdbtk-stack.o, gdbtk-varobj.o,
	gdbtk-wrapper.o): Likewise.
	(mi-cmd-break.o, mi-cmd-disas.o, mi-cmd-env.o, mi-cmd-file.o,
	mi-cmds.o, mi-cmd-stack.o, mi-cmd-target.o, mi-cmd-var.o,
	mi-console.o, mi-getopt.o, mi-interp.o, mi-main.o, mi-out.o,
	mi-parse.o, mi-symbol-cmds.o, mi-common.o, signals.o, tui.o,
	tui-command.o, tui-data.o, tui-disasm.o, tui-file.o, tui-hooks.o,
	tui-interp.o, tui-io.o, tui-layout.o, tui-main.o, tui-out.o,
	tui-regs.o, tui-source.o, tui-stack.o, tui-win.o, tui-windata.o,
	tui-wingeneral.o, tui-winsource.o): Likewise.

gdb/gdbserver/ChangeLog:
2008-08-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gdb/gdbserver/Makefile.in (GDBREPLAY_OBS): New variable.
	(gdbreplay$(EXEEXT)): Use it to avoid unportable $^.

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index c3351a9..4aa29f6 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -93,7 +93,7 @@ depcomp = $(SHELL) $(srcdir)/../depcomp
 COMPILE.pre = $(CC)
 COMPILE.post = -c -o $@
 COMPILE = $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
-POSTCOMPILE =
+POSTCOMPILE = @true
 
 # Directory containing source files.
 srcdir = @srcdir@
@@ -1199,8 +1199,7 @@ doc/gdb.info:
 	cd doc; $(MAKE) gdb.info $(FLAGS_TO_PASS)
 
 # Make copying.c from COPYING
-$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ \
-		$(srcdir)/../COPYING3 $(srcdir)/copying.awk
+$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ $(srcdir)/../COPYING3 $(srcdir)/copying.awk
 	awk -f $(srcdir)/copying.awk \
 		< $(srcdir)/../COPYING3 > $(srcdir)/copying.tmp
 	mv $(srcdir)/copying.tmp $(srcdir)/copying.c
@@ -1333,12 +1332,12 @@ ALLDEPFILES = \
 
 hpux-thread.o: $(srcdir)/hpux-thread.c
 	$(COMPILE) -I$(srcdir)/osf-share -I$(srcdir)/osf-share/HP800 \
-		-I/usr/include/dce $<
+		-I/usr/include/dce $(srcdir)/hpux-thread.c
 	$(POSTCOMPILE)
 
 # main.o needs an explicit build rule to get TARGET_SYSTEM_ROOT and BINDIR.
 main.o: $(srcdir)/main.c
-	$(COMPILE) $(TARGET_SYSTEM_ROOT_DEFINE) -DBINDIR=\"$(bindir)\" $<
+	$(COMPILE) $(TARGET_SYSTEM_ROOT_DEFINE) -DBINDIR=\"$(bindir)\" $(srcdir)/main.c
 	$(POSTCOMPILE)
 
 # FIXME: cagney/2003-08-10: "monitor.c" gets -Wformat-nonliteral
@@ -1348,20 +1347,20 @@ main.o: $(srcdir)/main.c
 # definitly will not work.  "monitor.c" needs to be rewritten so that
 # it doesn't use format strings and instead uses callbacks.
 monitor.o: $(srcdir)/monitor.c
-	$(COMPILE.pre) $(INTERNAL_WARN_CFLAGS) $(COMPILE.post) $<
+	$(COMPILE.pre) $(INTERNAL_WARN_CFLAGS) $(COMPILE.post) $(srcdir)/monitor.c
 	$(POSTCOMPILE)
 
 # Do not try to build "printcmd.c" with -Wformat-nonliteral.  It manually
 # checks format strings.
 printcmd.o: $(srcdir)/printcmd.c
 	$(COMPILE.pre) $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS_NO_FORMAT) \
-		$(GDB_WERROR_CFLAGS) $(COMPILE.post) $<
+		$(GDB_WERROR_CFLAGS) $(COMPILE.post) $(srcdir)/printcmd.c
 	$(POSTCOMPILE)
 
 # FIXME: Procfs.o gets -Wformat errors because things like pid_t don't
 # match output format strings.
 procfs.o: $(srcdir)/procfs.c
-	$(COMPILE.pre) $(INTERNAL_WARN_CFLAGS) $(COMPILE.post) $<
+	$(COMPILE.pre) $(INTERNAL_WARN_CFLAGS) $(COMPILE.post) $(srcdir)/procfs.c
 	$(POSTCOMPILE)
 
 # Message files.  Based on code in gcc/Makefile.in.
@@ -1510,35 +1509,35 @@ stamp-xml: $(srcdir)/features/feature_to_c.sh Makefile $(XMLFILES)
 # or try to compile the object file into the sub-directory.
 
 cli-cmds.o: $(srcdir)/cli/cli-cmds.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-cmds.c
 	$(POSTCOMPILE)
 
 cli-decode.o: $(srcdir)/cli/cli-decode.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-decode.c
 	$(POSTCOMPILE)
 
 cli-dump.o: $(srcdir)/cli/cli-dump.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-dump.c
 	$(POSTCOMPILE)
 
 cli-interp.o: $(srcdir)/cli/cli-interp.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-interp.c
 	$(POSTCOMPILE)
 
 cli-logging.o: $(srcdir)/cli/cli-logging.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-logging.c
 	$(POSTCOMPILE)
 
 cli-script.o: $(srcdir)/cli/cli-script.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-script.c
 	$(POSTCOMPILE)
 
 cli-setshow.o: $(srcdir)/cli/cli-setshow.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-setshow.c
 	$(POSTCOMPILE)
 
 cli-utils.o: $(srcdir)/cli/cli-utils.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/cli/cli-utils.c
 	$(POSTCOMPILE)
 
 
@@ -1612,43 +1611,43 @@ all_gdbtk_cflags = $(IDE_CFLAGS) $(ITCL_CFLAGS) \
 		-DSRC_DIR=\"$(GDBTK_SRC_DIR)\"
 
 gdbtk.o: $(srcdir)/gdbtk/generic/gdbtk.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk.c
 	$(POSTCOMPILE)
 
 gdbtk-bp.o: $(srcdir)/gdbtk/generic/gdbtk-bp.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-bp.c
 	$(POSTCOMPILE)
 
 gdbtk-cmds.o: $(srcdir)/gdbtk/generic/gdbtk-cmds.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-cmds.c
 	$(POSTCOMPILE)
 
 gdbtk-hooks.o: $(srcdir)/gdbtk/generic/gdbtk-hooks.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-hooks.c
 	$(POSTCOMPILE)
 
 gdbtk-interp.o: $(srcdir)/gdbtk/generic/gdbtk-interp.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-interp.c
 	$(POSTCOMPILE)
 
 gdbtk-main.o: $(srcdir)/gdbtk/generic/gdbtk-main.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-main.c
 	$(POSTCOMPILE)
 
 gdbtk-register.o: $(srcdir)/gdbtk/generic/gdbtk-register.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-register.c
 	$(POSTCOMPILE)
 
 gdbtk-stack.o: $(srcdir)/gdbtk/generic/gdbtk-stack.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-stack.c
 	$(POSTCOMPILE)
 
 gdbtk-varobj.o: $(srcdir)/gdbtk/generic/gdbtk-varobj.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-varobj.c
 	$(POSTCOMPILE)
 
 gdbtk-wrapper.o: $(srcdir)/gdbtk/generic/gdbtk-wrapper.c
-	$(COMPILE) $(all_gdbtk_cflags) $<
+	$(COMPILE) $(all_gdbtk_cflags) $(srcdir)/gdbtk/generic/gdbtk-wrapper.c
 	$(POSTCOMPILE)
 
 
@@ -1659,67 +1658,67 @@ gdbtk-wrapper.o: $(srcdir)/gdbtk/generic/gdbtk-wrapper.c
 # or try to compile the object file into the sub-directory.
 
 mi-cmd-break.o: $(srcdir)/mi/mi-cmd-break.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-break.c
 	$(POSTCOMPILE)
 
 mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-disas.c
 	$(POSTCOMPILE)
 
 mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-env.c
 	$(POSTCOMPILE)
 
 mi-cmd-file.o: $(srcdir)/mi/mi-cmd-file.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-file.c
 	$(POSTCOMPILE)
 
 mi-cmds.o: $(srcdir)/mi/mi-cmds.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmds.c
 	$(POSTCOMPILE)
 
 mi-cmd-stack.o: $(srcdir)/mi/mi-cmd-stack.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-stack.c
 	$(POSTCOMPILE)
 
 mi-cmd-target.o: $(srcdir)/mi/mi-cmd-target.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-target.c
 	$(POSTCOMPILE)
 
 mi-cmd-var.o: $(srcdir)/mi/mi-cmd-var.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-cmd-var.c
 	$(POSTCOMPILE)
 
 mi-console.o: $(srcdir)/mi/mi-console.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-console.c
 	$(POSTCOMPILE)
 
 mi-getopt.o: $(srcdir)/mi/mi-getopt.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-getopt.c
 	$(POSTCOMPILE)
 
 mi-interp.o: $(srcdir)/mi/mi-interp.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-interp.c
 	$(POSTCOMPILE)
 
 mi-main.o: $(srcdir)/mi/mi-main.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-main.c
 	$(POSTCOMPILE)
 
 mi-out.o: $(srcdir)/mi/mi-out.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-out.c
 	$(POSTCOMPILE)
 
 mi-parse.o: $(srcdir)/mi/mi-parse.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-parse.c
 	$(POSTCOMPILE)
 
 mi-symbol-cmds.o: $(srcdir)/mi/mi-symbol-cmds.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-symbol-cmds.c
 	$(POSTCOMPILE)
 
 mi-common.o: $(srcdir)/mi/mi-common.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/mi/mi-common.c
 	$(POSTCOMPILE)
 
 #
@@ -1729,7 +1728,7 @@ mi-common.o: $(srcdir)/mi/mi-common.c
 # or try to compile the object file into the sub-directory.
 
 signals.o: $(srcdir)/signals/signals.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/signals/signals.c
 	$(POSTCOMPILE)
 
 #
@@ -1739,75 +1738,75 @@ signals.o: $(srcdir)/signals/signals.c
 # or try to compile the object file into the sub-directory.
 
 tui.o: $(srcdir)/tui/tui.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui.c
 	$(POSTCOMPILE)
 
 tui-command.o: $(srcdir)/tui/tui-command.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-command.c
 	$(POSTCOMPILE)
 
 tui-data.o: $(srcdir)/tui/tui-data.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-data.c
 	$(POSTCOMPILE)
 
 tui-disasm.o: $(srcdir)/tui/tui-disasm.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-disasm.c
 	$(POSTCOMPILE)
 
 tui-file.o: $(srcdir)/tui/tui-file.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-file.c
 	$(POSTCOMPILE)
 
 tui-hooks.o: $(srcdir)/tui/tui-hooks.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-hooks.c
 	$(POSTCOMPILE)
 
 tui-interp.o: $(srcdir)/tui/tui-interp.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-interp.c
 	$(POSTCOMPILE)
 
 tui-io.o: $(srcdir)/tui/tui-io.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-io.c
 	$(POSTCOMPILE)
 
 tui-layout.o: $(srcdir)/tui/tui-layout.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-layout.c
 	$(POSTCOMPILE)
 
 tui-main.o: $(srcdir)/tui/tui-main.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-main.c
 	$(POSTCOMPILE)
 
 tui-out.o: $(srcdir)/tui/tui-out.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-out.c
 	$(POSTCOMPILE)
 
 tui-regs.o: $(srcdir)/tui/tui-regs.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-regs.c
 	$(POSTCOMPILE)
 
 tui-source.o: $(srcdir)/tui/tui-source.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-source.c
 	$(POSTCOMPILE)
 
 tui-stack.o: $(srcdir)/tui/tui-stack.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-stack.c
 	$(POSTCOMPILE)
 
 tui-win.o: $(srcdir)/tui/tui-win.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-win.c
 	$(POSTCOMPILE)
 
 tui-windata.o: $(srcdir)/tui/tui-windata.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-windata.c
 	$(POSTCOMPILE)
 
 tui-wingeneral.o: $(srcdir)/tui/tui-wingeneral.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-wingeneral.c
 	$(POSTCOMPILE)
 
 tui-winsource.o: $(srcdir)/tui/tui-winsource.c
-	$(COMPILE) $<
+	$(COMPILE) $(srcdir)/tui/tui-winsource.c
 	$(POSTCOMPILE)
 
 
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 7034361..9a197af 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -146,6 +146,7 @@ OBS = inferiors.o regcache.o remote-utils.o server.o signals.o target.o \
 	mem-break.o hostio.o \
 	$(XML_BUILTIN) \
 	$(DEPFILES) $(LIBOBJS)
+GDBREPLAY_OBS = gdbreplay.o version.o
 GDBSERVER_LIBS = @GDBSERVER_LIBS@
 XM_CLIBS = @LIBS@
 
@@ -194,9 +195,9 @@ gdbserver$(EXEEXT): $(OBS) ${ADD_DEPS} ${CDEPS}
 	${CC-LD} $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) -o gdbserver$(EXEEXT) $(OBS) \
 	  $(GDBSERVER_LIBS) $(XM_CLIBS)
 
-gdbreplay$(EXEEXT): gdbreplay.o version.o
+gdbreplay$(EXEEXT): $(GDBREPLAY_OBS)
 	rm -f gdbreplay$(EXEEXT)
-	${CC-LD} $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) -o gdbreplay$(EXEEXT) $^ \
+	${CC-LD} $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) -o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) \
 	  $(XM_CLIBS)
 
 # Put the proper machine-specific files first, so M-. on a machine


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]