From - Thu Jan 21 11:48:15 1999
Return-Path: <bug-libtool-request@gnu.org>
Received: from punt-2.mail.demon.net by mailstore
          for gvaughan@oranda.demon.co.uk id 916916500:20:05273:1;
          Thu, 21 Jan 99 11:01:40 GMT
Received: from mescaline.gnu.org ([158.121.106.21]) by punt-2.mail.demon.net
           id aa2109043; 21 Jan 99 11:01 GMT
Received: (from slist@localhost)
	by mescaline.gnu.org (8.9.1a/8.9.1) id GAA22496
	for gvaughan@oranda.demon.co.uk; Thu, 21 Jan 1999 06:06:25 -0500
Resent-Date: Thu, 21 Jan 1999 06:06:25 -0500
Received: from hades.aethos.co.uk (router.aethos.co.uk [195.171.18.1] (may be forged))
	by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id GAA22431;
	Thu, 21 Jan 1999 06:04:57 -0500
Received: from [193.164.192.100] (helo=zeus.aethos.co.uk)
	by hades.aethos.co.uk with esmtp (Exim 2.05 #1)
	id 103HtW-000753-00; Thu, 21 Jan 1999 11:03:26 +0000
Received: from oranda.demon.co.uk (samhain.aethos.co.uk [193.164.192.38]) by zeus.aethos.co.uk with ESMTP (8.7.1/8.7.1) id LAA16759; Thu, 21 Jan 1999 11:00:22 GMT
Message-ID: <36A70897.32F60E81@oranda.demon.co.uk>
Date: Thu, 21 Jan 1999 10:59:35 +0000
From: "Gary V. Vaughan" <gvaughan@oranda.demon.co.uk>
Organization: Aethos Communication Systems Ltd.
X-Mailer: Mozilla 4.5 [en] (WinNT; I)
X-Accept-Language: en
MIME-Version: 1.0
To: Akim Demaille <demaille@inf.enst.fr>
CC: Alexandre Oliva <oliva@dcc.unicamp.br>, Erez Zadok <ezk@cs.columbia.edu>,
        bug-libtool@gnu.org, automake@gnu.org
Subject: Re: lazy question
References: <199901202104.QAA04372@shekel.mcl.cs.columbia.edu> <or1zkpr5tq.fsf@araguaia.dcc.unicamp.br> <qylu2xkq5l6.fsf@quasimodo.enst.fr>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Resent-Message-ID: <"420Yv3.0.qU5.Ydmfs"@mescaline.gnu.org>
Resent-From: bug-libtool@gnu.org
X-Mailing-List: <bug-libtool@gnu.org> archive/latest/413
X-Loop: bug-libtool@gnu.org
Precedence: list
Resent-Sender: bug-libtool-request@gnu.org
X-Mozilla-Status: 8011
X-Mozilla-Status2: 00000000
X-UIDL: oranda.916916500:20:05273:1

Akim Demaille wrote:
> 
> >>>>> "Alexandre" == Alexandre Oliva <oliva@dcc.unicamp.br> writes:
> 
> Alexandre> On Jan 20, 1999, Erez Zadok <ezk@cs.columbia.edu> wrote:
> >> My application (am-utils) has this legacy stuff in my
> >> configure.in. I think I can safely take that out, now right?
> 
> >> LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'` AC_SUBST(LTLIBOBJS)
> >> LTALLOCA=`echo "$ALLOCA" | sed 's/\.o/.lo/g'` AC_SUBST(LTALLOCA)
> 
> Alexandre> Not really.  It looks like automake provides LTLIBOBJS,
> Alexandre> but not LTALLOCA :-(
> 
> Are you sure?  I can't find the string LTLIBOBJS anywhere in the
> sources.

It seems you are right.  Nor can I find reference anywhere except in the
documentation of both libtool and automake.  However, I stopped using
these variables a few months ago (just forgot to include them really),
and have suffered no ill effects.

> Alexandre> Unless it does but it's not documented.
> 
> Another related issue is that Automake does not include the little
> needed magic that enables ansi2knr on LIBOBJS files.  In addition to
> all this, people who want ansi2knr to be run should also include
> something like:
> 
> # This is necessary so that .o files in LIBOBJS are also built via
> # the ANSI2KNR-filtering rules.
> LIBOBJS=`echo $LIBOBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
> 
> (Stolen from Jim Meyering's fileutils's configure.in).

Yes, that makes sense.  Or rather, automake should do this for us if it
sees we are using ansi2knr.
 
> Also, it seems that now we should not append just
> replacement-function.o, but replacement-function.${ac_objext}[1].
>
> [1] What also mean that the above sed snippet should be adapted too.

Agreed.

> What is the real status of this?  Since Automake reads these LIBOBJS
> extensions, if one solution is to be chosen, couldn't it issue
> warnings for non complying additions?

In my experience, Tom is very good about applying patches he receives.
=)O|  Hopefully, I am too. =)O|

This probably needs to be fixed in all of auto{make,conf} and libtool
simultaneously.  I don't have time to look at it right now, but I can
certainly add it to the libtool TODO if you are also busy.

Cheers,
	Gary.

From - Thu Jan 21 11:56:34 1999
Return-Path: <bug-libtool-request@gnu.org>
Received: from punt-2.mail.demon.net by mailstore
          for gvaughan@oranda.demon.co.uk id 916919003:20:12487:14;
          Thu, 21 Jan 99 11:43:23 GMT
Received: from mescaline.gnu.org ([158.121.106.21]) by punt-2.mail.demon.net
           id aa2122944; 21 Jan 99 11:43 GMT
Received: (from slist@localhost)
	by mescaline.gnu.org (8.9.1a/8.9.1) id GAA23386
	for gvaughan@oranda.demon.co.uk; Thu, 21 Jan 1999 06:48:04 -0500
Resent-Date: Thu, 21 Jan 1999 06:48:04 -0500
Received: from ulysse.enst.fr (IDENT:1JXdBQbWjss9NS0/0RdVLAS9IgzJi29E@inf.enst.fr [137.194.2.81])
	by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id GAA23306;
	Thu, 21 Jan 1999 06:46:02 -0500
Received: from quasimodo.enst.fr (quasimodo.enst.fr [137.194.160.2])
	by ulysse.enst.fr (8.8.8/8.8.8) with ESMTP id MAA06955;
	Thu, 21 Jan 1999 12:40:28 +0100 (MET)
Received: (from demaille@localhost)
	by quasimodo.enst.fr (8.8.8/8.8.8) id MAA29306;
	Thu, 21 Jan 1999 12:40:26 +0100 (MET)
Sender: demaille@inf.enst.fr
To: "Gary V. Vaughan" <gvaughan@oranda.demon.co.uk>
Cc: Alexandre Oliva <oliva@dcc.unicamp.br>, Erez Zadok <ezk@cs.columbia.edu>,
        bug-libtool@gnu.org, automake@gnu.org, autoconf@gnu.org
Subject: Re: lazy question
References: <199901202104.QAA04372@shekel.mcl.cs.columbia.edu> <or1zkpr5tq.fsf@araguaia.dcc.unicamp.br> <qylu2xkq5l6.fsf@quasimodo.enst.fr> <36A70897.32F60E81@oranda.demon.co.uk>
Content-Type: text/plain; charset=US-ASCII
MIME-Version: 1.0
From: Akim Demaille <demaille@inf.enst.fr>
Date: 21 Jan 1999 12:40:25 +0100
In-Reply-To: "Gary V. Vaughan"'s message of "Thu, 21 Jan 1999 10:59:35 +0000"
Message-ID: <qylk8ygq2fq.fsf@quasimodo.enst.fr>
Lines: 34
User-Agent: Gnus/5.070069 (Pterodactyl Gnus v0.69) XEmacs/21.2(beta8) (Artemis)
Resent-Message-ID: <"uGwfO1.0.gi5.2Enfs"@mescaline.gnu.org>
Resent-From: bug-libtool@gnu.org
X-Mailing-List: <bug-libtool@gnu.org> archive/latest/414
X-Loop: bug-libtool@gnu.org
Precedence: list
Resent-Sender: bug-libtool-request@gnu.org
X-Mozilla-Status: 8011
X-Mozilla-Status2: 00000000
X-UIDL: oranda.916919003:20:12487:14

>>>>> "Gary" == Gary V Vaughan <gvaughan@oranda.demon.co.uk> writes:

>> What is the real status of this?  Since Automake reads these
>> LIBOBJS extensions, if one solution is to be chosen, couldn't it
>> issue warnings for non complying additions?

Gary> In my experience, Tom is very good about applying patches he
Gary> receives.  =)O| Hopefully, I am too. =)O|

:)

Gary> This probably needs to be fixed in all of auto{make,conf} and
Gary> libtool simultaneously.  I don't have time to look at it right
Gary> now, but I can certainly add it to the libtool TODO if you are
Gary> also busy.

I might have a look, but it is sure safer to write it down somewhere :)

Also, since this is getting more and more tricky, and since I don't
find it's real fun to write down

	LIBOBJS="$LIBOBJS blah.${ac_objext}"

we could introduce in Autoconf a macro taking care of this, no?
Something like

AC_LIBOBJS(blah)

Akim

-- 
P-mail: Akim Demaille, 107 rue Bobillot, F-75013 Paris, France
E-mail: demaille@inf.enst.fr
V-mail: +33 1 45 81 78 81

Subject: Re: lazy question
Date: Mon, 25 Jan 1999 11:38:41 +0000
From: "Gary V. Vaughan" <gvaughan@oranda.demon.co.uk>
Organization: Aethos Communication Systems Ltd.
To: tromey@cygnus.com
CC: Akim Demaille <demaille@inf.enst.fr>,
     Erez Zadok <ezk@cs.columbia.edu>, bug-libtool@gnu.org,
     automake@gnu.org, autoconf@gnu.org

Tom Tromey wrote:
>
> >> AC_LIBOBJS(blah)
>
> Gary> Agreed.  Also added to the archive.
>
> I'm suprised this isn't already there, since this subject has come up
> many times before.  I'm sure I mentioned it to Gord more than once.
>
> Basically, I think the right solution is to add some new
> functionality to autoconf that would let a user defer a piece of code
> to be run just before AC_OUTPUT.  Then the libtool macro would
> arrange to defer computation (and AC_SUBSTitution) of LTLIBOBJS and
> LTALLOCA until that time.

That sounds like a good, general, solution to me.  I'm adding this mail
to the libtool mail archive too =)O|

> This probably isn't even that hard to do; I just haven't done it.  I
> wonder if it is on Ben's to-do list?  Or perhaps one of the libtool
> hackers could submit the patch?

We are teetering on the edge of a 1.3 release, which must be compatible
with autoconf-2.13 and automake-1.4.  After that, I will try to submit a
patch to Ben (stop me if you have this in your pending queue!).

> In any case I don't think it is an automake problem per se.

Agreed.

Cheers,
        Gary.
