aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-08-20 14:36:01 +0200
committerGravatar Peter Korsgaard <peter@korsgaard.com>2016-08-22 22:21:11 +0200
commit887a1dc3470700db25588affec792d1f5511483a (patch)
treec2bd2c5e87a00be6e0b17f326d3452e16f59d583
parent750233df5055b4c0af70a82265e9da0224fd0011 (diff)
downloadbuildroot-887a1dc3470700db25588affec792d1f5511483a.tar.gz
buildroot-887a1dc3470700db25588affec792d1f5511483a.tar.bz2
openblas: fix build with old binutils versions
Older toolchains that use binutils <= 2.23.2 are affected by binutils bug #14887 (https://sourceware.org/bugzilla/show_bug.cgi?id=14887), where: someinstruction [ foo, something ] is not accepted, due to the whitespace after [ and before ], causing the following build failures for OpenBLAS: ARM register expected -- `pld [ r1,#512 ]' Since we don't have any mechanism to add dependencies on binutils versions, we work around this problem by patching the code to remove the problematic whitespaces. As there are many many instances of this in the ARM assembly code of OpenBLAS, we use a sed expression to make this modification rather than a patch. Fixes: http://autobuild.buildroot.net/results/43e50b480b4aea0fdec745d7875c85377c114cac/ [Peter: use single quotes in sed invocation] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--package/openblas/openblas.mk13
1 files changed, 13 insertions, 0 deletions
diff --git a/package/openblas/openblas.mk b/package/openblas/openblas.mk
index baeef05297..9583e0ea29 100644
--- a/package/openblas/openblas.mk
+++ b/package/openblas/openblas.mk
@@ -38,6 +38,19 @@ else ifeq ($(BR2_SHARED_LIBS),y)
OPENBLAS_MAKE_OPTS += NO_STATIC=1
endif
+# binutils version <= 2.23.2 has a bug
+# (https://sourceware.org/bugzilla/show_bug.cgi?id=14887) where
+# whitespaces in ARM register specifications such as [ r1, #12 ] or [
+# r2 ] cause the assembler to reject the code. Since there are
+# numerous instances of such cases in the code, we use sed rather than
+# a patch. We simply replace [ foobar ] by [foobar] to work around the
+# problem.
+define OPENBLAS_FIXUP_ARM_ASSEMBLY
+ $(SED) 's%\[\s*%\[%;s%\s*\]%\]%' $(@D)/kernel/arm/*.S
+endef
+
+OPENBLAS_POST_PATCH_HOOKS += OPENBLAS_FIXUP_ARM_ASSEMBLY
+
define OPENBLAS_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \
-C $(@D)