Bruno Haible <br...@clisp.org> writes:

> Simon Josefsson wrote:
>> I'm seeing some syntax-check warnings like this:
>> 
>> lib/Makefile.am:623: DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
>> src/Makefile.am:716: DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
>> maint.mk: use $(...), not @...@
>> make: *** [sc_makefile_at_at_check] Error 1
>> 
>> However the gettext 0.18.1 manual still recommends using the lines used
>> above.  Should the gettext manual be updated, or are there valid
>> situations when @....@ is appropriate that maint.mk could detect?
>
> If the maintainer was to write
>
>   DEFS = -DLOCALEDIR=\"$(localedir)\" $(DEFS)
>
> it would be a circular definition, leading to this error with GNU make:
>
>   Makefile:1: *** Recursive variable `DEFS' references itself
> (eventually).  Stop.
>
> So the use of @...@ is not only appropriate here, it is even mandatory.

So possibly the maint.mk check should be relaxed to permit constructs
matching FOO = ... @FOO@ then?

> Note that for packages that use a hand-written Makefile.am (as opposed to a
> hand-written Makefile.in), the gettext documentation [1] suggests to augment
> AM_CPPFLAGS instead of DEFS. Both work, AM_CPPFLAGS is just more modern style.

Ah, I had missed this in some projects -- changing it to use AM_CPPFLAGS
instead also makes the warning go away and seems simple.

Then I think the current behaviour of maint.mk shoudld stay, unless
anyone else finds other corner cases -- this warning resulted a change
to use a more modern style in one of my projects.

/Simon

Reply via email to