From patchwork Tue Nov 3 13:50:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gwenhael Goavec-Merou X-Patchwork-Id: 1393045 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=trabucayre.com Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CQWQN1125z9sVM for ; Wed, 4 Nov 2020 00:50:51 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 8C5CB2051F; Tue, 3 Nov 2020 13:50:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vCyjyrMrJ8nR; Tue, 3 Nov 2020 13:50:43 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id AD4CD203F0; Tue, 3 Nov 2020 13:50:43 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id D15BB1BF327 for ; Tue, 3 Nov 2020 13:50:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id CD30C8614A for ; Tue, 3 Nov 2020 13:50:41 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OW6S8PWwMMky for ; Tue, 3 Nov 2020 13:50:40 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from smtp6-g21.free.fr (smtp6-g21.free.fr [212.27.42.6]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 2355286113 for ; Tue, 3 Nov 2020 13:50:40 +0000 (UTC) Received: from localhost.localdomain (unknown [78.252.129.8]) by smtp6-g21.free.fr (Postfix) with ESMTP id A36FE7802E5; Tue, 3 Nov 2020 14:50:36 +0100 (CET) From: Gwenhael Goavec-Merou To: buildroot@buildroot.org Date: Tue, 3 Nov 2020 14:50:15 +0100 Message-Id: <20201103135015.1936872-1-gwenj@trabucayre.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v3] package/armadillo: allows to select between clapack, lapack or openblas X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Romain Naour , Gwenhael Goavec-Merou Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" From: Gwenhael Goavec-Merou armadillo can use clapack, lapack or openblas as BLAS provider and clapack or lapack as LAPACK provider. This patch - adds hidden variable to check dependencies/requirement for each of them - a choice to select wich implementation to use for blas and lapack. Choices are required since applications, potentially, needs explicitly lapack or clapack. Signed-off-by: Gwenhael Goavec-Merou --- 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 | 66 ++++++++++++++++++++++++++++++++-- package/armadillo/armadillo.mk | 29 ++++++++++++++- 2 files changed, 91 insertions(+), 4 deletions(-) diff --git a/package/armadillo/Config.in b/package/armadillo/Config.in index b2b61a3233..816b45be96 100644 --- a/package/armadillo/Config.in +++ b/package/armadillo/Config.in @@ -1,3 +1,15 @@ +config BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS + bool + default y + depends on !BR2_m68k_cf + depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS + bool + default y + depends on BR2_TOOLCHAIN_HAS_FORTRAN + depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) + comment "armadillo needs a toolchain w/ C++" depends on !BR2_INSTALL_LIBSTDCPP depends on !BR2_powerpc @@ -10,11 +22,59 @@ 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 || \ + BR2_PACKAGE_OPENBLAS_ARCH_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" + help + Selects blas library to use + +config BR2_PACKAGE_ARMADILLO_BLAS_LAPACK + bool "lapack" + depends on BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS + select BR2_PACKAGE_LAPACK + +config BR2_PACKAGE_ARMADILLO_BLAS_CLAPACK + bool "clapack" + depends on BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS + select BR2_PACKAGE_CLAPACK + +config BR2_PACKAGE_ARMADILLO_BLAS_OPENBLAS + bool "openblas" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + select BR2_PACKAGE_OPENBLAS + +endchoice + +choice + prompt "lapack library" + help + Selects lapack library to use + +config BR2_PACKAGE_ARMADILLO_LAPACK_LAPACK + bool "lapack" + depends on BR2_PACKAGE_ARMADILLO_LAPACK_SUPPORTS + depends on !BR2_PACKAGE_ARMADILLO_BLAS_CLAPACK + select BR2_PACKAGE_LAPACK + +config BR2_PACKAGE_ARMADILLO_LAPACK_CLAPACK + bool "clapack" + depends on BR2_PACKAGE_ARMADILLO_CLAPACK_SUPPORTS + depends on !BR2_PACKAGE_ARMADILLO_BLAS_LAPACK + select BR2_PACKAGE_CLAPACK + +config BR2_PACKAGE_ARMADILLO_LAPACK_NONE + bool "none" + +endchoice + +endif diff --git a/package/armadillo/armadillo.mk b/package/armadillo/armadillo.mk index 624b842ef6..bae27774d7 100644 --- a/package/armadillo/armadillo.mk +++ b/package/armadillo/armadillo.mk @@ -7,11 +7,38 @@ 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, clapack or openblas +# blas library from (c)lapack is libblas.a, libopenblas.a otherwise +ARMADILLO_CONF_OPTS += -DBLAS_FOUND=ON +ifeq ($(BR2_PACKAGE_ARMADILLO_OPENBLAS),y) +ARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lopenblas +ARMADILLO_DEPENDENCIES = openblas +else +ARMADILLO_CONF_OPTS += -DBLAS_LIBRARIES=-lblas +ifeq ($(BR2_PACKAGE_ARMADILLO_CLAPACK), y) +ARMADILLO_DEPENDENCIES = clapack +else +ARMADILLO_DEPENDENCIES = lapack +endif +endif + +# lapack support may be provided by lapack or clapack +# but not by openblas +ifeq ($(BR2_PACKAGE_LAPACK_NONE),y) +ARMADILLO_CONF_OPTS += -DLAPACK_FOUND=OFF +else +ARMADILLO_CONF_OPTS += -DLAPACK_FOUND=ON +ifeq ($(BR2_PACKAGE_ARMADILLO_LAPACK_LAPACK),y) +ARMADILLO_DEPENDENCIES += lapack +else ifeq ($(BR2_PACKAGE_ARMADILLO_LAPACK_CLAPACK), y) +ARMADILLO_DEPENDENCIES += clapack +endif +endif + $(eval $(cmake-package))