From bef605b08a40efa5e4d5e9845822141a00b8eef3 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Sun, 25 Jul 2021 13:12:31 +0200 Subject: [PATCH] package/armadillo: allow to select between lapack or openblas 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 Signed-off-by: Arnout Vandecappelle (Essensium/Mind) Signed-off-by: Thomas Petazzoni --- 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))