[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Silent make output for custom link commands
From: |
Nick Gasson |
Subject: |
[PATCH] Silent make output for custom link commands |
Date: |
Thu, 15 Jul 2021 21:41:31 +0800 |
In my project I use a custom _LINK variable for a particular target which
needs to force using the C++ linker for an otherwise C program when linking
statically against a C++ library. I do it like this:
if LLVM_STATIC
# Force linking as C++ to allow LLVM static libraries
nodist_EXTRA_bin_nvc_SOURCES = dummy.cxx # Make sure CXXLD is defined
bin_nvc_LINK = $(CXXLD) $(AM_CFLAGS) $(CFLAGS) $(bin_nvc_LDFLAGS) -o $@
else
bin_nvc_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(bin_nvc_LDFLAGS) -o $@
endif
This works well except when using silent make rules where it prints "GEN"
instead of the usual "CCLD" or "CXXLD". The patch below allows one to define
a AM_V_*_LINK variable which is used instead of the default AM_V_GEN. In the
above example I would just add
AM_V_bin_nvc_LINK = $(AM_V_CCLD)
to get the expected output.
* bin/automake.in (define_per_target_linker_variable): Use AM_V_${target}_LINK
if defined as the verbose variable name for custom link commands.
* doc/automake.texi (Program and Library Variables): Document the new
variable.
* t/link_override.sh: Add extra checks for silent make rules.
---
bin/automake.in | 8 ++++++--
doc/automake.texi | 3 +++
t/link_override.sh | 7 +++++++
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/bin/automake.in b/bin/automake.in
index f6ebe30ea8b4..f04f5d5f5554 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -6360,8 +6360,12 @@ sub define_per_target_linker_variable
my ($linker, $target) = @_;
# If the user wrote a custom link command, we don't define ours.
- return "${target}_LINK"
- if set_seen "${target}_LINK";
+ my $custom_link = "${target}_LINK";
+ if (set_seen ($custom_link))
+ {
+ my $verbose = $custom_link if var (verbose_var ($custom_link));
+ return ($custom_link, $verbose);
+ }
my $xlink = $linker ? $linker : 'LINK';
diff --git a/doc/automake.texi b/doc/automake.texi
index dd932ddd796a..2babde9d6ddc 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -5903,6 +5903,9 @@ and used by Automake due to the use of per-target link
flags such as
@code{_CFLAGS}, @code{_LDFLAGS} or @code{_LIBTOOLFLAGS}, in cases where
they apply.
+If the variable @code{AM_V_*_LINK} exists it will be used to output a
+status line in silent mode, otherwise @code{AM_V_GEN} is used.
+
@item maude_CCASFLAGS
@itemx maude_CFLAGS
@itemx maude_CPPFLAGS
diff --git a/t/link_override.sh b/t/link_override.sh
index 1ac45fc5d240..81787af914ec 100644
--- a/t/link_override.sh
+++ b/t/link_override.sh
@@ -27,6 +27,8 @@ bin_PROGRAMS = foo bar baz boo
foo_LINK = $(LINK)
bar_LINK = $(LINK)
bar_LDFLAGS = $(AM_LDFLAGS)
+baz_LINK = $(LINK)
+AM_V_baz_LINK = xyz
END
$ACLOCAL
@@ -41,4 +43,9 @@ grep '.\$(LINK).*foo' Makefile.in && exit 1
grep '^ *bar_LINK *=.*bar_LDFLAGS' Makefile.in && exit 1
grep '.\$(bar_LINK).*bar' Makefile.in
+# Silent make rules should use AM_V_GEN unless overriden.
+grep '.\$(AM_V_GEN)\$(foo_LINK)' Makefile.in
+grep '.\$(AM_V_baz_LINK)\$(baz_LINK)' Makefile.in
+grep '.\$(AM_V_GEN)\$(baz_LINK)' Makefile.in && exit 1
+
exit 0
--
2.30.2
- [PATCH] Silent make output for custom link commands,
Nick Gasson <=