posted by ssolie on 3-Jan-2007 17:33:59 (1780 reads)
Changes in make 3.81-5 include: - now uses case-sensitive comparisons no matter what the underlying file system is capable of for maximum compatibility during porting (thanks Henning Nielsen Lund) - removed workaround for shell 51.x - removed support for AmigaOS device names; it is just impossible to parse out targets from device names (thanks Thore Böckelmann)
Since amigaos device names are no longer allowed, how should I modify makefiles that refer to eg SOMEASSIGN:somedir/somefile.c?
Yes.
I'd recommend getting rid of such assignments if you can. If not, change it to a POSIX-style path (/SOMEASSIGN/somedir/somefile.c) and avoid using AmigaOS commands which cannot deal with POSIX-style paths (e.g. cp instead of Copy) or you'll get a surprise when you use $@ and similar.
BTW, if you can think of some way to parse out AmigaOS device names from construct such as this: dev:dir:%.c:dev:dir/%.o (note no spaces)
We could put the feature back in. The problem is some tools which automagically create makefiles don't put spaces around the colon and break only on AmigaOS so it makes porting things that much more difficult. I could add the feature back into "make" and remove it for "gmake" as well but I thought it was a hack to start with (depended on optional spaces) so why not just get rid of it.
_________________ ExecSG Team Lead
Status: Offline
CodeSmith
Re: GNU make for OS4 Final Posted on 5-Jan-2007 3:57:03
I'm unfamiliar with that makefile construct. Are you sure you don't mean
dev:dir/%.c:dev:dir/%.o
In that case, a left-recursive grammar to parse that (and paths without device names) could be
dependency ::= left ":" right left ::= pattern right ::= pattern pattern ::= device ":" dirs-opt file pattern ::= dirs-opt file device ::= "a valid amigaOS device name, minus the colon. eg [a-zA-Z0-9_]+" dirs-opt ::= "/" dir more-dirs dirs-opt ::= dir more-dirs dirs-opt ::= "" more-dirs ::= "/" dirs-opt file ::= "a valid amigaOS filename, plus % for makefile subst"
Turning the grammar into actual code is left as an exercise to the reader (NB: someone check my work, it's been a while...)