--- /dev/null
+From 71b9e9b7f080c464777d07bd1a917a1c449d2ef8 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sun, 7 Aug 2016 23:20:00 +0200
+Subject: [PATCH] Makefile.arm: remove -march flags
+
+The provided -march flags, especially for ARMv5 and ARMv6 may not
+necessarily match the needed ones: for ARMv5, it might be armv5,
+armv5te, armv5t, etc. If the wrong one is used, the incorrect toolchain
+sysroot can be used in a multilib toolchain.
+
+Therefore, let the user building OpenBLAS pass the appropriate -march
+flag.
+
+The other flags, such as -mfpu=vfp or -mfloat-abi=hard are kept, as they
+are actually required for the build to proceed (OpenBLAS uses VFP
+instructions, and assume an EABIhf ABI).
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ Makefile.arm | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/Makefile.arm b/Makefile.arm
+index 62bf275..c0d6ab8 100644
+--- a/Makefile.arm
++++ b/Makefile.arm
+@@ -1,31 +1,31 @@
+ # ifeq logical or
+ ifeq ($(CORE), $(filter $(CORE),CORTEXA9 CORTEXA15))
+ ifeq ($(OSNAME), Android)
+-CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a
+-FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a
++CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard
++FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard
+ else
+-CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a
+-FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a
++CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard
++FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard
+ endif
+ endif
+
+ ifeq ($(CORE), ARMV7)
+ ifeq ($(OSNAME), Android)
+-CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch
+-FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch
++CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -Wl,--no-warn-mismatch
++FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -Wl,--no-warn-mismatch
+ else
+-CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a
+-FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a
++CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard
++FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard
+ endif
+ endif
+
+ ifeq ($(CORE), ARMV6)
+-CCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6
+-FCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6
++CCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard
++FCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard
+ endif
+
+
+ ifeq ($(CORE), ARMV5)
+-CCOMMON_OPT += -marm -march=armv5
+-FCOMMON_OPT += -marm -march=armv5
++CCOMMON_OPT += -marm
++FCOMMON_OPT += -marm
+ endif
+--
+2.7.4
+
# I6400 is built with MSA support which is only available in Codescape toolchains
default "I6400" if BR2_mips_64r6 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
default "SPARC" if BR2_sparc
- default "CORTEXA15" if BR2_cortex_a15
- default "CORTEXA9" if BR2_cortex_a9
+ # Cortex-A15 always have a VFPv4
+ default "CORTEXA15" if (BR2_cortex_a15 && BR2_ARM_EABIHF)
+ # Cortex-A9 have an optional VFPv3, so we need to make sure it
+ # is available
+ default "CORTEXA9" if (BR2_cortex_a9 && BR2_ARM_EABIHF && \
+ BR2_ARM_CPU_HAS_VFPV3)
default "ARMV5" if BR2_ARM_CPU_ARMV5
- default "ARMV6" if BR2_ARM_CPU_ARMV6
- default "ARMV7" if BR2_ARM_CPU_ARMV7A
+ # On ARMv6, OpenBLAS assumes that a VFP is available, and
+ # EABIhf is used
+ default "ARMV6" if (BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && \
+ BR2_ARM_CPU_HAS_VFPV2)
+ # On ARMv7, OpenBLAS assumes that a full VFPv3+ is available
+ # (and not the more limited D16 variant), and that EABIhf is
+ # used.
+ default "ARMV7" if (BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && \
+ BR2_ARM_CPU_HAS_VFPV3)
default "ARMV8" if BR2_aarch64 || BR2_aarch64_be
help
OpenBLAS target CPU. See TargetList.txt in the source tree for