automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[automake-commit] branch master updated: progs, libs: support _RANLIB ov


From: Mike Frysinger
Subject: [automake-commit] branch master updated: progs, libs: support _RANLIB overrides
Date: Tue, 25 Jan 2022 00:39:51 -0500

This is an automated email from the git hooks/post-receive script.

vapier pushed a commit to branch master
in repository automake.

View the commit online:
https://git.savannah.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=975ea4d9cb3354fce41fcff7d91d5d6f918ada79

The following commit(s) were added to refs/heads/master by this push:
     new 975ea4d9c progs, libs: support _RANLIB overrides
975ea4d9c is described below

commit 975ea4d9cb3354fce41fcff7d91d5d6f918ada79
Author: Mike Frysinger <vapier@gentoo.org>
AuthorDate: Wed Jan 19 05:14:47 2022 -0500

    progs, libs: support _RANLIB overrides
    
    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                 |  8 ++++++++
 bin/automake.in      |  6 +++++-
 doc/automake.texi    |  5 +++++
 lib/am/library.am    |  2 +-
 t/list-of-tests.mk   |  1 +
 t/ranlib_override.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index 121fe820e..79a81f22e 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 28e0fe672..58b589495 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 9916a41d4..67827cf86 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 06af1d168..effaf39f9 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/list-of-tests.mk b/t/list-of-tests.mk
index 57723b6be..04a64aa47 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -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
index 000000000..100e3734b
--- /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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]