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