diff -r b99b41325d89 -r 50677f43ac3d doc/building.md --- a/doc/building.md Tue Jan 01 20:09:02 2019 -0500 +++ b/doc/building.md Wed Jan 02 12:59:26 2019 +0100 @@ -75,8 +75,8 @@ network share for the source code, see below for suggestions on how to keep the build artifacts on a local disk. - * On Windows, extra care must be taken to make sure the [Cygwin](#cygwin) - environment is consistent. It is recommended that you follow this + * On Windows, if using [Cygwin](#cygwin), extra care must be taken to make sure + the environment is consistent. It is recommended that you follow this procedure: * Create the directory that is going to contain the top directory of the @@ -174,10 +174,10 @@ Windows is the only non-POSIX OS supported by the JDK, and as such, requires some extra care. A POSIX support layer is required to build on Windows. -Currently, the only supported such layer is Cygwin. (Msys is no longer -supported due to a too old bash; msys2 and the new Windows Subsystem for Linux -(WSL) would likely be possible to support in a future version but that would -require effort to implement.) +Currently, the only supported such layers are Cygwin and Windows Subsystem for +Linux (WSL). (Msys is no longer supported due to a too old bash; msys2 would +likely be possible to support in a future version but that would require effort +to implement.) Internally in the build system, all paths are represented as Unix-style paths, e.g. `/cygdrive/c/hg/jdk9/Makefile` rather than `C:\hg\jdk9\Makefile`. This @@ -188,7 +188,7 @@ #### Cygwin -A functioning [Cygwin](http://www.cygwin.com/) environment is thus required for +A functioning [Cygwin](http://www.cygwin.com/) environment is required for building the JDK on Windows. If you have a 64-bit OS, we strongly recommend using the 64-bit version of Cygwin. @@ -198,7 +198,7 @@ update tools that are used by the JDK build process, and that can cause unexpected build problems. -The JDK requires GNU Make 4.0 or greater on Windows. This is usually not a +The JDK requires GNU Make 4.0 or greater in Cygwin. This is usually not a problem, since Cygwin currently only distributes GNU Make at a version above 4.0. @@ -221,6 +221,30 @@ https://cygwin.com/faq/faq.html#faq.using.bloda) and the section on [fork() failures](https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures). +#### Windows Subsystem for Linux (WSL) + +Windows 10 1809 or newer is supported due to a dependency on the wslpath utility +and support for environment variable sharing through WSLENV. Version 1803 can +work but intermittent build failures have been observed. + +It's possible to build both Windows and Linux binaries from WSL. To build +Windows binaries, you must use a Windows boot JDK (located in a +Windows-accessible directory). To build Linux binaries, you must use a Linux +boot JDK. The default behavior is to build for Windows. To build for Linux, pass +`--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu` to +`configure`. + +If building Windows binaries, the source code must be located in a Windows- +accessible directory. This is because Windows executables (such as Visual Studio +and the boot JDK) must be able to access the source code. Also, the drive where +the source is stored must be mounted as case-insensitive by changing either +/etc/fstab or /etc/wsl.conf in WSL. Individual directories may be corrected +using the fsutil tool in case the source was cloned before changing the mount +options. + +Note that while it's possible to build on WSL, testing is still not fully +supported. + ### Solaris See `make/devkit/solaris11.1-package-list.txt` for a list of recommended