bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make -q and maintainer-makefile issues?


From: Paul Eggert
Subject: Re: make -q and maintainer-makefile issues?
Date: Sat, 13 Aug 2011 14:42:21 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.18) Gecko/20110617 Thunderbird/3.1.11

On 08/13/2011 11:10 AM, Bruno Haible wrote:
> Why is "make -q" looking for a file 'check-macro-version'
> although the target is declared phony?

I expect that it's because historically, 'make' always identified
rule names with file names, and .PHONY was introduced with
a minimum of change to the historical behavior.

I also tried using a double-colon rule for check-macro-version,
without .PHONY, and that didn't work with 'make -q' either.

> Does it mean phony targets are generally incompatible with "make -q"?

Apparently so, and that's what I would expect given the documentation
that you quoted: a phony target is always considered to be out-of-date,
so make -q FOO should fail if FOO is (or depends on) a phony target.

It might be worth extending GNU Make to add a new special target,
.CHECK say, which would attack this problem.  Any dependency of
.CHECK should be a rule that is executed purely for its exit status
and/or output to stdout or stderr, and all the dependencies of this
rule would have a similar restriction.  'make -q' could invoke
these rules' actions.  The rule names would not be associated with
file names.  (I haven't thought through this proposal carefully; I'm
throwing it out mostly to show the difference between .PHONY and
what's wanted here.)

In the meantime, though, we're stuck with workarounds such as the
one I installed.  In this particular case the workaround is not
so bad.

There may be similar problems elsewhere, in rules that create
time stamp files.  Getting such rules to work for both -j and -q
may be tricky.  I have not gone searching for problems
in that area, though.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]