[FFmpeg-devel] [PATCH] configure: arm: Don't add -march= to the compiler if no preference was passed

Janne Grunau janne-ffmpeg at jannau.net
Tue Sep 21 11:03:39 EEST 2021


Hej,

On 2021-09-20 13:00:40 +0300, Martin Storsjö wrote:
> If no --cpu= option was passed to configure, we detect what the
> compiler defaults to. This detected value was then fed back to the
> rest of the configure logic, as if it was an explicit choice.
> 
> This breaks on Ubuntu 21.10 with GCC 11.1.
> 
> Since GCC 8, it's possible to add configure extra features via the
> -march option, like e.g. -march=armv7-a+neon. If the -mfpu= option
> is configured to default to 'auto', the fpu setting gets taken
> from the -march option.
> 
> GCC 11.1 in Ubuntu seems to be configured to use -mfpu=auto. This
> has the effect of breaking any compilation command that specifies
> -march=armv7-a, because the driver implicitly also adds -mfloat-abi=hard,
> and that combination results in this error:
> 
>     cc1: error: ‘-mfloat-abi=hard’: selected processor lacks an FPU
> 
> Therefore, restructure configure. If no specific preference was set
> (and the 'cpu' configure variable was set as the output of
> probe_arm_arch), the value we tried to set via -march= was the same
> value that we just tried to detect as the compiler default.
> 
> So instead, just try to detect what the compiler defaults to, with
> to allow setting other configure settings (such as 'fast_unaligned'),
> but don't try to spell out the compiler's default via the -march flag.
> 
> Signed-off-by: Martin Storsjö <martin at martin.st>
> ---
>  configure | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 9249254b70..3a05b8294b 100755
> --- a/configure
> +++ b/configure
> @@ -5009,9 +5009,11 @@ elif enabled arm; then
>          fi
>      }
>  
> -    [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
>  
>      case $cpu in
> +        generic)
> +            subarch=$(probe_arm_arch | sed 's/[^a-z0-9]//g')
> +        ;;
>          armv*)
>              cpuflags="-march=$cpu"
>              subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')

looks good to me

Janne



More information about the ffmpeg-devel mailing list