volk: update to 2.4.0 pkgsrc: since the volk release tarball only provides the required cpu_features library as a git submodule that has to be manually cloned, we instead depend on devel/cpu_features from pkgsrc and patch the cmake files to accept the static library as an external dependency. Documentation Update README to be more verbose and to improve usefulness. Compilers AppleClang: Treat AppleClang as Clang. Paired with the cpu_features introduction, this enables us to use architecture specific kernels on a broader set of platforms. CMake Enable to not install volk_modtool. Remove "find_package_handle_standard_args" warning. cpu_features Use cpu_features v0.6.0 as a private submodule to detect available CPU features. Fix incorrect feature detection for newer AVX versions. Circumvent platform specific feature detection. Enable more architecture specific kernels on more platforms. Kernels Disable slow and broken SSE4.1 kernel in volk_32fc_x2_dot_prod_32fc Adjust min/max for 32f_s32f_convert_8i kernel Use INT8_* instead of CHAR_*diff -r1.2 -r1.3 pkgsrc/math/volk/Makefile
(tnn)
@@ -1,17 +1,16 @@ | @@ -1,17 +1,16 @@ | |||
1 | # $NetBSD: Makefile,v 1.2 2020/12/04 20:45:29 nia Exp $ | 1 | # $NetBSD: Makefile,v 1.3 2020/12/14 19:04:40 tnn Exp $ | |
2 | 2 | |||
3 | DISTNAME= volk-2.3.0 | 3 | DISTNAME= volk-2.4.0 | |
4 | PKGREVISION= 1 | |||
5 | CATEGORIES= math ham | 4 | CATEGORIES= math ham | |
6 | MASTER_SITES= ${MASTER_SITE_GITHUB:=gnuradio/} | 5 | MASTER_SITES= ${MASTER_SITE_GITHUB:=gnuradio/} | |
7 | GITHUB_TAG= v${PKGVERSION_NOREV} | 6 | GITHUB_TAG= v${PKGVERSION_NOREV} | |
8 | 7 | |||
9 | MAINTAINER= pkgsrc-users@NetBSD.org | 8 | MAINTAINER= pkgsrc-users@NetBSD.org | |
10 | HOMEPAGE= https://www.libvolk.org/ | 9 | HOMEPAGE= https://www.libvolk.org/ | |
11 | COMMENT= The Vector Optimized Library of Kernels | 10 | COMMENT= The Vector Optimized Library of Kernels | |
12 | LICENSE= gnu-gpl-v3 | 11 | LICENSE= gnu-gpl-v3 | |
13 | 12 | |||
14 | BUILD_DEPENDS+= ${PYPKGPREFIX}-mako-[0-9]*:../../devel/py-mako | 13 | BUILD_DEPENDS+= ${PYPKGPREFIX}-mako-[0-9]*:../../devel/py-mako | |
15 | 14 | |||
16 | USE_CMAKE= yes | 15 | USE_CMAKE= yes | |
17 | USE_LANGUAGES= c c++ | 16 | USE_LANGUAGES= c c++ | |
@@ -19,14 +18,15 @@ USE_TOOLS+= pkg-config | @@ -19,14 +18,15 @@ USE_TOOLS+= pkg-config | |||
19 | 18 | |||
20 | # XXX this doesn't work because VolkPython.cmake doesn't conform | 19 | # XXX this doesn't work because VolkPython.cmake doesn't conform | |
21 | # to PEP 3147 (doesn't place files in __pycache__ when using python 3) | 20 | # to PEP 3147 (doesn't place files in __pycache__ when using python 3) | |
22 | # | 21 | # | |
23 | # PY_PATCHPLIST= yes | 22 | # PY_PATCHPLIST= yes | |
24 | #.include "../../lang/python/extension.mk" | 23 | #.include "../../lang/python/extension.mk" | |
25 | # | 24 | # | |
26 | # So do it manually instead: | 25 | # So do it manually instead: | |
27 | .include "../../lang/python/application.mk" | 26 | .include "../../lang/python/application.mk" | |
28 | PLIST_SUBST+= PYSITELIB=${PYSITELIB} | 27 | PLIST_SUBST+= PYSITELIB=${PYSITELIB} | |
29 | 28 | |||
30 | .include "../../devel/orc/buildlink3.mk" | 29 | .include "../../devel/orc/buildlink3.mk" | |
31 | .include "../../devel/boost-libs/buildlink3.mk" | 30 | .include "../../devel/boost-libs/buildlink3.mk" | |
31 | .include "../../devel/cpu_features/buildlink3.mk" | |||
32 | .include "../../mk/bsd.pkg.mk" | 32 | .include "../../mk/bsd.pkg.mk" |
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | @comment $NetBSD: PLIST,v 1.1 2020/08/01 04:35:09 tnn Exp $ | 1 | @comment $NetBSD: PLIST,v 1.2 2020/12/14 19:04:40 tnn Exp $ | |
2 | bin/volk-config-info | 2 | bin/volk-config-info | |
3 | bin/volk_modtool | 3 | bin/volk_modtool | |
4 | bin/volk_profile | 4 | bin/volk_profile | |
5 | include/volk/constants.h | 5 | include/volk/constants.h | |
6 | include/volk/saturation_arithmetic.h | 6 | include/volk/saturation_arithmetic.h | |
7 | include/volk/volk.h | 7 | include/volk/volk.h | |
8 | include/volk/volk_16i_32fc_dot_prod_32fc.h | 8 | include/volk/volk_16i_32fc_dot_prod_32fc.h | |
9 | include/volk/volk_16i_branch_4_state_8.h | 9 | include/volk/volk_16i_branch_4_state_8.h | |
10 | include/volk/volk_16i_convert_8i.h | 10 | include/volk/volk_16i_convert_8i.h | |
11 | include/volk/volk_16i_max_star_16i.h | 11 | include/volk/volk_16i_max_star_16i.h | |
12 | include/volk/volk_16i_max_star_horizontal_16i.h | 12 | include/volk/volk_16i_max_star_horizontal_16i.h | |
13 | include/volk/volk_16i_permute_and_scalar_add.h | 13 | include/volk/volk_16i_permute_and_scalar_add.h | |
14 | include/volk/volk_16i_s32f_convert_32f.h | 14 | include/volk/volk_16i_s32f_convert_32f.h | |
@@ -148,26 +148,26 @@ include/volk/volk_config_fixed.h | @@ -148,26 +148,26 @@ include/volk/volk_config_fixed.h | |||
148 | include/volk/volk_cpu.h | 148 | include/volk/volk_cpu.h | |
149 | include/volk/volk_malloc.h | 149 | include/volk/volk_malloc.h | |
150 | include/volk/volk_neon_intrinsics.h | 150 | include/volk/volk_neon_intrinsics.h | |
151 | include/volk/volk_prefs.h | 151 | include/volk/volk_prefs.h | |
152 | include/volk/volk_sse3_intrinsics.h | 152 | include/volk/volk_sse3_intrinsics.h | |
153 | include/volk/volk_sse_intrinsics.h | 153 | include/volk/volk_sse_intrinsics.h | |
154 | include/volk/volk_typedefs.h | 154 | include/volk/volk_typedefs.h | |
155 | include/volk/volk_version.h | 155 | include/volk/volk_version.h | |
156 | lib/cmake/volk/VolkConfig.cmake | 156 | lib/cmake/volk/VolkConfig.cmake | |
157 | lib/cmake/volk/VolkConfigVersion.cmake | 157 | lib/cmake/volk/VolkConfigVersion.cmake | |
158 | lib/cmake/volk/VolkTargets-release.cmake | 158 | lib/cmake/volk/VolkTargets-release.cmake | |
159 | lib/cmake/volk/VolkTargets.cmake | 159 | lib/cmake/volk/VolkTargets.cmake | |
160 | lib/libvolk.so | 160 | lib/libvolk.so | |
161 | lib/libvolk.so.2.3 | 161 | lib/libvolk.so.2.4 | |
162 | lib/pkgconfig/volk.pc | 162 | lib/pkgconfig/volk.pc | |
163 | ${PYSITELIB}/volk_modtool/__init__.py | 163 | ${PYSITELIB}/volk_modtool/__init__.py | |
164 | ${PYSITELIB}/volk_modtool/__init__.pyc | 164 | ${PYSITELIB}/volk_modtool/__init__.pyc | |
165 | ${PYSITELIB}/volk_modtool/__init__.pyo | 165 | ${PYSITELIB}/volk_modtool/__init__.pyo | |
166 | ${PYSITELIB}/volk_modtool/cfg.py | 166 | ${PYSITELIB}/volk_modtool/cfg.py | |
167 | ${PYSITELIB}/volk_modtool/cfg.pyc | 167 | ${PYSITELIB}/volk_modtool/cfg.pyc | |
168 | ${PYSITELIB}/volk_modtool/cfg.pyo | 168 | ${PYSITELIB}/volk_modtool/cfg.pyo | |
169 | ${PYSITELIB}/volk_modtool/volk_modtool_generate.py | 169 | ${PYSITELIB}/volk_modtool/volk_modtool_generate.py | |
170 | ${PYSITELIB}/volk_modtool/volk_modtool_generate.pyc | 170 | ${PYSITELIB}/volk_modtool/volk_modtool_generate.pyc | |
171 | ${PYSITELIB}/volk_modtool/volk_modtool_generate.pyo | 171 | ${PYSITELIB}/volk_modtool/volk_modtool_generate.pyo | |
172 | @pkgdir include/volk/asm/orc | 172 | @pkgdir include/volk/asm/orc | |
173 | @pkgdir include/volk/asm/neon | 173 | @pkgdir include/volk/asm/neon |
@@ -1,14 +1,15 @@ | @@ -1,14 +1,15 @@ | |||
1 | # $NetBSD: buildlink3.mk,v 1.1 2020/08/01 04:35:09 tnn Exp $ | 1 | # $NetBSD: buildlink3.mk,v 1.2 2020/12/14 19:04:40 tnn Exp $ | |
2 | 2 | |||
3 | BUILDLINK_TREE+= volk | 3 | BUILDLINK_TREE+= volk | |
4 | 4 | |||
5 | .if !defined(VOLK_BUILDLINK3_MK) | 5 | .if !defined(VOLK_BUILDLINK3_MK) | |
6 | VOLK_BUILDLINK3_MK:= | 6 | VOLK_BUILDLINK3_MK:= | |
7 | 7 | |||
8 | BUILDLINK_API_DEPENDS.volk+= volk>=2.3.0 | 8 | BUILDLINK_API_DEPENDS.volk+= volk>=2.3.0 | |
9 | BUILDLINK_ABI_DEPENDS.volk+= volk>=2.4.0 | |||
9 | BUILDLINK_PKGSRCDIR.volk?= ../../math/volk | 10 | BUILDLINK_PKGSRCDIR.volk?= ../../math/volk | |
10 | 11 | |||
11 | .include "../../devel/orc/buildlink3.mk" | 12 | .include "../../devel/orc/buildlink3.mk" | |
12 | .endif # VOLK_BUILDLINK3_MK | 13 | .endif # VOLK_BUILDLINK3_MK | |
13 | 14 | |||
14 | BUILDLINK_TREE+= -volk | 15 | BUILDLINK_TREE+= -volk |
@@ -1,8 +1,10 @@ | @@ -1,8 +1,10 @@ | |||
1 | $NetBSD: distinfo,v 1.1 2020/08/01 04:35:09 tnn Exp $ | 1 | $NetBSD: distinfo,v 1.2 2020/12/14 19:04:40 tnn Exp $ | |
2 | 2 | |||
3 | SHA1 (volk-2.3.0.tar.gz) = c9824143bc8835ca2e9ebb2204dcb8a4836e8958 | 3 | SHA1 (volk-2.4.0.tar.gz) = b646d1d52208045b37fc40ffbd9f07c0b04e9ce8 | |
4 | RMD160 (volk-2.3.0.tar.gz) = 9cf2d79cdf98ac8b9e935694601f3b33a5852b8d | 4 | RMD160 (volk-2.4.0.tar.gz) = 16de9065941f1f0948f1b019542833caa3f968f4 | |
5 | SHA512 (volk-2.3.0.tar.gz) = 9e3b405b7be46b4f5ff61a4d42fa9013fc55169bc18c9cf9253e446fe23fd12dc0356adb9aa176e33dfa4cc478e4b9226bee906a2d89ef83bac3b28f52816382 | 5 | SHA512 (volk-2.4.0.tar.gz) = 571974e10d664870ff949ca0e79b62905acf5baacbedc951764388dfeeeecd649eccbe60944369cfb49be1f8c67a9ebdac81e2dbeca70eabf513c6c2d32f859e | |
6 | Size (volk-2.3.0.tar.gz) = 344763 bytes | 6 | Size (volk-2.4.0.tar.gz) = 346354 bytes | |
7 | SHA1 (patch-CMakeLists.txt) = fe0571495a1183579dda1a265819f3eb76fe9edf | |||
7 | SHA1 (patch-include_volk_volk__common.h) = 53e7aa38deaa9cdf68ca12fff6c176be471cf162 | 8 | SHA1 (patch-include_volk_volk__common.h) = 53e7aa38deaa9cdf68ca12fff6c176be471cf162 | |
8 | SHA1 (patch-include_volk_volk__complex.h) = 248bf10c03364f7338f03cbaa4ddc8047da9c775 | 9 | SHA1 (patch-include_volk_volk__complex.h) = 248bf10c03364f7338f03cbaa4ddc8047da9c775 | |
10 | SHA1 (patch-lib_CMakeLists.txt) = 9cf79e37227c3de1e76610ab01ff43aa9439fcf7 |
$NetBSD: patch-CMakeLists.txt,v 1.1 2020/12/14 19:04:41 tnn Exp $
Use devel/cpu_features from pkgsrc since the volk release tarball doesn't
bundle it and we need to patch cpu_features anyway.
--- CMakeLists.txt.orig 2020-11-22 16:33:01.000000000 +0000
+++ CMakeLists.txt
@@ -115,13 +115,7 @@ endif(MSVC)
########################################################################
# cpu_features
-set(BUILD_PIC ON CACHE BOOL
- "Build cpu_features with Position Independent Code (PIC)."
- FORCE)
-set(BUILD_SHARED_LIBS_SAVED "${BUILD_SHARED_LIBS}")
-set(BUILD_SHARED_LIBS OFF)
-add_subdirectory(cpu_features)
-set(BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS_SAVED}")
+find_package(CpuFeatures)
# Python
include(VolkPython) #sets PYTHON_EXECUTABLE and PYTHON_DASH_B
$NetBSD: patch-lib_CMakeLists.txt,v 1.1 2020/12/14 19:04:41 tnn Exp $
Use devel/cpu_features from pkgsrc since the volk release tarball doesn't
bundle it and we need to patch cpu_features anyway.
--- lib/CMakeLists.txt.orig 2020-11-22 16:33:01.000000000 +0000
+++ lib/CMakeLists.txt
@@ -511,7 +511,7 @@ target_include_directories(volk_obj
PRIVATE $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/kernels>
- PRIVATE $<TARGET_PROPERTY:cpu_features,INTERFACE_INCLUDE_DIRECTORIES>
+ PRIVATE $<TARGET_PROPERTY:CpuFeatures::cpu_features,INTERFACE_INCLUDE_DIRECTORIES>
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
)