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

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to