summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2021-09-20 12:45:12 +0300
committerMartin Storsjö <martin@martin.st>2021-09-21 14:04:28 +0300
commitcb8dc600d289b2e30507a6fc3b61aaeb3129e0ad (patch)
tree4f3691a1f4b64ff9ed415926e9b2bb613f69b794 /configure
parentc51bae03deb277bfa9d4dc8df568356be28144b7 (diff)
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 One can compile successfully by passing e.g. -march=armv7-a+fp. 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>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure4
1 files changed, 3 insertions, 1 deletions
diff --git a/configure b/configure
index 7ac23123c7..231d0398a8 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')