Subject: Re: bug#15831: Absolute library paths with Cygwin + MSVC cl

From: "Tony Kelman" <[email-masked]>
Date: Fri, 8 Nov 2013 16:42:21 -0800

> Using the terminology from [1], there are two options for building with
> cl on Cygwin. You either fake it or you lie. I recommend faking it.
> 
> For that to have any chance to work with absolute file names, you have to
> include lt_cv_to_tool_file_cmd=func_convert_file_cygwin_to_w32 as one of
> your configure arguments (or do as [1] suggests and
>    export lt_cv_to_tool_file_cmd=func_convert_file_cygwin_to_w32
> but I prefer to add it as a configure arg, it is then preserved even if
> the project happens to be reconfigured from some other environment w/o
> that export).
> 
> If you instead lie, you also need
>   lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
> 
> It was not clear from your message if you had taken care of that detail?

Thanks very much for the info. I tried providing the lt_cv_to_tool_file_cmd
to configure, either with and without --host=x86_64-w64-mingw32, but did
not manage to get libtool to send cl the Windows path to libCoinUtils.lib.
Manually replacing the absolute Cygwin path in the Makefile with either a
relative path or a `cygpath -m ...` mixed path with forward slashes worked.

While it would be great if libtool could do this for me in a simple way,
it seems it's a bit challenging to get working. Compiling with cl is
already heavily special-cased in the COIN-OR build system, so I can modify
one of their autoconf macros that populate the Makefile variables in the
first place to handle this. They're already doing a cygpath -m type path
substitution on any absolute paths to .lib files in the _LIBS variables,
and in initial tests extending that to (.lib|.la) seems to be working.

-Tony