[FFmpeg-devel] [PATCH] mswindres: Use '-' instead of '/' for rc.exe options
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
More information about the ffmpeg-devel