[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] progs, libs: support _RANLIB overrides
From: |
Mike Frysinger |
Subject: |
[PATCH] progs, libs: support _RANLIB overrides |
Date: |
Wed, 19 Jan 2022 05:28:45 -0500 |
Much like we have per-target support for _AR and _LINK, add an _RANLIB
override too. This allows selection of specific ranlib tools in case
a non-standard archiver tool was forced.
* bin/automake.in: Check for _RANLIB per-target settings.
* doc/automake.texi: Document _RANLIB override.
* lib/am/library.am: Change $(RANLIB) to $(%XLIBRARY%_RANLIB).
* t/ranlib_override.sh: New test.
* NEWS: Mention new feature.
---
NEWS | 8 ++++++++
bin/automake.in | 6 +++++-
doc/automake.texi | 5 +++++
lib/am/library.am | 2 +-
t/ranlib_override.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 68 insertions(+), 2 deletions(-)
create mode 100644 t/ranlib_override.sh
diff --git a/NEWS b/NEWS
index 121fe820eeef..79a81f22e92f 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,14 @@ please see NEWS-2.0 and start following the advice there now.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+New in 1.17:
+
+* New features added
+
+ - RANLIB may be overridden on a per-target basis.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
New in 1.16.5:
* Bugs fixed
diff --git a/bin/automake.in b/bin/automake.in
index 28e0fe67233b..58b589495e39 100644
--- a/bin/automake.in
+++ b/bin/automake.in
@@ -2704,12 +2704,16 @@ sub handle_libraries ()
# Canonicalize names and check for misspellings.
my $xlib = check_canonical_spelling ($onelib, '_LIBADD', '_SOURCES',
'_OBJECTS', '_DEPENDENCIES',
- '_AR');
+ '_AR', '_RANLIB');
if (! var ($xlib . '_AR'))
{
define_variable ($xlib . '_AR', '$(AR) $(ARFLAGS)', $where);
}
+ if (! var ($xlib . '_RANLIB'))
+ {
+ define_variable ($xlib . '_RANLIB', '$(RANLIB)', $where);
+ }
# Generate support for conditional object inclusion in
# libraries.
diff --git a/doc/automake.texi b/doc/automake.texi
index 9916a41d4b79..67827cf8698a 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -5811,6 +5811,11 @@ compiler likes this variable set like so:
libmaude_a_AR = $(CXX) -ar -o
@end example
+@item maude_RANLIB
+A static library's index is updated by default by invoking @samp{$(RANLIB)}
+followed by the name of the library. You can override this by setting the
+@code{_RANLIB} variable.
+
@item maude_LIBADD
Extra objects can be added to a @emph{library} using the @code{_LIBADD}
variable. For instance, this should be used for objects determined by
diff --git a/lib/am/library.am b/lib/am/library.am
index 06af1d16821e..effaf39f93f5 100644
--- a/lib/am/library.am
+++ b/lib/am/library.am
@@ -17,4 +17,4 @@
%LIBRARY%: $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_DEPENDENCIES)
$(EXTRA_%XLIBRARY%_DEPENDENCIES) %DIRSTAMP%
%SILENT%-rm -f %LIBRARY%
%VERBOSE%$(%XLIBRARY%_AR) %LIBRARY% $(%XLIBRARY%_OBJECTS)
$(%XLIBRARY%_LIBADD)
- %SILENT%$(RANLIB) %LIBRARY%
+ %SILENT%$(%XLIBRARY%_RANLIB) %LIBRARY%
diff --git a/t/ranlib_override.sh b/t/ranlib_override.sh
new file mode 100644
index 000000000000..100e3734bc53
--- /dev/null
+++ b/t/ranlib_override.sh
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Copyright (C) 2009-2022 Free Software Foundation, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Test to make sure _RANLIB variables are detected and used as documented.
+
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AM_PROG_AR
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+EXTRA_LIBRARIES = libfoo.a libbar.a
+libfoo_a_SOURCES = foo.c
+libfoo_a_RANLIB = $(RANLIB)
+libbar_a_SOURCES = bar.c
+END
+
+$ACLOCAL
+$AUTOMAKE -a
+
+# We should use libfoo_a_RANLIB not RANLIB.
+grep '.\$(libfoo_a_RANLIB) *libfoo.a' Makefile.in
+grep '.\$(RANLIB).*libfoo.a' Makefile.in && exit 1
+
+# We should use default RANLIB.
+grep '^ *libbar_a_RANLIB *=.*\$(RANLIB)' Makefile.in
+
+# Silent make rules should use AM_V_at as they're silenced.
+grep '.\$(AM_V_at)\$(libfoo_a_RANLIB)' Makefile.in
+grep '.\$(AM_V_at)\$(libbar_a_RANLIB)' Makefile.in
+
+exit 0
--
2.33.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] progs, libs: support _RANLIB overrides,
Mike Frysinger <=