Re: RFC: Use program_transform_name correctly

Theodore A. Roth
2003-10-07T22:03:24Z

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

Ted Roth