Thanks everyone for a very enlightening discussion. I realize that I wasn't thinking clearly about what it means to support UTF-8. I had seen lots of char pointers in the gmake source code so I was concerned about how multibyte characters would be handled. As Kaz pointed out, strlen(x) won't return the number of multibyte characters but, in retrospect, I don't think that matters. As long as lexical separator characters are single byte characters gmake need not care about multibyte characters.
As Eli pointed out, OS support of UTF-8 filenames is another issue. Jon