On 5/13/24 20:52, Bruno Haible wrote:

Bob Friesenhahn wrote:
Automake does have a critical bug in that for a target which only optionally 
has C++ sources, that target is always linked using C++. Without this issue, 
the trick of including an empty optional C++ source file in the build would 
work. But I do not want GraphicsMagick to require a C++ compiler.
For a target 'foo', Automake uses a foo_LINK variable, for which it provides a
default definition. Since you are not satisfied with this default definition,
you can and should provide your own definition of this variable. You can then
decide yourself whether it uses
   --tag=CC  or  --tag=CXX
and
   $(CCLD) $(AM_CFLAGS) $(CFLAGS)  or  $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS).

See e.g. in gettext/gettext-tools/src/Makefile.am the 'msgmerge' target and
the msgmerge_LINK variable. This definition has been in use for ca. 20 years.

The GraphicsMagick Makefile.in file has 107 such link statements for libraries/modules and 112 foo_LINK variables overall. Unfortunately, Automake is not consistent and there is a entirely different link request used for optionally built programs such as for tests.

Indeed I am most recently proceeding down this path.

Since it is not allowed to wrap a target replacement in an Automake condition, I am finding it necessary to write new rules which use variables that I define.

The goal is to support linking as C or C++.

Not all of the libraries, modules, or programs need to be linkable with C++ but this seems like quite a lot of messy work and quite a lot of divergence from the original Automake Makefile.

Bob

--
Bob Friesenhahn
bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/
Public Key,     http://www.simplesystems.org/users/bfriesen/public-key.txt


Reply via email to