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

Martin Storsjö martin at martin.st
Thu Feb 9 13:08:23 EET 2023


Hi,

On Sat, 4 Feb 2023, Ziemowit Laski wrote:

> I've been bringing up FFMPEG using Visual Studio 2022 and the MINGW64 
> environment, and came across sundry things that absolutely needed fixes, 
> so I thought I'd submit them as a series of small patches for you to 
> consider.  Here is the first patch.

FWIW, this setup is definitely being used by lots of others already - so 
whenever there's such an issue, the main question to ask is why others 
haven't run into the issue before. But improvements are definitely 
welcome!

For this patch, the answer to that question is that configure has a test, 
which checks if "$windres --version" works, and if not, it doesn't try to 
use the tool. So in many cases, the mswindres hasn't been used at all.

> When building FFMPEG from the MINGW/MSYS shell under Windows, one must 
> not use forward slashes ('/') for command-line options.  MINGW/MSYS 
> interprets these as absolute paths and then automatically rewrites them 
> into equivalent Windows paths.  For example, the '/logo' switch below 
> gets rewritten to something like 'C:/Program Files/Git/logo', and this

You should probably talk about the option '/nologo' here, there's no 
'/logo' option afaik.

> obviously breaks the build.  Thankfully, most M$ tools accept dashes 
> ('-') as well.
>
> Signed-off-by: Ziemowit Łąski <15880281+zlaski at users.noreply.github.com>
> ---
> compat/windows/mswindres | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/compat/windows/mswindres b/compat/windows/mswindres
> index 450525a33e..ed32796230 100755
> --- a/compat/windows/mswindres
> +++ b/compat/windows/mswindres
> @@ -10,12 +10,12 @@ if [ $# -lt 2 ]; then
>     exit 0
> fi
>
> -EXTRA_OPTS="/nologo"
> +EXTRA_OPTS="-nologo"

These changes seem fine, but you're apparently not touching the case at 
the top, used for --version, where it is calling 'rc.exe /?'. For me, this 
causes configure to decide to not use the tool at all. (It seems like 
current msys2 rewrites "rc.exe /?" so that it fails, while git bash 
doesn't rewrite it in that way, so that "rc.exe /?" works there.)

So I guess that's the explanation for the issue you're seeing - you're 
running in an environment where the "rc.exe /?" check succeeds (so the 
tool is taken into use, unlike it is for me), but then failed at actual 
use. While it for me, building in msys2, didn't try to use the tool at 
all. (And in cross-msvc builds, it enabled and used the tool just fine.)

Anyway, with the commit message fixed, and the case of /? changed into -?, 
this patch would seem fine to me - thanks for your contribution!

// Martin


More information about the ffmpeg-devel mailing list