bash configure fails on missing VS tools dir

Nir Lisker nlisker at gmail.com
Thu Jan 4 11:45:44 UTC 2018


Yes, that did it, autegen.sh completed successfully. Thanks.

Now the next problem with "bash configure":
configure: error: Target CPU mismatch. We are building for x86_64 but CL is
for "x86"; expected "x64".

If that's the cl.exe which is in the same folder as vcvars, I noticed that
in toolchain_windows.m4 that the script can try to find vcvars64.bat:

   if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
      VCVARSFILE="vc/bin/vcvars32.bat"
   else
      VCVARSFILE="vc/bin/amd64/vcvars64.bat"
   fi

But this file doesn't exist in the VS 12.0 or 11.0 installations. The
change I made to the above in order to solve the "missing" VC/bin dir was
to force using "vc/bin/vcvars32.bat" (because /amd64 doesn't exist), which
I guess was not smart and caused the above error.
Here is the list of all vcvars in the VS installations:
https://i.imgur.com/QtlePFq.png

Note that VS 2017 has vcvars64.bat. Maybe vcvarsx86_amd64.bat in VS 2013 is
fine?

By the way, would building JDK 10 be any different in terms of
compatibility? I already built OpenJFX 11 and I only need the JDK for that
purpose. If JDK 10 can work here and is easier to build I'm fine with that.



On Thu, Jan 4, 2018 at 12:55 PM, Erik Joelsson <erik.joelsson at oracle.com>
wrote:

> I think you also need the "Wrapper scripts for autoconf commands". Was a
> long time since I did this.
>
> /Erik
>
> On 2018-01-04 11:40, Nir Lisker wrote:
>
> I get "-bash: autoconf: command not found".
>
> Here's an image of the autoconf packages in the cygwin installer in case I
> didn't install the right one: https://i.imgur.com/V3GMg9Y.png
>
> Do I need to add some directory to the PATH env variable? I'd imagine
> cygwin would know where it installed it.
>
> - Nir
>
> On Thu, Jan 4, 2018 at 10:29 AM, Erik Joelsson <erik.joelsson at oracle.com>
> wrote:
>
>> Can you run "autoconf --version" on the command line?
>>
>> /Erik
>>
>> On 2018-01-03 16:33, Nir Lisker wrote:
>>
>> Hello Erik,
>>
>> I installed autoconf 2.69-3 through cygwin (indeed it was listed as 2.5).
>> However, running "bash autogen.sh" still gives:
>>
>> You need autoconf installed to be able to regenerate the configure script
>> Error: Cannot find autoconf
>>
>> If I run "bash configure" I get
>>
>> Configure source code has been updated, checking time stamps
>> Running generated-configure.sh
>>
>> And that's it. I checked generated-configure.sh and it contains only
>> comments and no script.
>>
>> In autogen.sh I tried adding a print to help with debugging:
>>
>> AUTOCONF="`which autoconf 2> /dev/null | grep -v '^no autoconf in'`"
>> echo "AUTOCONF is ${AUTOCONF}"
>>
>> which prints
>>
>> AUTOCONF is
>>
>> Apologies for the mess. How do I continue?
>>
>> - Nir
>>
>> On Wed, Jan 3, 2018 at 4:54 PM, Erik Joelsson <erik.joelsson at oracle.com>
>> wrote:
>>
>>> Hello Nir,
>>> On 2018-01-03 15:34, Nir Lisker wrote:
>>>
>>> Thanks for the detailed reply.
>>>
>>> Iv'e changed the logic in toolchain_windows.m4 and got this message:
>>>
>>> Configure source code has been updated, checking time stamps
>>> Warning: The configure source files is newer than the generated files.
>>> Cannot locate autoconf, unable to correct situation.
>>> Please install autoconf and run 'bash autogen.sh' to update the
>>> generated files.
>>> Error: Cannot continue
>>>
>>> I downloaded autoconf 2.69. How do I point to it? There is no
>>> installation.
>>>
>>> If you downloaded the src distro, then you need to compile and install
>>> it with something like
>>>
>>> $ ./configure
>>> $ make
>>> $ make install
>>>
>>> On Windows it's probably easier to just get it through cygwin. Note that
>>> the cygwin installer probably still lists autoconf as an old version in the
>>> name, but last I checked it was 2.69 that they actually provided. On Linux,
>>> just use your favorite package installation tool (apt, yum etc).
>>>
>>> As long as it's on the path, autogen.sh will pick it up. Configure will
>>> also detect that you changed an .m4 file and run autogen.sh for you
>>> automatically, which is what happened to you above.
>>>
>>> /Erik
>>>
>>> On Wed, Jan 3, 2018 at 3:24 PM, Erik Joelsson <erik.joelsson at oracle.com>
>>> wrote:
>>>
>>>> Hello Nir,
>>>>
>>>> On 2018-01-03 13:05, Nir Lisker wrote:
>>>>
>>>>> When trying to build JDK 11 on Windows 10 with VS Express 2013 Update
>>>>> 4 (as
>>>>> stated in the docs - the highest supported version) the build fails:
>>>>>
>>>> AFAIK, this should work, though I have only ever used VS 2013
>>>> Professional.
>>>>
>>>>> bash configure  --with-tools-dir='C:\Program Files (x86)\Microsoft
>>>>> Visual
>>>>> Studio 12.0\VC\bin'
>>>>>
>>>> If VS is properly installed in the default location, there should be no
>>>> need to specify --with-tools-dir. Configure will look in the default
>>>> location automatically.
>>>>
>>>>> ...
>>>>> configure: Found Visual Studio installation at /cygdrive/c/Program
>>>>> Files
>>>>> (x86)/Microsoft Visual Studio 12.0/ using --with-tools-dir
>>>>> configure: Warning: vc/bin/amd64/vcvars64.bat is missing, this is
>>>>> probably
>>>>> Visual Studio Express. Ignoring
>>>>> configure: Found Visual Studio installation at /cygdrive/c/Program
>>>>> Files
>>>>> (x86)/ using --with-tools-dir
>>>>> configure: Warning: vc/bin/amd64/vcvars64.bat is missing, this is
>>>>> probably
>>>>> Visual Studio Express. Ignoring
>>>>> 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
>>>>>
>>>>> /Microsoft Visual Studio 12.0/VC/bin/ does not contain an /amd64
>>>>> folder,
>>>>> instead it has /x86_amd64. Also, vcvars64.bat is located directly under
>>>>> /VC/bin.
>>>>>
>>>> This is strange. Looking at the configure source, we assume that the VS
>>>> installation should contain "vc/bin/amd64/vcvars64.bat". If that file isn't
>>>> found, configure doesn't recognize the VS installation. Unfortunately I
>>>> don't have an Express installation to look at, but my old professional
>>>> installation has that file. In VC/bin I only have vcvars32.bat.
>>>>
>>>> I'm pretty sure this layout was how the express edition used to look as
>>>> well. Otherwise Magnus wouldn't have written the build doc claiming it
>>>> would work.
>>>>
>>>> This means the file layout for Visual Studio 2013 has changed, or that
>>>> it's different on Windows 10 (our builds are on older versions of Windows
>>>> still).
>>>>
>>>> If you would like to try to fix this, the logic that needs updating is
>>>> in make/autoconf/toolchain_windows.m4, in the macro
>>>> TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT.
>>>>
>>>>> Iv'e made another attempt using /Microsoft Visual Studio 11.0/VC/bin/
>>>>> which
>>>>> resulted in the same error. This folder also has vcvars64.bat directly
>>>>> under it. It also contains an /amd64 folder with a couple of dlls
>>>>> inside.
>>>>>
>>>>> Since I'm specifying the path to the /VC/bin dir I don't understand why
>>>>> it's still complaining. What am I doing wrong?
>>>>>
>>>> Because of how different the versions of Visual Studio are, configure
>>>> will not automatically assume or try a different version than the default
>>>> without being told to. If you want to try 2012, you need to tell configure
>>>> using --with-toolchain-version=2012. No need to specify tools dir as long
>>>> as it's installed in the default location.
>>>>
>>>>> On a related note, is it possible to update the build requirements to
>>>>> work
>>>>> with VS 2017? OpenJFX already uses this version.
>>>>>
>>>> This will likely happen in JDK 11 time frame. Note though that changing
>>>> compilers is usually a pretty big effort so it will take a while.
>>>>
>>>> /Erik
>>>>
>>>>> - Nir
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>


More information about the build-dev mailing list