[Buildroot] [PATCH] package/armadillo: allows to select between clapack or lapack as BLAS and LAPACK provider

Gwenhael Goavec-Merou gwenj at trabucayre.com
Mon Jun 15 08:19:51 UTC 2020


Hi Romain,

Thanks for your answer.

On 2020-06-06 23:15, Romain Naour wrote:
> Hi Gwenhael,
> 
> Le 13/05/2020 à 16:59, Gwenhael Goavec-Merou a écrit :
>> From: Gwenhael Goavec-Merou <gwenhael.goavec-merou at trabucayre.com>
>>
>> armadillo can use clapack or lapack as BLAS and LAPACK provider.
>> This patch
>> - adds two hidden variable to check dependencies/requirement for each of them
>> - a choice to select wich implementation to use, by default use on clapack
>>   when it's possible, else lapack
> 
> Last year we discussed about dropping clapack since it's outdated
> 
> "The last release is version 3.2.1 when lapack is at version 3.8.0"
> 
> Since then, lapack has been updated to 3.9.0.
> 
> At some point we should remove clapack even if it's the only "lapack" provider
> that doesn't depend on Fortran compiler [2].
> 
> armadillo should also work with openblas since it bundle a version of lapack.
> 
> [1] http://lists.busybox.net/pipermail/buildroot/2019-August/256653.html
> [2] http://lists.busybox.net/pipermail/buildroot/2019-August/256459.html
>
Seems, finally, not easy...
But, in a first time, I need just to add openblas too, or it's better to try an another approach as 
mentioned in linked messages before updating armadillo ?

Thanks again
Gwenhael

 >
> Best regards,
> Romain
> 
>>
>> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou at trabucayre.com>
>> ---
>>   package/armadillo/Config.in    | 41 +++++++++++++++++++++++++++++++---
>>   package/armadillo/armadillo.mk |  7 +++++-
>>   2 files changed, 44 insertions(+), 4 deletions(-)
>>
>> diff --git a/package/armadillo/Config.in b/package/armadillo/Config.in
>> index b2b61a3233..964a380d5e 100644
>> --- a/package/armadillo/Config.in
>> +++ b/package/armadillo/Config.in
>> @@ -1,3 +1,12 @@
>> +config BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS
>> +	bool
>> +	default y if (!BR2_m68k_cf && (!BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC))
>> +
>> +config BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS
>> +	bool
>> +	default y if BR2_TOOLCHAIN_HAS_FORTRAN && \
>> +		!(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC)
>> +
>>   comment "armadillo needs a toolchain w/ C++"
>>   	depends on !BR2_INSTALL_LIBSTDCPP
>>   	depends on !BR2_powerpc
>> @@ -10,11 +19,37 @@ comment "armadillo needs a glibc toolchain w/ C++"
>>   config BR2_PACKAGE_ARMADILLO
>>   	bool "armadillo"
>>   	depends on BR2_INSTALL_LIBSTDCPP
>> -	depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC # clapack
>> -	depends on !BR2_m68k_cf # clapack
>> -	select BR2_PACKAGE_CLAPACK
>> +	depends on BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS || \
>> +		BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS
>> +
>>   	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 library"
>> +	default BR2_PACKAGE_ARMADILLO_CLAPACK if \
>> +		BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS
>> +	default BR2_PACKAGE_ARMADILLO_LAPACK if \
>> +		BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS && \
>> +		!BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS
>> +	help
>> +	  Selects blas library to use
>> +
>> +config BR2_PACKAGE_ARMADILLO_CLAPACK
>> +	bool "clapack"
>> +	depends on BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS
>> +	select BR2_PACKAGE_CLAPACK
>> +
>> +config BR2_PACKAGE_ARMADILLO_LAPACK
>> +	bool "lapack"
>> +	depends on BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS
>> +	select BR2_PACKAGE_LAPACK
>> +
>> +endchoice
>> +
>> +endif
>> diff --git a/package/armadillo/armadillo.mk b/package/armadillo/armadillo.mk
>> index f693d8c946..03fd020267 100644
>> --- a/package/armadillo/armadillo.mk
>> +++ b/package/armadillo/armadillo.mk
>> @@ -7,11 +7,16 @@
>>   ARMADILLO_VERSION = 9.850.1
>>   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
>>   
>> +ifeq ($(BR2_PACKAGE_ARMADILLO_CLAPACK), y)
>> +ARMADILLO_DEPENDENCIES = clapack
>> +else
>> +ARMADILLO_DEPENDENCIES = lapack
>> +endif
>> +
>>   ARMADILLO_CONF_OPTS = -DDETECT_HDF5=false
>>   
>>   $(eval $(cmake-package))
>>
> 


More information about the buildroot mailing list