Re: RFC: Use program_transform_name correctly

Daniel Jacobowitz
2003-10-07T22:53:08Z

On Tue, Oct 07, 2003 at 03:10:59PM -0700, Theodore A. Roth wrote:
>
>
> On Tue, 7 Oct 2003, Daniel Jacobowitz wrote:
>
> > On Tue, Oct 07, 2003 at 04:41:35PM -0500, Jim Blandy wrote:
> > >
> > > It seems as if some Makefiles aren't properly using
> > > program_transform_name.
> > >
> > > The same kind of weirdness corrected(?) in the patch below appears in
> > > gdb/Makefile.in, so I'm not at all sure I'm not misunderstanding
> > > what's going on. If folks agree that the change below would be
> > > correct, then I'll put together a larger patch that fixes the ones I
> > > can find elsewhere, too.
> > >
> > > (Not sure why this hasn't come up before; Daniel J.'s recent posts on
> > > the topic seem to be about setting program_transform_name, not on how
> > > to use it.)
> >
> > That is _bizarre_. Does it even give you anything but a sed error now?
> >
> > > 2003-10-07 Jim Blandy <jimb@redhat.com>
> > >
> > > * Makefile.in (RUNTEST_FOR_TARGET): Pass the transformation to set
> > > properly.
> > >
> > > Index: gdb/testsuite//Makefile.in
> > > ===================================================================
> > > RCS file: /cvs/cvsfiles/devo/gdb/testsuite/Makefile.in,v
> > > retrieving revision 1.66
> > > diff -c -r1.66 Makefile.in
> > > *** gdb/testsuite//Makefile.in 9 Sep 2003 21:03:53 -0000 1.66
> > > --- gdb/testsuite//Makefile.in 7 Oct 2003 21:33:22 -0000
> > > ***************
> > > *** 53,59 ****
> > > if [ "$(host_canonical)" = "$(target_canonical)" ]; then \
> > > echo runtest; \
> > > else \
> > > ! t='$(program_transform_name)'; echo runtest | sed -e '' $$t; \
> > > fi; \
> > > fi`
> > >
> > > --- 53,59 ----
> > > if [ "$(host_canonical)" = "$(target_canonical)" ]; then \
> > > echo runtest; \
> > > else \
> > > ! t='$(program_transform_name)'; echo runtest | sed -e '$$t'; \
> > > fi; \
> > > fi`
> >
> > That's certainly what it's supposed to look like.
> >
>
> You sure that the expression is right? I think the single quotes will
> hide the expansion of $t in the shell. I ran a simple test on my
> system with this make file fragment:
>
> roth@knuth:/tmp$ cat Makefile
> program_transform_name = s/^/avr-/
>
> all:
> t='$(program_transform_name)'; echo runtest | sed -e '$$t'
> t='$(program_transform_name)'; echo runtest | sed -e "$$t"
> roth@knuth:/tmp$ make
> t='s/^/avr-/'; echo runtest | sed -e '$t'
> runtest
> t='s/^/avr-/'; echo runtest | sed -e "$t"
> avr-runtest

Eh, you're right, this will teach me to answer without looking. From
gcc/Makefile.in:

t='$(program_transform_cross_name)'; echo ar | sed -e $$t ; \

That's the idiom we should use here.

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer