For the build to work on Windows, we need a unix compatibility layer (known as 
the "winenv" in the build system). This can be e.g. Cygwin or Msys. The build 
system then needs to adapt various aspect to get the build to work in this 
winenv. Over time, our current solutions (which were never that well-designed) 
has collapsed into an unmaintainable mess.

This rewrite takes on a fresh approach, by giving up on the native 
"fixpath.exe" converter, and instead relying on a platform-independent shell 
script "fixpath.sh", which can dynamically adapt to the current winenv. It also 
provides a proper framework on how to categorize, and support, different 
winenvs. As a result, we now easily support Cygwin, Msys2, WSL1 and WSL2 (the 
latter is unfortunately not mature enough to be able to compile the JDK).

Furthermore, this rewrite removes all the kludges and hacks that were put in 
place all over the code base, and consolidates all tricky part of handling the 
winenv to basically two places: setting up in configure, and run-time handling 
by fixpath.sh.

This patch also cleans up our handling of how we detect tools in configure, and 
makes a proper framework for cross-compilation on Windows.

-------------

Commit messages:
 - 8257679: Improved unix compatibility layer in Windows build (winenv)

Changes: https://git.openjdk.java.net/jdk/pull/1597/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1597&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8257679
  Stats: 4686 lines in 51 files changed: 1875 ins; 2474 del; 337 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1597.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1597/head:pull/1597

PR: https://git.openjdk.java.net/jdk/pull/1597

Reply via email to