[FFmpeg-devel] [PATCH] mswindres: Use '-' instead of '/' for rc.exe options

Martin Storsjö martin at martin.st
Sat Feb 11 00:22:47 EET 2023

On Fri, 10 Feb 2023, Ziemowit Laski wrote:

> The build uses /bin/bash, which is configured as x86_64-pc-msys, and 
> that's where the rewriting happens.  I always assumed that MinGW was 
> basically built on top of MSYS.

No, that's a rather incorrect understanding.

MinGW is an environment which gives you totally win32 native executables, 
just like MSVC does. The main feature is that the headers/libs are 
constructed manually so they're freely redistributable, in a GCC 
compatible form, and with only a very minimal set of extra portability 
helping functions (not providing POSIX compat, just the very minimum 
necessary to make GCC work).

MinGW toolchains can be cross compilers from unix systems, or they can be 
win32 native. They can work on their own (where you call the compiler from 
an IDE, with GNU make in windows mode with cmd.exe executing makefile 
statements, or from another build tool). They can also be packaged as part 
of a posix compat environment.

MSYS2 is a stripped down version of Cygwin, which both gives you a POSIX 
compatibility environment. MSYS2 (and Cygwin) gives you things that don't 
work in a pure win32 environment, such as shell scripts, bash etc. MSYS2 
thus allows you to run e.g. unix style configure shell scripts. MSYS2 
comes packaged with MinGW toolchains integrated, and the main purpose of 
it (contrary to Cygwin) is to provide the extra unix tools you need around 
a MinGW toolchain.

FFmpeg requires MSYS2 (or similar) for running the configure shell script 
and the makefile. But all the weirdness about unix vs windows path 
handling is an MSYS2 feature - the mingw executables are just like any 
windows executable.

// Martin

More information about the ffmpeg-devel mailing list