Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew Cagney <cagney@gnu.org>
To: Ian Lance Taylor <ian@wasabisystems.com>
Cc: Daniel Jacobowitz <drow@false.org>,
	Eli Zaretskii <eliz@elta.co.il>,
	gdb-patches@sources.redhat.com
Subject: Re: [patch/rfc] Generate makefile dependencies
Date: Fri, 19 Mar 2004 00:09:00 -0000	[thread overview]
Message-ID: <404CC47A.4090207@gnu.org> (raw)
In-Reply-To: <m3fzcjqk51.fsf@gossamer.airs.com>

> Andrew Cagney <cagney@gnu.org> writes:
> 
> 
>>>> > BTW, your comment about running automake to update deps in BFD is
>>>> > actually incorrect.  You run 'make dep-am', which IIRC seds Makefile.am
>>>> > and maye regenerates Makefile.in; the dependencies aren't managed by
>>>> > automake.  Recent versions of automake do have top-notch dependency
>>>> > support though.
>>
>>> 
>>> It appears to eventually run "gcc -MM" ... :-(
> 
> 
> Assuming you are talking about 'make dep-am' in the binutils, that is
> irrelevant.

> 'make dep-am' is run by a binutils maintainer, not by an ordinary
> user.  It does happen to run gcc -MM, so the binutils maintainer is
> required to have gcc installed.  However, the result is the correct
> dependencies for any compiler, and those dependencies are then present
> in the Makefile for any user, regardless of what compiler they use.

Right, which was part of my motivation for proposing that it be done 
this way:

> The attached, er, hack, modifies configure.in so that all the Makefile dependencies are generated during configure time:
> 
>     defs_h = ...
>     foo.o: foo.c $(defs_h)
> 
> It exploits the fact that GDB's code base is very consistent in its use of "foo.h" vs <foo.h> -- the former is assumed to be local, the latter in a system library.
> 
> Instead of having to to edit Makefile.in, or as with binutils, run automake, you just enter:
>     ./config.cache --recheck
> 
> Thoughts?  Wonder how portable my SED is. 

While Daniel's pointed out that for binutils "make dep-am" (and hence 
gcc -MM) and not "automake" are used, the problem still stands - correct 
dependency lists are only available if a specialized set of tools are 
installed.

For what its worth, I know of three ways to maintain a dependency list:

- update at compile time

- update at configure time

- update at release time

For someone grabbing random sources, the first is most likely correct, 
the last is most likley out-of-date.  The middle is a compromise, at 
least correct at the start of each build.

Andrew



WARNING: multiple messages have this Message-ID
From: Andrew Cagney <cagney@gnu.org>
To: Ian Lance Taylor <ian@wasabisystems.com>
Cc: Daniel Jacobowitz <drow@false.org>,
	Eli Zaretskii <eliz@elta.co.il>,
	gdb-patches@sources.redhat.com
Subject: Re: [patch/rfc] Generate makefile dependencies
Date: Mon, 08 Mar 2004 19:07:00 -0000	[thread overview]
Message-ID: <404CC47A.4090207@gnu.org> (raw)
Message-ID: <20040308190700.suNLBcuHvrMp4N2BTRqYPotJQXbpo8SjSctDBvJ8rtU@z> (raw)
In-Reply-To: <m3fzcjqk51.fsf@gossamer.airs.com>

> Andrew Cagney <cagney@gnu.org> writes:
> 
> 
>>>> > BTW, your comment about running automake to update deps in BFD is
>>>> > actually incorrect.  You run 'make dep-am', which IIRC seds Makefile.am
>>>> > and maye regenerates Makefile.in; the dependencies aren't managed by
>>>> > automake.  Recent versions of automake do have top-notch dependency
>>>> > support though.
>>
>>> 
>>> It appears to eventually run "gcc -MM" ... :-(
> 
> 
> Assuming you are talking about 'make dep-am' in the binutils, that is
> irrelevant.

> 'make dep-am' is run by a binutils maintainer, not by an ordinary
> user.  It does happen to run gcc -MM, so the binutils maintainer is
> required to have gcc installed.  However, the result is the correct
> dependencies for any compiler, and those dependencies are then present
> in the Makefile for any user, regardless of what compiler they use.

Right, which was part of my motivation for proposing that it be done 
this way:

> The attached, er, hack, modifies configure.in so that all the Makefile dependencies are generated during configure time:
> 
>     defs_h = ...
>     foo.o: foo.c $(defs_h)
> 
> It exploits the fact that GDB's code base is very consistent in its use of "foo.h" vs <foo.h> -- the former is assumed to be local, the latter in a system library.
> 
> Instead of having to to edit Makefile.in, or as with binutils, run automake, you just enter:
>     ./config.cache --recheck
> 
> Thoughts?  Wonder how portable my SED is. 

While Daniel's pointed out that for binutils "make dep-am" (and hence 
gcc -MM) and not "automake" are used, the problem still stands - correct 
dependency lists are only available if a specialized set of tools are 
installed.

For what its worth, I know of three ways to maintain a dependency list:

- update at compile time

- update at configure time

- update at release time

For someone grabbing random sources, the first is most likely correct, 
the last is most likley out-of-date.  The middle is a compromise, at 
least correct at the start of each build.

Andrew



  parent reply	other threads:[~2004-03-08 19:07 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-08  0:36 Andrew Cagney
2004-03-08  6:09 ` Eli Zaretskii
2004-03-19  0:09   ` Andrew Cagney
2004-03-08 16:24     ` Andrew Cagney
2004-03-08 17:24     ` Eli Zaretskii
2004-03-08 17:58       ` Andrew Cagney
2004-03-19  0:09         ` Andrew Cagney
2004-03-19  0:09       ` Eli Zaretskii
2004-03-19  0:09     ` Daniel Jacobowitz
2004-03-08 17:29       ` Daniel Jacobowitz
2004-03-08 17:50       ` Ian Lance Taylor
2004-03-19  0:09         ` Ian Lance Taylor
2004-03-19  0:09       ` Andrew Cagney
2004-03-08 18:06         ` Andrew Cagney
2004-03-08 18:11         ` Daniel Jacobowitz
2004-03-19  0:09           ` Andrew Cagney
2004-03-08 18:35             ` Andrew Cagney
2004-03-08 23:13             ` Michael Snyder
2004-03-11 17:23               ` Andrew Cagney
2004-03-19  0:09                 ` Andrew Cagney
2004-03-19  0:09               ` Michael Snyder
2004-03-19  0:09           ` Daniel Jacobowitz
2004-03-08 18:16         ` Ian Lance Taylor
2004-03-19  0:09           ` Ian Lance Taylor
2004-03-19  0:09           ` Andrew Cagney [this message]
2004-03-08 19:07             ` Andrew Cagney
2004-03-08 19:26             ` Ian Lance Taylor
2004-03-19  0:09               ` Ian Lance Taylor
2004-03-19  0:09             ` Daniel Jacobowitz
2004-03-08 19:16               ` Daniel Jacobowitz
2004-03-19  0:09   ` Eli Zaretskii
2004-03-15 18:21 ` Andrew Cagney
2004-03-19  0:09   ` Andrew Cagney
2004-03-19  0:09   ` Ian Lance Taylor
2004-03-15 18:53     ` Ian Lance Taylor
2004-03-19  0:09 ` Andrew Cagney

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=404CC47A.4090207@gnu.org \
    --to=cagney@gnu.org \
    --cc=drow@false.org \
    --cc=eliz@elta.co.il \
    --cc=gdb-patches@sources.redhat.com \
    --cc=ian@wasabisystems.com \
    /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