[FFmpeg-devel] [PATCH] build: make out-of-tree builds bit-identical to in-tree builds

Hendrik Leppkes h.leppkes at gmail.com
Sat Jan 23 12:41:26 CET 2016

On Sat, Jan 23, 2016 at 12:04 PM, Hendrik Leppkes <h.leppkes at gmail.com> wrote:
> On Sat, Jan 23, 2016 at 10:41 AM, Henrik Gramner <henrik at gramner.com> wrote:
>> On Sat, Jan 23, 2016 at 10:31 AM, Andreas Cadhalpun
>> <andreas.cadhalpun at googlemail.com> wrote:
>>> Yes, I see. Apparently these use two different path notations,
>>> 'C:\path\to\file' and '/c/path/to/file', simultaneously.
>>> It seems 'pwd' uses the '/c/path/to/file' notation while make uses
>>> 'C:\path\to\file'.
>>> That seems pretty insane. ;)
>>> What command gives the current directory in 'C:\path\to\file' notation
>>> for MSVC builds?
>>> Setting DST_PATH to that for these builds should fix this problem.
>> cygpath (if it's available, which it is on MSYS2 and Cygwin at least)
>> can convert between Windows/UNIX style paths. See
>> https://git.videolan.org/?p=x264.git;a=blob;f=tools/msvsdepend.sh
>> I would opt for converting everything to UNIX-style paths instead of
>> Windows-style paths. IIRC some system had issues with the latter in
>> certain scenarios.
> The MSVC tools will not be able to understand the UNIX-style paths, so
> thats not a good choice here (and exactly where this problem comes
> from).

I did some testing why this breaks, and the reason is of course MSYS

MSYS will automatically translate a UNIX-style path back to
Windows-style when you pass it as a parameter, however, in this it
fails because the syntax is "unconventional".
MSVC uses the -Fo parameter for output files *without a space*, ie.
/Fooutput.o, and MSYS doesn't replace the parameter then. Similar
thing applies to the linker where this is -Fe instead.

When building the original MSVC support this was already a problem
with TMP files, which is why MSVC places tmp files into the build
directory instead of a tmp folder with an absolute path.

- Hendrik

More information about the ffmpeg-devel mailing list