diff mbox series

package/sleef: add new package

Message ID 20220927142604.17035-1-kk@aibs.ru
State Changes Requested
Headers show
Series package/sleef: add new package | expand

Commit Message

Kirill Kranke Sept. 27, 2022, 2:26 p.m. UTC
SLEEF is a library that implements vectorized versions
of C standard math functions. This library also
includes DFT subroutines.

https://sleef.org/
Signed-off-by: Kirill Kranke <kk@aibs.ru>
---
 package/Config.in        |  1 +
 package/sleef/Config.in  | 50 ++++++++++++++++++++++++++++++++++++++++
 package/sleef/sleef.hash |  3 +++
 package/sleef/sleef.mk   | 49 +++++++++++++++++++++++++++++++++++++++
 4 files changed, 103 insertions(+)
 create mode 100644 package/sleef/Config.in
 create mode 100644 package/sleef/sleef.hash
 create mode 100644 package/sleef/sleef.mk

Comments

Yann E. MORIN Oct. 1, 2022, 7:34 p.m. UTC | #1
Kirill, All,

On 2022-09-27 17:26 +0300, Kirill Kranke spake thusly:
> SLEEF is a library that implements vectorized versions
> of C standard math functions. This library also
> includes DFT subroutines.
> 
> https://sleef.org/
> Signed-off-by: Kirill Kranke <kk@aibs.ru>
> ---
[--SNIP--]
> diff --git a/package/sleef/Config.in b/package/sleef/Config.in
> new file mode 100644
> index 0000000000..85f93d384e
> --- /dev/null
> +++ b/package/sleef/Config.in
> @@ -0,0 +1,50 @@
> +config BR2_PACKAGE_SLEEF_ARCH_SUPPORTS
> +	bool
> +	default y if BR2_arm
> +	default y if BR2_aarch64
> +	default y if BR2_i386
> +	default y if BR2_x86_64
> +	default y if BR2_powerpc64
> +
> +config BR2_PACKAGE_SLEEF
> +	bool "sleef"

You forgot to add the actual dependency on BR2_PACKAGE_SLEEF_ARCH_SUPPORTS
here.

> +	help
> +          SLEEF is a library that implements vectorized versions
> +          of C standard math functions. This library also
> +          includes DFT subroutines.
> +
> +          https://sleef.org/

If I understand correctly, by default, only the libm is built. This
should probably be specified in the help text for the main symbol.

> +if BR2_PACKAGE_SLEEF
> +
> +config BR2_PACKAGE_SLEEF_DFT
> +        bool "compile dft"
> +        default n

default n is the default, so it should npt be specified.

> +        help
> +          libsleefdft will be built

The helpe text does not provide much more information that the prompt,
so there is no need for the help text, unless we can come up with a
better help (see below)

So:

    config BR2_PACKAGE_SLEEF_LIBDFT
        bool "libsleefdft"
        help
          libsleefdft contains functions to perform DFT (discreet
          Fourrier transform).

Adapt as you see fit.

And so on for the other options.

> +config BR2_PACKAGE_SLEEF_QUAD
> +        bool "compile quad"
> +        default n
> +        help
> +          libsleefquad will be built
> +
> +config BR2_PACKAGE_SLEEF_GNUABI_LIBS
> +        bool "compile gnuabi"
> +        default y
> +        help
> +          libsleefgnuabi will be built
> +
> +config BR2_PACKAGE_SLEEF_SCALAR_LIB
> +        bool "compile scalar"
> +        default n
> +        help
> +          libsleefscalar will be built
> +
> +config BR2_PACKAGE_SLEEF_TESTS
> +        bool "compile tests"
> +        default n
> +        help
> +          Tests will be built
> +
> +endif
> diff --git a/package/sleef/sleef.hash b/package/sleef/sleef.hash
> new file mode 100644
> index 0000000000..51570a5176
> --- /dev/null
> +++ b/package/sleef/sleef.hash
> @@ -0,0 +1,3 @@
> +# Locally calculated
> +sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE.txt
> +sha256  415ee9b1bcc5816989d3d4d92afd0cd3f9ee89cbd5a33eb008e69751e40438ab  sleef-3.5.1.tar.gz
> diff --git a/package/sleef/sleef.mk b/package/sleef/sleef.mk
> new file mode 100644
> index 0000000000..46bef69f5f
> --- /dev/null
> +++ b/package/sleef/sleef.mk
> @@ -0,0 +1,49 @@
> +################################################################################
> +#
> +# sleef
> +#
> +################################################################################
> +
> +SLEEF_VERSION = 3.5.1
> +SLEEF_SITE = $(call github,shibatch,sleef,$(SLEEF_VERSION))
> +SLEEF_LICENSE = BSL-1.0
> +SLEEF_LICENSE_FILES = LICENSE.txt
> +SLEEF_SUPPORTS_IN_SOURCE_BUILD = NO
> +SLEEF_INSTALL_STAGING = YES
> +
> +# N.B. Need to use host sleef during cross compilation.
> +SLEEF_DEPENDENCIES = host-sleef
> +SLEEF_CONF_OPTS += -DNATIVE_BUILD_DIR=$(BUILD_DIR)/host-sleef-$(SLEEF_VERSION)/buildroot-build

You will have to explain in the commit log why you need to point to the
host-sleef build directory, and why you can't use the installed one, in
$(HOST_DIR).

Also, a package build directory is accessed with $(HOST_SLEEF_BUILDDIR)
and for cmake based packages, it already includes the /buildroot-build
sub-directory component:

    make show-vars |jq .HOST_SLEEF_BUILDDIR

Otherwise, it looks good. Except forthe missing explanations about the
use of the build directory of the host packag, I could have fixed the
rest when applying.

Can you elaborate on that part, fix the other minor issues and respin,
please?

Regards,
Yann E. MORIN.

> +ifeq ($(BR2_PACKAGE_SLEEF_DFT),y)
> +SLEEF_CONF_OPTS += -DBUILD_DFT=ON
> +else
> +SLEEF_CONF_OPTS += -DBUILD_DFT=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SLEEF_QUAD),y)
> +SLEEF_CONF_OPTS += -DBUILD_QUAD=ON
> +else
> +SLEEF_CONF_OPTS += -DBUILD_QUAD=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SLEEF_GNUABI_LIBS),y)
> +SLEEF_CONF_OPTS += -DBUILD_GNUABI_LIBS=ON
> +else
> +SLEEF_CONF_OPTS += -DBUILD_GNUABI_LIBS=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SLEEF_SCALAR_LIB),y)
> +SLEEF_CONF_OPTS += -DBUILD_SCALAR_LIB=ON
> +else
> +SLEEF_CONF_OPTS += -DBUILD_SCALAR_LIB=OFF
> +endif
> +
> +ifeq ($(BR2_PACKAGE_SLEEF_TESTS),y)
> +SLEEF_CONF_OPTS += -DBUILD_TESTS=ON
> +else
> +SLEEF_CONF_OPTS += -DBUILD_TESTS=OFF
> +endif
> +
> +$(eval $(cmake-package))
> +$(eval $(host-cmake-package))
> -- 
> 2.20.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/Config.in b/package/Config.in
index b911c59a92..af9b0b7398 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2041,6 +2041,7 @@  endif
 	source "package/riemann-c-client/Config.in"
 	source "package/shapelib/Config.in"
 	source "package/skalibs/Config.in"
+	source "package/sleef/Config.in"
 	source "package/sphinxbase/Config.in"
 	source "package/startup-notification/Config.in"
 	source "package/tinycbor/Config.in"
diff --git a/package/sleef/Config.in b/package/sleef/Config.in
new file mode 100644
index 0000000000..85f93d384e
--- /dev/null
+++ b/package/sleef/Config.in
@@ -0,0 +1,50 @@ 
+config BR2_PACKAGE_SLEEF_ARCH_SUPPORTS
+	bool
+	default y if BR2_arm
+	default y if BR2_aarch64
+	default y if BR2_i386
+	default y if BR2_x86_64
+	default y if BR2_powerpc64
+
+config BR2_PACKAGE_SLEEF
+	bool "sleef"
+	help
+          SLEEF is a library that implements vectorized versions
+          of C standard math functions. This library also
+          includes DFT subroutines.
+
+          https://sleef.org/
+
+if BR2_PACKAGE_SLEEF
+
+config BR2_PACKAGE_SLEEF_DFT
+        bool "compile dft"
+        default n
+        help
+          libsleefdft will be built
+
+config BR2_PACKAGE_SLEEF_QUAD
+        bool "compile quad"
+        default n
+        help
+          libsleefquad will be built
+
+config BR2_PACKAGE_SLEEF_GNUABI_LIBS
+        bool "compile gnuabi"
+        default y
+        help
+          libsleefgnuabi will be built
+
+config BR2_PACKAGE_SLEEF_SCALAR_LIB
+        bool "compile scalar"
+        default n
+        help
+          libsleefscalar will be built
+
+config BR2_PACKAGE_SLEEF_TESTS
+        bool "compile tests"
+        default n
+        help
+          Tests will be built
+
+endif
diff --git a/package/sleef/sleef.hash b/package/sleef/sleef.hash
new file mode 100644
index 0000000000..51570a5176
--- /dev/null
+++ b/package/sleef/sleef.hash
@@ -0,0 +1,3 @@ 
+# Locally calculated
+sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE.txt
+sha256  415ee9b1bcc5816989d3d4d92afd0cd3f9ee89cbd5a33eb008e69751e40438ab  sleef-3.5.1.tar.gz
diff --git a/package/sleef/sleef.mk b/package/sleef/sleef.mk
new file mode 100644
index 0000000000..46bef69f5f
--- /dev/null
+++ b/package/sleef/sleef.mk
@@ -0,0 +1,49 @@ 
+################################################################################
+#
+# sleef
+#
+################################################################################
+
+SLEEF_VERSION = 3.5.1
+SLEEF_SITE = $(call github,shibatch,sleef,$(SLEEF_VERSION))
+SLEEF_LICENSE = BSL-1.0
+SLEEF_LICENSE_FILES = LICENSE.txt
+SLEEF_SUPPORTS_IN_SOURCE_BUILD = NO
+SLEEF_INSTALL_STAGING = YES
+
+# N.B. Need to use host sleef during cross compilation.
+SLEEF_DEPENDENCIES = host-sleef
+SLEEF_CONF_OPTS += -DNATIVE_BUILD_DIR=$(BUILD_DIR)/host-sleef-$(SLEEF_VERSION)/buildroot-build
+
+ifeq ($(BR2_PACKAGE_SLEEF_DFT),y)
+SLEEF_CONF_OPTS += -DBUILD_DFT=ON
+else
+SLEEF_CONF_OPTS += -DBUILD_DFT=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_SLEEF_QUAD),y)
+SLEEF_CONF_OPTS += -DBUILD_QUAD=ON
+else
+SLEEF_CONF_OPTS += -DBUILD_QUAD=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_SLEEF_GNUABI_LIBS),y)
+SLEEF_CONF_OPTS += -DBUILD_GNUABI_LIBS=ON
+else
+SLEEF_CONF_OPTS += -DBUILD_GNUABI_LIBS=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_SLEEF_SCALAR_LIB),y)
+SLEEF_CONF_OPTS += -DBUILD_SCALAR_LIB=ON
+else
+SLEEF_CONF_OPTS += -DBUILD_SCALAR_LIB=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_SLEEF_TESTS),y)
+SLEEF_CONF_OPTS += -DBUILD_TESTS=ON
+else
+SLEEF_CONF_OPTS += -DBUILD_TESTS=OFF
+endif
+
+$(eval $(cmake-package))
+$(eval $(host-cmake-package))