[FFmpeg-devel] [PATCH] configure: Set MSVC as_default later.

Martin Storsjö martin at martin.st
Sat Jan 16 00:25:07 EET 2021


On Fri, 15 Jan 2021, Reimar.Doeffinger at gmx.de wrote:

> From: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
>
> It would get immediately overridden to $cc, which in case
> of gas-preprocessor missing would result in it trying
> to use cl.exe for asm files instead of erroring out.
> This is because cl.exe does not fail but just print a warning
> when it is given a file it does not know what to do with it...

As this setup seems to work fine in the setups I've tried, can you think 
of why it's overwritten with $cc in your cases?

With the line
     : ${as_default:=$cc}
it only sets as_default to $cc if $as_default is empty.


> ---
> configure | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/configure b/configure
> index 12b41cde1c..d3b665f6f9 100755
> --- a/configure
> +++ b/configure
> @@ -4271,14 +4271,6 @@ case "$toolchain" in
>         ld_default="$source_path/compat/windows/mslink"
>         nm_default="dumpbin.exe -symbols"
>         ar_default="lib.exe"
> -        case "$arch" in
> -        aarch64|arm64)
> -            as_default="armasm64.exe"
> -            ;;
> -        arm*)
> -            as_default="armasm.exe"
> -            ;;
> -        esac
>         target_os_default="win32"
>         # Use a relative path for TMPDIR. This makes sure all the
>         # ffconf temp files are written with a relative path, avoiding
> @@ -4720,6 +4712,14 @@ probe_cc(){
>         _ld_path='-libpath:'
>     elif $_cc -nologo- 2>&1 | grep -q Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then
>         _type=msvc
> +        case "$arch" in
> +        aarch64|arm64)
> +            as_default="armasm64.exe"
> +            ;;
> +        arm*)
> +            as_default="armasm.exe"
> +            ;;
> +        esac
>         if $_cc -nologo- 2>&1 | grep -q Microsoft; then

You can't really do that here. Probe_cc only should set the existing set 
of _type/_ident/_ldflags/_cflags* etc variables, which are picked up by 
the caller of probe_cc. probe_cc is called separately for both host and 
target compilers, so if e.g. cross compiling, with MSVC as host compiler, 
with a different compiler for the target, this wouldn't do the right 
thing.

// Martin


More information about the ffmpeg-devel mailing list