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