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 <gwenhael.goavec-merou@trabucayre.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2021.08.x
Gwenhael Goavec-Merou 2021-07-25 13:12:31 +02:00 committed by Thomas Petazzoni
parent d7a260f8bc
commit bef605b08a
2 changed files with 43 additions and 9 deletions

View File

@ -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

View File

@ -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))