diff options
author | Mike Frysinger <vapier@gentoo.org> | 2022-01-19 05:14:47 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2022-01-24 23:43:43 -0500 |
commit | 975ea4d9cb3354fce41fcff7d91d5d6f918ada79 (patch) | |
tree | d6cfb4d9d75ee34e48fc1855062b509065106426 | |
parent | 6d0dde1f10685b91a5c412edf0c8e08f66e2c912 (diff) | |
download | automake-975ea4d9cb3354fce41fcff7d91d5d6f918ada79.tar.gz |
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.
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | bin/automake.in | 6 | ||||
-rw-r--r-- | doc/automake.texi | 5 | ||||
-rw-r--r-- | lib/am/library.am | 2 | ||||
-rw-r--r-- | t/list-of-tests.mk | 1 | ||||
-rw-r--r-- | t/ranlib_override.sh | 49 |
6 files changed, 69 insertions, 2 deletions
@@ -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 |