On Apr 3 18 12:12, Simon J. Gerraty wrote:
Simon J. Gerraty <sjg%juniper.net@localhost> wrote:> It doesn't require historical memory. The test is there is so rules > like > > include lib bin sbin etc: > mkdir $@ && cd $@ && $(MAKE) -f $(SRC)/$@/Makefile > > are not mishandled as inclusions. Use the bmake include syntax; it was > put there for a reason. > > If you're trying to write a portable makefile, you should limit > yourself to reliable constructions; I very much doubt your own example > will work reliably in vintage make dialects. FWIW the existing test could ignore ':' if followed by non-white-space.Something like? Index: parse.c =================================================================== RCS file: /cvsroot/src/usr.bin/make/parse.c,v retrieving revision 1.227 diff -u -p -r1.227 parse.c --- parse.c 22 Feb 2018 01:59:28 -0000 1.227 +++ parse.c 3 Apr 2018 19:09:09 -0000 @@ -3073,7 +3073,8 @@ Parse_File(const char *name, int fd) ((line[0] == 's' || line[0] == '-') && strncmp(&line[1], "include", 7) == 0 && isspace((unsigned char) line[8]))) && - strchr(line, ':') == NULL) { + ((cp = strchr(line, ':')) == NULL || + (cp[1] != '\0' && !isspace((int)cp[1])))) { /* * It's an S3/S5-style "include". */
Yep, that'd work. Thanks! -- Pietro Cerutti
Attachment:
signature.asc
Description: PGP signature