[Buildroot] [PATCH v5 3/3] package/armadillo: allow to select between lapack or openblas
Arnout Vandecappelle (Essensium/Mind)
arnout at mind.be
Sun Jul 25 11:12:31 UTC 2021
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou at trabucayre.com>
armadillo can use lapack or openblas as BLAS provider. LAPACK support is
optional.
This patch
- adds an _ARCH_SUPPORTS variable to check if one is available
- adds an option to choose lapack or openblas as BLAS provider
The choice is required since applications may potentially need lapack.
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou at trabucayre.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
---
Changes v4 -> v5: [Done by Arnout]
- Consistent naming of BR2_PACKAGE_ARMADILLO_OPENBLAS (Yann E. Morin)
- Remove double dependency on lapack/clapack (Yann E. Morin)
- Remove stray 'endchoice'
- "Solve" circular dependency by removing clapack
Changes v3 -> v4: [Done by Arnout]
- Split off lapack/clapack arch depends in separate patches
- Simplify the comments (no need for the powerpc complexity)
- Remove the choices because clapack/lapack choice doesn't work. Keep a
single config for openblas.
Changes v2 -> v3:
- drop all default statements for choice (Thomas)
- add explicit -l since blas libary is called liblas for (c)lapack and
libopenblas for openblas (Thomas)
- add a choice for lapack selection between lapack, clapack or none
Changes v1 -> v2:
- add openblas as blas provider
---
package/armadillo/Config.in | 34 ++++++++++++++++++++++++++--------
package/armadillo/armadillo.mk | 18 +++++++++++++++++-
2 files changed, 43 insertions(+), 9 deletions(-)
diff --git a/package/armadillo/Config.in b/package/armadillo/Config.in
index b2b61a3233..7aed4fd02f 100644
--- a/package/armadillo/Config.in
+++ b/package/armadillo/Config.in
@@ -1,20 +1,38 @@
comment "armadillo needs a toolchain w/ C++"
+ depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS
depends on !BR2_INSTALL_LIBSTDCPP
- depends on !BR2_powerpc
- depends on !BR2_m68k_cf
-comment "armadillo needs a glibc toolchain w/ C++"
- depends on BR2_powerpc
- depends on !BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_USES_UCLIBC
+comment "armadillo needs a toolchain w/ fortran, C++"
+ depends on !BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS # otherwise, see comment above
+ depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS
+ depends on !BR2_TOOLCHAIN_HAS_FORTRAN || !BR2_INSTALL_LIBSTDCPP
config BR2_PACKAGE_ARMADILLO
bool "armadillo"
+ depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS || \
+ (BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN)
depends on BR2_INSTALL_LIBSTDCPP
- depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC # clapack
- depends on !BR2_m68k_cf # clapack
- select BR2_PACKAGE_CLAPACK
help
Armadillo: An Open Source C++ Linear Algebra Library for
Fast Prototyping and Computationally Intensive Experiments.
http://arma.sourceforge.net/
+
+if BR2_PACKAGE_ARMADILLO
+
+choice
+ prompt "BLAS implementation"
+
+config BR2_PACKAGE_ARMADILLO_OPENBLAS
+ bool "openblas"
+ depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS
+ select BR2_PACKAGE_OPENBLAS
+
+config BR2_PACKAGE_ARMADILLO_LAPACK
+ bool "lapack"
+ depends on BR2_PACKAGE_LAPACK_ARCH_SUPPORTS && BR2_TOOLCHAIN_HAS_FORTRAN
+ select BR2_PACKAGE_LAPACK
+
+endchoice
+
+endif
diff --git a/package/armadillo/armadillo.mk b/package/armadillo/armadillo.mk
index 624b842ef6..dcac2bf8cd 100644
--- a/package/armadillo/armadillo.mk
+++ b/package/armadillo/armadillo.mk
@@ -7,11 +7,27 @@
ARMADILLO_VERSION = 9.900.2
ARMADILLO_SOURCE = armadillo-$(ARMADILLO_VERSION).tar.xz
ARMADILLO_SITE = https://downloads.sourceforge.net/project/arma
-ARMADILLO_DEPENDENCIES = clapack
ARMADILLO_INSTALL_STAGING = YES
ARMADILLO_LICENSE = Apache-2.0
ARMADILLO_LICENSE_FILES = LICENSE.txt
ARMADILLO_CONF_OPTS = -DDETECT_HDF5=false
+# blas support may be provided by lapack (libblas.a) or openblas (libopenblas.a)
+ARMADILLO_CONF_OPTS += -DBLAS_FOUND=ON
+ifeq ($(BR2_PACKAGE_ARMADILLO_OPENBLAS),y)
+ARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lopenblas
+ARMADILLO_DEPENDENCIES = openblas
+else
+# Since BR2_PACKAGE_LAPACK is selected in this case, the dependency on it is
+# added below.
+ARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lblas
+endif
+
+# lapack support is optional and can only be provided by lapack, not openblas
+ifeq ($(BR2_PACKAGE_LAPACK),y)
+ARMADILLO_CONF_OPTS += -DLAPACK_FOUND=ON
+ARMADILLO_DEPENDENCIES += lapack
+endif
+
$(eval $(cmake-package))
--
2.31.1
More information about the buildroot
mailing list