Hi,

Vivien Kraus wrote:
> When I add the setlocale module, it pulls localename in. This one wants
> me to link my programs and libraries with @INTL_MACOSX_LIBS@, but then
> syntax-check (makefile_at_at_check) complains that it has @'s.

Most syntax-check rules can be adjusted or entirely disabled through an
entry cfg.mk.

> If I
> should use $(INTL_MACOSX_LIBS) instead, why does the localename insists
> on @@ (it also wants $(LIBTHREAD) with $() so presumably there’s a good
> reason for @@)?

When the module description of a Gnulib module recommends to use @VAR@,
it means that Gnulib guarantees that this variable will be AC_SUBSTed.

If you are using Automake, $(VAR) will be the same as @VAR@.
But $(VAR) expands to empty if VAR is not AC_SUBSTed.

Therefore if you write @VAR@ and there is a mistake somewhere (either
a typo in the variable name, or you are accidentally not using the
'localename' module), a link error will occur on all platforms.
Whereas if you write $(VAR) and there is a mistake, the link command
line will silently do the wrong thing. In the case of $(INTL_MACOSX_LIBS)
the macOS control panel settings will be ignored.

Gnulib recommends to write $(LIBTHREAD), not @LIBTHREAD@, because the
need for -lpthread by some modules can come and go, as the code evolves.
If you write @LIBTHREAD@, you may occasionally have some error after
some Gnulib internals changed.

Bruno




Reply via email to