building the JDK on Windows using Cygwin

Daniel Jeliński djelinski1 at gmail.com
Tue Jul 2 08:20:35 UTC 2024


Hi Anil,
I can confirm that building on Windows 11 + cygwin + VS 2022 Community
installed with default settings and in the default location works just
fine without any extra command line parameters. The only parameter you
need is --with-boot-jdk, and even that can be omitted if you have the
right Java version on path. Can you try that? If it still fails,
please post the config.log file, it should be under
build/windows*/configure-support.
Regards,
Daniel

wt., 2 lip 2024 o 03:55 Anil <1dropaflame at gmail.com> napisał(a):
>
> Thank you for your reply.
> I ran the Visual Studio Setup and installed both Build Tools 2019, and also Visual Studio 2022.
> I enabled the checkboxes in *both* for Desktop Development with C++.
>
> I tried it but failed. I opened Administrator window in both Powershell and CMD but both gave "Access is denied"
>
> PS C:\WINDOWS\system32> cd 'C:\Program Files\'
> PS C:\Program Files> fsutil file setshortname "Microsoft Visual Studio" MICROS~3
> Error:  Access is denied.
> PS C:\Program Files>
>
> Someone else suggested
> $ bash configure --enable-debug --with-toolchain-path="C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\Hostx64\\x64" --with-toolchain-version=2022
> and also without
> $ bash configure --enable-debug --with-toolchain-path="C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\Hostx64\\x64"
> and also with 2019
> $ bash configure --enable-debug --with-toolchain-path="C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\bin\\Hostx64\\x64" --with-toolchain-version=2019
>
> all give error:
>
> configure: Using default toolchain microsoft (Microsoft Visual Studio)
> configure: error: Cannot locate a valid Visual Studio installation
> configure exiting with result code 1
>
>
>
>
> On Mon, Jul 1, 2024 at 7:53 PM Chen Liang <liangchenblue at gmail.com> wrote:
>>
>> Hi Anil,
>> I will share how I set up Visual Studio 2022 (2019 is a bit old now) for building JDK.
>> First, I go to https://visualstudio.microsoft.com to download the visual studio setup (which installs an installer)
>> Once in the installer, go to visual studio, and select "Desktop Development with C++" which will install everything you need.
>>
>> In your "C:\Program Files" (or C:\PROGRA~1) open administrator powershell (you can do it by right-clicking on win start menu icon) run:
>> fsutil file setshortname "Microsoft Visual Studio" MICROS~3
>> This is the only directory that really need short path; the rest of the path to cl already has no space.
>>
>> And yes, I am using Windows11+cygwin to build openjdk. I think you already have 8dot3name enabled so you can see PROGRA~1, you shouldn't be far.
>>
>> On Mon, Jul 1, 2024 at 2:31 PM Anil <1dropaflame at gmail.com> wrote:
>>>
>>> [Erik] " You could try enabling 8dot3name on the whole volume (C:) using fsutil [1],  "
>>> I don't know what this means and the side effects. I don't want to try this on the entire C:
>>> There must be people using Windows11 and Cygwin64 who have gotten OpenJDK to build?
>>>
>>> On Mon, Jul 1, 2024 at 1:59 AM <erik.joelsson at oracle.com> wrote:
>>>>
>>>> Hello Anil,
>>>>
>>>> On 6/30/24 12:50, Anil wrote:
>>>>
>>>> I went into the VC.../bin directory to get the actual path and tried again, but it failed.
>>>>
>>>> $ bash configure --with-boot-jdk=/c/Users/Anil/OpenJDK/jdk-22.0.1 --enable-debug --with-tools-dir="C:\PROGRA~2\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin"
>>>>
>>>> The OpenJDK build cannot handle paths with spaces in them, and on Windows, where the default installation directories of things like Visual Studio and the SDK have spaces in the directory names, we rely on short paths to work around this. If you installed Visual Studio in the default location, you should not need to point to a tools dir, and doing so won't help if the paths can't be expressed without spaces in them. It's annoying that Windows seems to have turned off short path generation by default in later versions.
>>>>
>>>> You could try enabling 8dot3name on the whole volume (C:) using fsutil [1], but you probably need to reinstall Visual Studio after that to get the short path names generated for all the directories in the installation.
>>>>
>>>> /Erik
>>>>
>>>> [1] https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-8dot3name
>>>>
>>>> configure: Using default toolchain microsoft (Microsoft Visual Studio)
>>>> configure: The path given by --with-tools-dir does not contain a valid
>>>> configure: Visual Studio installation. Please point to the VC/bin or VC/bin/amd64
>>>> configure: directory within the Visual Studio installation
>>>> configure: error: Cannot locate a valid Visual Studio installation
>>>> configure exiting with result code 1
>>>>
>>>>
>>>> On Sun, Jun 30, 2024 at 2:07 PM Anil <1dropaflame at gmail.com> wrote:
>>>>>
>>>>> Thank you for your reply.
>>>>> I tried without those flags and got the same error message
>>>>> $ bash configure --with-boot-jdk=/c/Users/Anil/OpenJDK/jdk-22.0.1
>>>>> ...
>>>>> configure: Using default toolchain microsoft (Microsoft Visual Studio)
>>>>> configure: error: Cannot locate a valid Visual Studio installation
>>>>> configure exiting with result code 1
>>>>>
>>>>> checking the shortnames.
>>>>>
>>>>> C:\>dir /x
>>>>> Directory of C:\
>>>>> 06/29/2024  09:43 PM    <DIR>          PROGRA~1     Program Files
>>>>> 03/01/2024  06:34 PM    <DIR>          PROGRA~2     Program Files (x86)
>>>>>
>>>>> Directory of C:\PROGRA~1
>>>>> C:\PROGRA~1>dir /x
>>>>> 06/29/2024  09:43 PM    <DIR>                       Microsoft Visual Studio
>>>>>
>>>>> Directory of C:\PROGRA~2
>>>>> C:\PROGRA~2>dir /x
>>>>> 06/29/2024  09:41 PM    <DIR>          Microsoft Visual Studio
>>>>>
>>>>> I don't see any shortnames set.
>>>>>
>>>>> In the Visual Studio Installer, both Visual Studio Build Tools 2019 and Visual Studio Community are set.
>>>>> When I click on the Build Tools, I see the checkbox for Desktop C++ is checked.
>>>>>
>>>>>
>>>>> I saw that the C++
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Jun 30, 2024 at 1:24 PM Chen Liang <liangchenblue at gmail.com> wrote:
>>>>>>
>>>>>> Usually Microsoft Visual Studio c compiler (as installed by Visual Studio installer) already has short names set. It seems the short name has to be 8 characters in length and you can't set it when some process is running in that directory. You can check the short path in Windows cmd's "dir /x" command. And try configure without --with-toolchain-version and --with-tools-dir and only set these flags if it fails without those flags: you declare version is 22 but you point to MSVC 2019's directory, and you should point to the bin directory within the VC directory.
>>>>>>
>>>>>> On Sun, Jun 30, 2024 at 12:57 PM Anil <1dropaflame at gmail.com> wrote:
>>>>>>>
>>>>>>> Update:
>>>>>>> I was able to get past the error
>>>>>>> I installed Visual Studio 2022, rebooted, but it still cannot detect it.
>>>>>>>
>>>>>>> PS C:\> fsutil file setshortname "Program Files (x86)" PROGRA~1
>>>>>>> Error:  Access is denied.
>>>>>>>
>>>>>>> PS C:\Program Files (x86)> fsutil file setshortname  "Microsoft Visual Studio"  Microsoft_Visual_Studio_2019
>>>>>>> Error:  The parameter is incorrect.
>>>>>>>
>>>>>>> $ bash configure --with-boot-jdk=/c/Users/Anil/OpenJDK/jdk-22.0.1 --with-toolchain-version=2022 --enable-debug --with-tools-dir="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC"
>>>>>>>
>>>>>>> configure: Using default toolchain microsoft (Microsoft Visual Studio)
>>>>>>> configure: The path given by --with-tools-dir does not contain a valid
>>>>>>> configure: Visual Studio installation. Please point to the VC/bin or VC/bin/amd64
>>>>>>> configure: directory within the Visual Studio installation
>>>>>>> configure: error: Cannot locate a valid Visual Studio installation
>>>>>>> configure exiting with result code 1
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Jun 28, 2024 at 8:50 PM Anil <1dropaflame at gmail.com> wrote:
>>>>>>>>
>>>>>>>> (changed Subject line. was: Is anyone able to build the JDK on Windows using VirtualBox to host Ubuntu?)
>>>>>>>>
>>>>>>>> I downloaded and unzipped openjdk.
>>>>>>>> $ ls
>>>>>>>> jdk  jdk-22.0.1  openjdk-22.0.1_windows-x64_bin.zip
>>>>>>>>
>>>>>>>> but still I get the same error message
>>>>>>>>
>>>>>>>>> configure: Could not find a valid Boot JDK. OpenJDK distributions are available at http://jdk.java.net/.
>>>>>>>>> configure: This might be fixed by explicitly setting --with-boot-jdk
>>>>>>>>> configure: error: Cannot continue
>>>>>>>>> configure exiting with result code 1
>>>>>>>>
>>>>>>>>
>>>>>>>> I am wondering if I should not install the Open JDK in the directory created by Cygwin (/c/Users/Anil/OpenJDK) but install it in the /cygdrive Windows folders?
>>>>>>>> (I observe that the folder created in Cygwin is not visible outside, in Windows even after rebooting the laptop).
>>>>>>>> Can someone please confirm?
>>>>>>>> thanks,
>>>>>>>> Anil
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, Jun 28, 2024 at 6:48 PM Anil <1dropaflame at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>> Thank you. I installed Cygwin on my Windows 11 laptop, and after overcoming some minor blocks, ran 'bash configure'.
>>>>>>>>> Am I correct in assuming that I also need to have Open JDK installed, not the Oracle JDK?
>>>>>>>>> I have Java 17 from Oracle installed.
>>>>>>>>>
>>>>>>>>> configure: Found potential Boot JDK using JAVA_HOME
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/jdk-17.0.4.1 is); ignoringot(TM) 64-Bit Server VM (build 17.0.4.1+1-LTS-2, mixed mode, sharing)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> checking for javac... /cygdrive/c/progra~1/common~1/oracle/java/javapath/javac.exe
>>>>>>>>> checking for java... /cygdrive/c/progra~1/common~1/oracle/java/javapath/java.exe
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/progra~1/java/jdk-17.0.4.1)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/jdk-17.0.4.1 is); ignoringot(TM) 64-Bit Server VM (build 17.0.4.1+1-LTS-2, mixed mode, sharing)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/progra~1/java/jdk-11.0.10)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/jdk-11.0.10 is ); ignoringot(TM) 64-Bit Server VM 18.9 (build 11.0.10+8-LTS-162, mixed mode)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/progra~1/java/javafx-sdk-11.0.2)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/javafx-sdk-11.0.2 did not contain bin/java; ignoring
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/progra~1/java/jdk-17.0.4.1)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/jdk-17.0.4.1 is); ignoringot(TM) 64-Bit Server VM (build 17.0.4.1+1-LTS-2, mixed mode, sharing)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/progra~1/java/jdk-11.0.10)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/jdk-11.0.10 is ); ignoringot(TM) 64-Bit Server VM 18.9 (build 11.0.10+8-LTS-162, mixed mode)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/progra~1/java/javafx-sdk-11.0.2)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/progra~1/java/javafx-sdk-11.0.2 did not contain bin/java; ignoring
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/Program Files/Java/jdk-17.0.4.1)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/Program Files/Java/jdk-17.0.4); ignoringot(TM) 64-Bit Server VM (build 17.0.4.1+1-LTS-2, mixed mode, sharing)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/Program Files/Java/jdk-11.0.10)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/Program Files/Java/jdk-11.0.1); ignoringot(TM) 64-Bit Server VM 18.9 (build 11.0.10+8-LTS-162, mixed mode)
>>>>>>>>> configure: (Your Boot JDK version must be one of: 22 23 24)
>>>>>>>>> configure: Found potential Boot JDK using well-known locations (in /cygdrive/c/Program Files/Java/javafx-sdk-11.0.2)
>>>>>>>>> configure: Potential Boot JDK found at /cygdrive/c/Program Files/Java/javafx-sdk-11.0.2 did not contain bin/java; ignoring
>>>>>>>>> configure: Could not find a valid Boot JDK. OpenJDK distributions are available at http://jdk.java.net/.
>>>>>>>>> configure: This might be fixed by explicitly setting --with-boot-jdk
>>>>>>>>> configure: error: Cannot continue
>>>>>>>>> configure exiting with result code 1
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Jun 27, 2024 at 9:06 AM <erik.joelsson at oracle.com> wrote:
>>>>>>>>>>
>>>>>>>>>> Hello Anil,
>>>>>>>>>>
>>>>>>>>>> Building in a VM on a laptop should be doable, but given how resource intensive the JDK build is, you could run into problems like you describe. You are most likely to get the best build performance running natively on the machine and OS you have, so my recommendation is to build for Windows in your case. If you still prefer to build for Linux, I think the best option is to use WSL. See doc/building.md for instructions on how to build for Linux in WSL. To build for Windows, I recommend installing Cygwin as the most straightforward and well tested option for a POSIX support layer on Windows. Once installed, you won't need to run any Windows commands as Cygwin emulates a Linux/Unix environment. Again see doc/building.md for instructions on how to install a build environment on Windows.
>>>>>>>>>>
>>>>>>>>>> /Erik
>>>>>>>>>>
>>>>>>>>>> On 6/27/24 04:51, Anil wrote:
>>>>>>>>>>
>>>>>>>>>> I want to try out a small contribution to the JDK and want to build the JDK first.
>>>>>>>>>> I have a Windows 11 laptop.
>>>>>>>>>>
>>>>>>>>>> I am not comfortable with the Windows commands and someone mentioned in this forum that most of the building is done on Linux.
>>>>>>>>>> So I installed VirtualBox 7.0.18 and Ubuntu 24.04. however I was getting black screens and freezing. I downgraded the Ubuntu to 222.04 and still got black screens. I don't know why this is happening.
>>>>>>>>>> Any advice appreciated.
>>>>>>>>>> Anil
>>>>>>>>>>
>>>>>>>>>> On Tue, Jun 18, 2024, 7:25 PM Anil <1dropaflame at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hello,
>>>>>>>>>>> I want to try out a small contribution to the JDK and wanted to build the JDK first,
>>>>>>>>>>> before I change the code.
>>>>>>>>>>> I forked and cloned the jdk following the instructions at The OpenJDK Developers' Guide – OpenJDK Developers’ Guide
>>>>>>>>>>>
>>>>>>>>>>> I am on Windows 11.
>>>>>>>>>>> These instructions are given on the page but I am unsure which of these to execute since I have already forked and cloned the git repo
>>>>>>>>>>>
>>>>>>>>>>> $ wget https://download.java.net/java/GA/jdk16/7863447f0ab643c585b9bdebf67c69db/36/GPL/openjdk-16_linux-x64_bin.tar.gz
>>>>>>>>>>> $ tar xzf openjdk-16_linux-x64_bin.tar.gz
>>>>>>>>>>> $ sudo apt-get install autoconf zip make gcc g++ libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libcups2-dev libfontconfig1-dev libasound2-dev
>>>>>>>>>>> $ cd jdk
>>>>>>>>>>> $ sh ./configure --with-boot-jdk=$HOME/jdk-16/
>>>>>>>>>>> $ make images
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Do I still need to do the wget?
>>>>>>>>>>> Also, I wondered if I should use book jdk-17 instead of jdk-16 as in the instructions above.
>>>>>>>>>>> thanks,
>>>>>>>>>>> Anil
>>>>>>>>>>>


More information about the build-dev mailing list