The actual problem was in SetupZipArchive in JavaCompilation.gmk and was due to a change I made.
To conform to some of the tools we use on our mainframe systems, I fold very long source lines into multiple 128-byte lines with a backslash continuation character. The tool for doing that sometimes makes odd decisions and folded one long line into three lines something like this: <tab> \ $$ <start of statement>\ $$ <rest of statement> Apparently make lost track of the original tab character, probably because that line was all white space. I rearranged it to look like this: <tab> $$ <start of statement>\ $$ <rest of statement> Surprisingly, this problem only appeared once in the entire project. Now everything builds cleanly. I didn't need Omair's patch because I'm building on Windows and that patch is for Linux. Thanks for your help and pointing me in the right direction. Tom -----Original Message----- From: Erik Joelsson [mailto:erik.joels...@oracle.com] Sent: Monday, October 13, 2014 10:21 AM To: Salter, Thomas A Cc: Omair Majid; OpenJDK (build-dev@openjdk.java.net) Subject: Re: GNU Make 4.0 I don't remember exactly, but the following case would be problematic: FOO_FILE := /path/to/foo$$file BAR_FILE := /path/to/bar$$file $(FOO_FILE): $(BAR_FILE) do_something $< $@ The correct escaping for the shell will not necessarily be correct for the target or dependency lines for make. IIRC, in one make version, it helps if you escape the $$ with a backlash '\'. I also think the target and the dependencies will behave differently in one version. Regarding your error, what is on line 204 in you BuildLangtools.gmk? Is it a call to SetupJavaCompilation? If so, I would add $$(info ) lines to make/common/JavaCompilation.gmk and see how far I got parsing before the error to help pinpoint the failing line. /Erik but if you have a filename that includes a $ and put that in a rule, as either the target or a dependency, then references to $@ or $< can On 2014-10-13 16:04, Salter, Thomas A wrote: > I'm building 8u5. I think that was the first update after JDK 8 shipped. > > Do you remember the nature of the subtle differences? This problem could > very well be the result of my changes to some of the make files. > > Tom > > > -----Original Message----- > From: Erik Joelsson [mailto:erik.joels...@oracle.com] > Sent: Monday, October 13, 2014 5:05 AM > To: Salter, Thomas A > Cc: Omair Majid; OpenJDK (build-dev@openjdk.java.net) > Subject: Re: GNU Make 4.0 > > Hello, > > The patch from Omair will likely be needed for building hotspot. Your > failure is much earlier though. There are some subtle differences in > make 3.82 and 4.0 regarding escaping of $ in certain situations. This > caused some trouble with referring to inner classes from makefiles. I > did some improvements in this area at some point but don't remember > exactly when. When you say not up to date, how old is that? I'm pretty > sure that jdk8 at release was buildable with make 4.0, but I may be wrong. > > /Erik > > On 2014-10-10 21:39, Omair Majid wrote: >> * Salter, Thomas A <thomas.sal...@unisys.com> [2014-10-10 14:23]: >>> Are there any known issues with using GNU Make 4.0 to build OpenJDK8? >> Yes. I had to add this patch in Fedora to build with Make 4.0: >> http://pkgs.fedoraproject.org/cgit/java-1.8.0-openjdk.git/tree/hotspot-build-j-directive.patch >> >> Cheers, >> Omair >>