On 04/23/2013 09:18 PM, Peter Eisentraut wrote: > In the manual section "Automatic Remaking", the following rule is > suggested: > > config.h: stamp-h > stamp-h: config.h.in config.status > ./config.status > > This actually doesn't work so well. It should be > > config.h: stamp-h ; > stamp-h: config.h.in config.status > ./config.status
Wow - I've been hunting for this very bug for 48 hours now due to an
off-list bug report!
I can definitely confirm that with no recipe, make -d reports the
following on the first run:
Prerequisite `stamp-h' is older than target `config.h'.
No recipe for `config.h' and no prerequisites actually changed.
No need to remake target `config.h'.
and only on the second run does it change its mind:
Prerequisite `stamp-h' is newer than target `config.h'.
Must remake target `config.h'.
Successfully remade target file `config.h'.
Meanwhile, adding the empty recipe (via the trailing semicolon) forces
make to always behave as in the second run pre-patch.
>
> If you look at the makefiles generated by Automake, it agrees.
Well, the file I looked at has a lot more than an empty recipe:
config.h: stamp-h1
@if test ! -f $@; then rm -f stamp-h1; else :; fi
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
rm -f stamp-h1
touch $@
but the point remains that automake is not generating an empty recipe file.
>
> This is with GNU Make 3.81.
My testing was with make 3.82.
>
> The rule for config.h.in: stamp-h.in is probably similarly affected, but
> I don't have verification for that.
>
Indeed possible; should I go ahead and suggest a semicolon at both sites
in the manual without waiting for confirmation of whether it makes a
difference?
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
