Re: [cc65] Please critique this makefile

From: Oliver Schmidt <ol.sc1web.de>
Date: 2010-04-25 00:26:36
Hi Greg,

> Hmmm ...; after thinking about it some more, I realize that I accused
> the wrong program.  If Make had mis-handled those backslashes, then the
> "\(.*\)!\1" wouldn't have worked!  Obviously, it did work; therefore,
> the problem must lie in the Sed program, instead.

That makes indeed much more sense to me.

> Cygwin uses GNU Sed;
> it knows that "\t" means TAB.  But apparently, the Sed program on
> silverdr's machine doesn't know it.
> ( http://www.grymoire.com/Unix/Sed.html says that "\t" started its life
> as a "PERL Regular Expression" extension.)

Okay...

> Therefore, that command must be alterred:
>        @sed -e"s!$(<:c=s)!$@!p" -e"s![^:]*:.\(.*\)!\1:!" < $(<:c=u) \
>        > $(@:o=d)

Thanks :-) Two remarks

1. The non-fluent sed readers might be interested to know that the
code above reads up to the ':' (known to just preceed the tab) and
than a single char whatever it may be.

2. While $(<:c=s) (and the other two substitution references)
certainly works I intentionally prefer including the '.'  like this
$(<:.c=.s) as it nicely resembles the file name extensions in the rule
(making it easier to understand) and is the style used in the GNU Make
Manual:
http://www.gnu.org/software/make/manual/make.html#Advanced

Regards,
Oliver
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo@musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
Received on Sun Apr 25 00:26:46 2010

This archive was generated by hypermail 2.1.8 : 2010-04-25 00:26:49 CEST