bash configure - LINK : fatal error LNK1104: cannot open file ...fixpath.exe

jbvernee jbvernee at xs4all.nl
Mon Jun 11 14:38:40 UTC 2018


Hello,

I've been trying to build the JDK using an msys2 toolchain, which seems 
to be possible according to this thread: 
http://mail.openjdk.java.net/pipermail/build-dev/2017-October/019862.html 
(although I'm not trying to use gcc, I'm using VS 15). I know it's 
advised to use cygwin, but I can't get that to work at all on my machine 
(some error about base heap offset after a fresh install. I might try 
troubleshooting that next...)

I'm running into the error mentioned in the subject line while running 
`bash configure`, namely:

     LINK : fatal error LNK1104: cannot open file 
'J:J:/msys64/Projects/openjdk/amber/build/windows-x86_64-normal-server-release/configure-support/bin/fixpath.exe'

I have also created a gist of the full configure log: 
https://gist.github.com/JornVernee/6b579e6d13d1fce306d0d370a381d1b3

Looking at this, it seems like the path is getting mangled. The correct 
path is 
'J:/Projects/openjdk/amber/build/windows-x86_64-normal-server-release/configure-support/bin/fixpath.exe' 
But as you can see there is an extra `J:/msys64` in there, which happens 
to be the root of my msys2 installation (though I'm running configure in 
PowerShell, and not in the included msys2 environment. Switching between 
them doesn't fix the problem either though).

I thought I had traced the value of this path to the `OUTPUTDIR` 
variable in `\make\autoconf\basics.m4`, where it is created inside this 
if-else block:

```
     if test "x$CUSTOM_ROOT" != x; then
       OUTPUTDIR="${CUSTOM_ROOT}/build/${CONF_NAME}"
     else
       OUTPUTDIR="${TOPDIR}/build/${CONF_NAME}"
     fi
```

Where it is then used to create the `CONFIGURESUPPORT_OUTPUTDIR` path 
like: `CONFIGURESUPPORT_OUTPUTDIR="$OUTPUTDIR/configure-support"`, and 
finally the output path for fixpath.exe is constructed from that in 
`\make\autoconf\basics_windows.m4`:

```
     FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
     FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
```

I have tried setting the `CUSTOM_ROOT` variable, but the error remained 
the same. As a sanity check I rewrote the if-statement to: 
`OUTPUTDIR="J:/Projects/openjdk/amber/build/${CONF_NAME}", but the error 
message still remains the same.

I have also tried manually compiling fixpath.c into fixpath.exe and 
placing that file into 
`/build/windows-x86_64-normal-server-release/configure-support/bin/`, 
but the file is just ignored by the configuration script.

At this point I don't know what else I could try. So I'm wondering if 
anyone here has any suggestions?

Best regards,
Jorn Vernee



More information about the build-dev mailing list