]> git.ipfire.org Git - thirdparty/automake.git/commitdiff
progs, libs: support _RANLIB overrides
authorMike Frysinger <vapier@gentoo.org>
Wed, 19 Jan 2022 10:14:47 +0000 (05:14 -0500)
committerMike Frysinger <vapier@gentoo.org>
Tue, 25 Jan 2022 04:43:43 +0000 (23:43 -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/list-of-tests.mk: Add ranlib_override.sh.
* t/ranlib_override.sh: New test.
* NEWS: Mention new feature.

NEWS
bin/automake.in
doc/automake.texi
lib/am/library.am
t/list-of-tests.mk
t/ranlib_override.sh [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 121fe820eeef8e802f2a16769ca6a85aafde9c15..79a81f22e92f3186ea4dec5b259e7cbecb8514ca 100644 (file)
--- 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
index 28e0fe67233b0dae864a55619ffa2932d43994c5..58b589495e39000f864c21f787d8ba1f960e493d 100644 (file)
@@ -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.
index 9916a41d4b79cbdf8869dd26d037560d102704c9..67827cf8698a43b5cb57b1776ca5cec85fdbb96f 100644 (file)
@@ -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
index 06af1d16821eb711f4650bbe014bbf8a1bde9e4c..effaf39f93f5482bc60b19dd9581cc47a0f88e8d 100644 (file)
@@ -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%
index 57723b6be07c2dd3751ece9be53ba4e6a0beadf2..04a64aa47dac910f094f91fb39d56b91577647ec 100644 (file)
@@ -933,6 +933,7 @@ t/python-prefix.sh \
 t/python-vars.sh \
 t/python-virtualenv.sh \
 t/python-pr10995.sh \
+t/ranlib_override.sh \
 t/recurs-user.sh \
 t/recurs-user2.sh \
 t/recurs-user-deeply-nested.sh \
diff --git a/t/ranlib_override.sh b/t/ranlib_override.sh
new file mode 100644 (file)
index 0000000..100e373
--- /dev/null
@@ -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