package/volk: new package

VOLK is the Vector-Optimized Library of Kernels

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Reviewed-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Gwenhael Goavec-Merou 2022-02-08 17:24:08 +01:00 committed by Thomas Petazzoni
parent 736c4c1655
commit 5f54ccb46f
5 changed files with 81 additions and 0 deletions

View File

@ -1205,6 +1205,7 @@ F: package/python-markdown/
F: package/python-remi/
F: package/python-sip/
F: package/uhd/
F: package/volk/
N: Heiko Thiery <heiko.thiery@gmail.com>
F: board/kontron/bl-imx8mm/

View File

@ -2071,6 +2071,7 @@ endif
source "package/tz/Config.in"
source "package/tzdata/Config.in"
source "package/uvw/Config.in"
source "package/volk/Config.in"
source "package/xapian/Config.in"
endmenu

33
package/volk/Config.in Normal file
View File

@ -0,0 +1,33 @@
comment "volk needs a toolchain w/ C++, NPTL, wchar, dynamic library"
depends on BR2_USE_MMU
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS
config BR2_PACKAGE_VOLK
bool "volk"
depends on BR2_INSTALL_LIBSTDCPP
depends on !BR2_STATIC_LIBS
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on BR2_USE_MMU # use fork()
depends on BR2_USE_WCHAR # boost
depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem
select BR2_PACKAGE_BOOST
select BR2_PACKAGE_BOOST_FILESYSTEM
select BR2_PACKAGE_BOOST_SYSTEM
help
VOLK is the Vector-Optimized Library of Kernels. It is a
library that contains kernels of hand-written SIMD code
for different mathematical operations. Since each SIMD
architecture can be very different and no compiler has yet
come along to handle vectorization properly or highly
efficiently, VOLK approaches the problem differently.
For each architecture or platform that a developer wishes
to vectorize for, a new proto-kernel is added to VOLK. At
runtime, VOLK will select the correct proto-kernel. In this
way, the users of VOLK call a kernel for performing the
operation that is platform/architecture agnostic. This
allows us to write portable SIMD code.
https://www.libvolk.org/

4
package/volk/volk.hash Normal file
View File

@ -0,0 +1,4 @@
# Locally computed
sha256 3f092737006ad2b7d24852833cf040e725c6f47d68ec2f4197895f84c6400bd8 volk-2.5.1.tar.xz
sha256 6dcdafa9e750545f5f65c2e6f53820184822db728ac2b8bfe1d4a47da09ec0d6 COPYING
sha256 258f450f060a161fb9f9e2e7c07c6b1ee73e5142297e6792dc1ee76b028cf0ca COPYING-LGPL

42
package/volk/volk.mk Normal file
View File

@ -0,0 +1,42 @@
################################################################################
#
# volk
#
################################################################################
VOLK_VERSION = 2.5.1
VOLK_SITE = https://github.com/gnuradio/volk/releases/download/v$(VOLK_VERSION)
VOLK_SOURCE = volk-$(VOLK_VERSION).tar.xz
# See https://github.com/gnuradio/volk/tree/v2.5.1#license for some
# details on the licensing.
VOLK_LICENSE = GPL-3.0+
VOLK_LICENSE_FILES = COPYING COPYING-LGPL
VOLK_SUPPORTS_IN_SOURCE_BUILD = NO
# host-python-mako are needed for volk to compile
VOLK_DEPENDENCIES = host-python3 host-python-mako boost
VOLK_CONF_OPTS = \
-DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python3 \
-DENABLE_MODTOOL=OFF \
-DENABLE_TESTING=OFF \
-DENABLE_PROFILING=OFF \
-DVOLK_PYTHON_DIR=lib/python$(PYTHON3_VERSION_MAJOR)/site-packages
# For third-party blocks, the volk library is mandatory at
# compile time.
VOLK_INSTALL_STAGING = YES
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
VOLK_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic
endif
ifeq ($(BR2_PACKAGE_ORC),y)
VOLK_DEPENDENCIES += orc
VOLK_CONF_OPTS += -DENABLE_ORC=ON
else
VOLK_CONF_OPTS += -DENABLE_ORC=OFF
endif
$(eval $(cmake-package))