From eb4f5a2cbc8f6caf8929495318f5f3dbb11f134a Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Fri, 15 Sep 2023 21:33:44 +0200 Subject: [PATCH] package/openblas: fix some x86 32bit builds OpenBLAS Makefile normally needs to explicitly define the CPU architecture size (32 or 64bit) in the BINARY macro. See [1]. When an architecture supports both 64 and 32bit, the 32bit support is sometimes implemented in OpenBLAS by overriding a fallback to an anterior architecture. For example, if the build target architecture is x86 Haswell 32bit, OpenBLAS build will override the arch to Nehalem. See [2]. If the BINARY macro is undefined, the 32bit fallback will not happen, sometimes leading to a link failure, with output: i686-buildroot-linux-gnu/bin/ar: strmm_kernel_LN.o: No such file or directory This commit fixes those issues by explicitly defining the BINARY macro. This issue has also been discussed upstream in [3] and [4]. Note: this issue was not introduced recently ([3] dates back from 2015), and was also see in previous package version, for example in [5]. Fixes: http://autobuild.buildroot.net/results/e1e/e1e2034a78799abe1bd28b036fa6f7d13322e42f [1] https://github.com/xianyi/OpenBLAS/blob/v0.3.24/Makefile.rule#L50 [2] https://github.com/xianyi/OpenBLAS/blob/v0.3.24/Makefile.system#L113 [3] https://github.com/xianyi/OpenBLAS/issues/657 [4] https://github.com/xianyi/OpenBLAS/issues/1106 [5] http://autobuild.buildroot.net/results/5cd/5cdccd106b1de275ac75c39783e536107a31651f Signed-off-by: Julien Olivain Signed-off-by: Yann E. MORIN --- package/openblas/openblas.mk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package/openblas/openblas.mk b/package/openblas/openblas.mk index 0d0e8e56dd..aacfc74b53 100644 --- a/package/openblas/openblas.mk +++ b/package/openblas/openblas.mk @@ -49,6 +49,12 @@ ifeq ($(BR2_STATIC_LIBS),y) OPENBLAS_MAKE_OPTS += NO_SHARED=1 endif +ifeq ($(BR2_ARCH_IS_64),y) +OPENBLAS_MAKE_OPTS += BINARY=64 +else +OPENBLAS_MAKE_OPTS += BINARY=32 +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 [