[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