On Saturday 26 February 2011, Ralf Wildenhues wrote: > * Stefano Lattarini wrote on Sat, Feb 26, 2011 at 02:54:09PM CET: > > Fine with me. This is the additional squash-in -- on the top of the old > > one, since I had already commited that locally :-( > > Don't worry, I do such junk commits all the time. You could > git diff HEAD@{2} > > or some similar command, based on 'git reflog' output. > Thanks for the suggestion; I keep forgetting the usefulness of the `reflog' command (or its very existence) ...
> > I will push in 72 hours if there are no further objections. > > Feel free to go ahead. > OK, attached is what I pushed. Note that it is slightly different from my last posted version, because also the call to aclocal can fail with older libtools. I should have tested better before submitting the previous diff; sorry for the noise. Thanks, Stefano
From d51e7b79713f909c235c9880f7f62c4b0c0910d0 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Thu, 24 Feb 2011 10:21:19 +0100 Subject: [PATCH] libtool: suggest LT_INIT if LTLIBRARIES primary is used When the LTLIBRARIES primary was used, but $(LIBTOOL) wasn't defined, automake suggested to add a call to AC_PROG_LIBTOOL in configure.ac. But that macro is deprecated since Libtool version 1.9b (2004-08-29), in favor of the newer LT_INIT. So suggest the use of this latter macro instead. * lib/Automake/Variable.pm (%_am_macro_for_var): Pair 'LIBTOOL' with 'LT_INIT', not with 'AC_PROG_LIBTOOL'. * libtool4.test: Adjust and extend. Also, add a call to macro AC_PROG_CC in configure.in, to help ensuring that automake does not fail for the wrong reasons. * ltinit.test: New test, ensure that automake's libtool support works with LT_INIT-based interface. Thanks to Jack Kelly for the suggestion. --- ChangeLog | 17 ++++++++++++ lib/Automake/Variable.pm | 2 +- tests/Makefile.am | 1 + tests/Makefile.in | 1 + tests/libtool4.test | 9 ++++++- tests/ltinit.test | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 92 insertions(+), 2 deletions(-) create mode 100755 tests/ltinit.test diff --git a/ChangeLog b/ChangeLog index 8d03512..47bc9fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2011-02-26 Stefano Lattarini <stefano.lattar...@gmail.com> + + libtool: suggest LT_INIT if LTLIBRARIES primary is used + When the LTLIBRARIES primary was used, but $(LIBTOOL) wasn't + defined, automake suggested to add a call to AC_PROG_LIBTOOL + in configure.ac. But that macro is deprecated since Libtool + version 1.9b (2004-08-29), in favor of the newer LT_INIT. So + suggest the use of this latter macro instead. + * lib/Automake/Variable.pm (%_am_macro_for_var): Pair 'LIBTOOL' + with 'LT_INIT', not with 'AC_PROG_LIBTOOL'. + * libtool4.test: Adjust and extend. Also, add a call to macro + AC_PROG_CC in configure.in, to help ensuring that automake does + not fail for the wrong reasons. + * ltinit.test: New test, ensure that automake's libtool support + works with LT_INIT-based interface. + Thanks to Jack Kelly for the suggestion. + 2011-02-20 Stefano Lattarini <stefano.lattar...@gmail.com> tests: tempdirs with restrictive permissions are cleaned correctly diff --git a/lib/Automake/Variable.pm b/lib/Automake/Variable.pm index cb9d182..686847d 100644 --- a/lib/Automake/Variable.pm +++ b/lib/Automake/Variable.pm @@ -162,7 +162,7 @@ my %_am_macro_for_var = EMACS => 'AM_PATH_LISPDIR', GCJ => 'AM_PROG_GCJ', LEX => 'AM_PROG_LEX', - LIBTOOL => 'AC_PROG_LIBTOOL', + LIBTOOL => 'LT_INIT', lispdir => 'AM_PATH_LISPDIR', pkgpyexecdir => 'AM_PATH_PYTHON', pkgpythondir => 'AM_PATH_PYTHON', diff --git a/tests/Makefile.am b/tests/Makefile.am index 047bc7b..cd564fa 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -481,6 +481,7 @@ ltcond.test \ ltcond2.test \ ltconv.test \ ltdeps.test \ +ltinit.test \ ltinstloc.test \ ltlibobjs.test \ ltlibsrc.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index fe6238b..f56ff21 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -751,6 +751,7 @@ ltcond.test \ ltcond2.test \ ltconv.test \ ltdeps.test \ +ltinit.test \ ltinstloc.test \ ltlibobjs.test \ ltlibsrc.test \ diff --git a/tests/libtool4.test b/tests/libtool4.test index bcc9b0f..9f6a730 100755 --- a/tests/libtool4.test +++ b/tests/libtool4.test @@ -20,10 +20,17 @@ set -e +cat >> configure.in <<'END' +AC_PROG_CC +END + cat > Makefile.am << 'END' EXTRA_LTLIBRARIES = liblib.la END $ACLOCAL AUTOMAKE_fails -grep AC_PROG_LIBTOOL stderr +grep '[Ll]ibtool library .*LIBTOOL.* undefined' stderr +grep 'define .*LIBTOOL.* add .*LT_INIT' stderr + +: diff --git a/tests/ltinit.test b/tests/ltinit.test new file mode 100755 index 0000000..b4eaad6 --- /dev/null +++ b/tests/ltinit.test @@ -0,0 +1,64 @@ +#!/bin/sh +# Copyright (C) 2011 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 2, 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 <http://www.gnu.org/licenses/>. + +# Test that libtool support works correctly when "newer" libtool +# interface (with LT_INIT etc.) is used (this interface has been +# present since libtool 1.9b, circa 2004). + +required='libtoolize' +. ./defs || Exit 1 + +set -e + +cat >>configure.in <<'END' +AC_PROG_CC +dnl Older libtool versions don't define LT_PREREQ :-( +m4_ifdef([LT_PREREQ], + [LT_PREREQ([2.0])], + [m4_fatal([Libtool version too old], [63])]) +LT_INIT([dlopen]) +AC_OUTPUT +END + +cat >Makefile.am <<'END' +lib_LTLIBRARIES = libfoo.la +END + +cat > libfoo.c <<'END' +int foo (void) +{ + return 1; +} +END + +libtoolize +# Skip if older libtool (pre-2.0) is used. +{ $ACLOCAL && $AUTOCONF; } || { + if test $? -eq 63; then Exit 77; else Exit 1; fi +} +$EGREP 'LT_(INIT|PREREQ)' configure && Exit 1 # Sanity check. +$AUTOMAKE -a + +cwd=`pwd` +./configure --prefix="$cwd/inst" >stdout || { cat stdout; Exit 1; } +cat stdout +grep '^checking.*dlopen' stdout + +$MAKE +$MAKE install +$MAKE distcheck + +: -- 1.7.2.3