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: Bruno Haible
Subject: Re: make -q and maintainer-makefile issues?
Date: Sat, 13 Aug 2011 20:10:12 +0200
User-agent: KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; )

Hi Paul,

> diff --git a/ChangeLog b/ChangeLog
> index d020dd5..3a798cf 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,5 +1,13 @@
>  2011-08-11  Paul Eggert  <address@hidden>
>  
> +     po/Makefile.in.in: fix make -q problem
> +     * build-aux/po/Makefile.in.in (check-macro-version): Remove this
> +     rule, since there's no file named 'check-macro-version' and its
> +     use as a file breaks make -q.
> +     (all): Don't depend on check-macro-version.
> +     (CHECK_MACRO_VERSION): New macro.
> +     (stamp-po): Use it.
> +
>       configmake: fix make -q problem
>       * modules/configmake (configmake.h): Update configmake.h's time stamp
>       even if the file does not change.  Otherwise, 'make -q' fails.
> diff --git a/build-aux/po/Makefile.in.in b/build-aux/po/Makefile.in.in
> index 83d8838..caedd7f 100644
> --- a/build-aux/po/Makefile.in.in
> +++ b/build-aux/po/Makefile.in.in
> @@ -96,14 +96,14 @@ CATALOGS = @CATALOGS@
>       mv t-$@ $@
>  
>  
> -all: check-macro-version address@hidden@
> +all: address@hidden@
>  
>  all-yes: stamp-po
>  all-no:
>  
>  # Ensure that the gettext macros and this Makefile.in.in are in sync.
> -check-macro-version:
> -     @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
> +CHECK_MACRO_VERSION = \
> +     test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
>         || { echo "*** error: gettext infrastructure mismatch: using a 
> Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf 
> macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
>              exit 1; \
>            }
> @@ -123,6 +123,7 @@ check-macro-version:
>  # $(POFILES) has been designed to not touch files that don't need to be
>  # changed.
>  stamp-po: $(srcdir)/$(DOMAIN).pot
> +     @$(CHECK_MACRO_VERSION)
>       test ! -f $(srcdir)/$(DOMAIN).pot || \
>         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
>       @test ! -f $(srcdir)/$(DOMAIN).pot || { \

Why can't this be done by adding the line

.PHONY: check-macro-version

? I just tried it, "make -q -d" outputs

...
Considering target file `all'.
 File `all' does not exist.
 Looking for an implicit rule for `all'.
 ...
 No implicit rule found for `all'.
  Considering target file `check-macro-version'.
   File `check-macro-version' does not exist.
   Finished prerequisites of target file `check-macro-version'.
  Must remake target `check-macro-version'.
  Target file `check-macro-version' needs remade under -q.
 Finished prerequisites of target file `all'.
Giving up on target file `all'.

and terminates with exit code 1.

Why is that? Why is "make -q" looking for a file 'check-macro-version'
although the target is declared phony?

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

I'm referring to the GNU make documentation, which says:

  `.PHONY'
     The prerequisites of the special target `.PHONY' are considered to
     be phony targets.  When it is time to consider such a target,
     `make' will run its commands unconditionally, regardless of
     whether a file with that name exists or what its last-modification
     time is.

and I'm using GNU make 3.81. GNU make 3.82 behaves the same way.

Bruno
-- 
In memoriam Paul Richter <http://de.wikipedia.org/wiki/Paul_Richter_(Pfarrer)>



reply via email to

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