configure: arm: Don't add -march= to the compiler if no preference was passed
authorMartin Storsjö <martin@martin.st>
Mon, 20 Sep 2021 10:00:40 +0000 (13:00 +0300)
committerSebastian Ramacher <sramacher@debian.org>
Mon, 18 Apr 2022 19:42:58 +0000 (20:42 +0100)
commit6be5d0c8a683c6eca692c6ebf416a6ac768bd0c1
treed68ce7046268c0b6c6498c8a30d12371c7304f99
parent4cc0edb10c5ca21a8ef2036479a55fb64edba855
configure: arm: Don't add -march= to the compiler if no preference was passed

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@martin.st>
Gbp-Pq: Name 0002-configure-arm-Don-t-add-march-to-the-compiler-if-no-.patch
configure