summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2020-06-10 22:39:56 -0400
committerBen Gamari <ben@well-typed.com>2020-08-18 11:47:49 -0400
commitb1a56cc7135a295eb3deb26715a0df93dcf6b907 (patch)
tree7c5160786cd11d6cf5131fc8f2b68d909e05f2ee
parent55fd1dc55990623dcf3b2e6143e766242315d757 (diff)
downloadhaskell-wip/T17856.tar.gz
configure: Work around Raspbian's silly packaging decisionswip/T17856
See #17856.
-rw-r--r--aclocal.m453
1 files changed, 34 insertions, 19 deletions
diff --git a/aclocal.m4 b/aclocal.m4
index 5506f8cd47..73bfb63a83 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -447,25 +447,40 @@ AC_DEFUN([GET_ARM_ISA],
#endif]
)],
[AC_DEFINE(arm_HOST_ARCH_PRE_ARMv7, 1, [ARM pre v7])
- ARM_ISA=ARMv6
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM(
- [],
- [#if defined(__VFP_FP__)
- return 0;
- #else
- no vfp
- #endif]
- )],
- [changequote(, )dnl
- ARM_ISA_EXT="[VFPv2]"
- changequote([, ])dnl
- ],
- [changequote(, )dnl
- ARM_ISA_EXT="[]"
- changequote([, ])dnl
- ]
- )],
+ if grep -q Raspbian /etc/issue && uname -m | grep -q armv7; then
+ # Raspbian unfortunately makes some extremely questionable
+ # packaging decisions, configuring gcc to compile for ARMv6
+ # despite the fact that the RPi4 is ARMv8. As ARMv8 doesn't
+ # support all instructions supported by ARMv6 this can
+ # break. Work around this by checking uname to verify
+ # that we aren't running on armv7.
+ # See #17856.
+ AC_MSG_NOTICE([Found compiler which claims to target ARMv6 running on ARMv7, assuming this is ARMv7 on Raspbian (see T17856)])
+ ARM_ISA=ARMv7
+ changequote(, )dnl
+ ARM_ISA_EXT="[VFPv2]"
+ changequote([, ])dnl
+ else
+ ARM_ISA=ARMv6
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [],
+ [#if defined(__VFP_FP__)
+ return 0;
+ #else
+ no vfp
+ #endif]
+ )],
+ [changequote(, )dnl
+ ARM_ISA_EXT="[VFPv2]"
+ changequote([, ])dnl
+ ],
+ [changequote(, )dnl
+ ARM_ISA_EXT="[]"
+ changequote([, ])dnl
+ ]
+ )
+ fi],
[changequote(, )dnl
ARM_ISA=ARMv7
ARM_ISA_EXT="[VFPv3,NEON]"