From f078a76f76b7d84fd29b4864101dc93c3472fb45 Mon Sep 17 00:00:00 2001 From: "A. Maitland Bottoms" Date: Tue, 3 Apr 2018 06:03:19 +0100 Subject: [PATCH] Import volk_1.4-2.debian.tar.xz [dgit import tarball volk 1.4-2 volk_1.4-2.debian.tar.xz] --- changelog | 339 +++++++++ compat | 1 + control | 72 ++ copyright | 191 +++++ libvolk1-bin.install | 1 + libvolk1-bin.manpages | 3 + libvolk1-dev.abi.tar.gz.amd64 | Bin 0 -> 58707 bytes libvolk1-dev.acc | 12 + libvolk1-dev.install | 4 + libvolk1-dev_1.4-1_report.html | 1069 ++++++++++++++++++++++++++++ libvolk1.4.install | 1 + patches/install-all-headers | 38 + patches/libm-link | 20 + patches/make-acc-happy | 69 ++ patches/native-armv7-build-support | 64 ++ patches/series | 4 + patches/sort-cmake-glob-lists | 25 + patches/sort-input-files | 39 + release-v14.html | 201 ++++++ rules | 17 + source/format | 1 + source/include-binaries | 1 + upstream/signing-key.asc | 52 ++ volk-config-info.1 | 45 ++ volk_modtool.1 | 112 +++ volk_profile.1 | 5 + watch | 3 + 27 files changed, 2389 insertions(+) create mode 100644 changelog create mode 100644 compat create mode 100644 control create mode 100644 copyright create mode 100644 libvolk1-bin.install create mode 100644 libvolk1-bin.manpages create mode 100644 libvolk1-dev.abi.tar.gz.amd64 create mode 100644 libvolk1-dev.acc create mode 100644 libvolk1-dev.install create mode 100644 libvolk1-dev_1.4-1_report.html create mode 100644 libvolk1.4.install create mode 100644 patches/install-all-headers create mode 100644 patches/libm-link create mode 100644 patches/make-acc-happy create mode 100644 patches/native-armv7-build-support create mode 100644 patches/series create mode 100644 patches/sort-cmake-glob-lists create mode 100644 patches/sort-input-files create mode 100644 release-v14.html create mode 100755 rules create mode 100644 source/format create mode 100644 source/include-binaries create mode 100644 upstream/signing-key.asc create mode 100644 volk-config-info.1 create mode 100644 volk_modtool.1 create mode 100644 volk_profile.1 create mode 100644 watch diff --git a/changelog b/changelog new file mode 100644 index 0000000..87b2e94 --- /dev/null +++ b/changelog @@ -0,0 +1,339 @@ +volk (1.4-2) unstable; urgency=medium + + * Upload to unstable, needed by gnuradio (>= 3.7.12.0) + + -- A. Maitland Bottoms Tue, 03 Apr 2018 01:03:19 -0400 + +volk (1.4-1) experimental; urgency=medium + + * New upstream release + upstream changelog http://libvolk.org/release-v14.html + + -- A. Maitland Bottoms Tue, 27 Mar 2018 22:57:42 -0400 + +volk (1.3.1-1) unstable; urgency=medium + + * New upstream bugfix release + * Refresh all debian patches for use with git am + + -- A. Maitland Bottoms Tue, 27 Mar 2018 21:54:29 -0400 + +volk (1.3-3) unstable; urgency=medium + + * update to v1.3-23-g0109b2e + * update debian/libvolk1-dev.abi.tar.gz.amd64 + * Add breaks/replaces gnuradio (<=3.7.2.1) (LP: #1614235) + + -- A. Maitland Bottoms Sun, 04 Feb 2018 13:12:21 -0500 + +volk (1.3-2) unstable; urgency=medium + + * update to v1.3-16-g28b03a9 + apps: fix profile update reading end of lines + qa: lower tolerance for 32fc_mag to fix issue #96 + * include upstream master patch to sort input files + + -- A. Maitland Bottoms Sun, 27 Aug 2017 13:44:55 -0400 + +volk (1.3-1) unstable; urgency=medium + + * New upstream release + * The index_max kernels were named with the wrong output datatype. To + fix this there are new kernels that return a 32u (int32_t) and the + existing kernels had their signatures changed to return 16u (int16_t). + * The output to stdout and stderr has been shuffled around. There is no + longer a message that prints what VOLK machine is being used and the + warning messages go to stderr rather than stdout. + * The 32fc_index_max kernels previously were only accurate to the SSE + register width (4 points). This was a pretty serious and long-lived + bug that's been fixed and the QA updated appropriately. + + -- A. Maitland Bottoms Sat, 02 Jul 2016 16:30:47 -0400 + +volk (1.2.2-2) unstable; urgency=medium + + * update to v1.2.2-11-g78c8bc4 (to follow gnuradio maint branch) + + -- A. Maitland Bottoms Sun, 19 Jun 2016 14:44:15 -0400 + +volk (1.2.2-1) unstable; urgency=medium + + * New upstream release + + -- A. Maitland Bottoms Fri, 08 Apr 2016 00:12:10 -0400 + +volk (1.2.1-2) unstable; urgency=medium + + * Upstream patches: + Fix some CMake complaints + The fix for compilation with cmake 3.5 + + -- A. Maitland Bottoms Wed, 23 Mar 2016 17:47:54 -0400 + +volk (1.2.1-1) unstable; urgency=medium + + * New upstream release + + -- A. Maitland Bottoms Sun, 07 Feb 2016 19:38:32 -0500 + +volk (1.2-1) unstable; urgency=medium + + * New upstream release + + -- A. Maitland Bottoms Thu, 24 Dec 2015 20:28:13 -0500 + +volk (1.1.1-5) experimental; urgency=medium + + * update to v1.1.1-22-gef53547 to support gnuradio 3.7.9 + + -- A. Maitland Bottoms Fri, 11 Dec 2015 13:12:55 -0500 + +volk (1.1.1-4) unstable; urgency=medium + + * more lintian fixes + + -- A. Maitland Bottoms Wed, 25 Nov 2015 21:49:58 -0500 + +volk (1.1.1-3) unstable; urgency=medium + + * Lintian fixes Pre-Depends + + -- A. Maitland Bottoms Thu, 19 Nov 2015 21:24:27 -0500 + +volk (1.1.1-2) unstable; urgency=medium + + * Note that libvolk1-dev replaces files in gnuradio-dev versions <<3.7.8 + (Closes: #802646) again. Thanks Andreas Beckmann. + + -- A. Maitland Bottoms Fri, 13 Nov 2015 18:45:49 -0500 + +volk (1.1.1-1) unstable; urgency=medium + + * New upstream release + * New architectures exist for the AVX2 and FMA ISAs. + * The profiler now generates buffers that are vlen + a tiny amount and + generates random data to fill buffers. This is intended to catch bugs + in protokernels that write beyond num_points. + * Note that libvolk1-dev replaces files in earlier gnuradio-dev versions + (Closes: #802646) + + -- A. Maitland Bottoms Sun, 01 Nov 2015 18:45:43 -0500 + +volk (1.1-4) unstable; urgency=medium + + * update to v1.1-12-g264addc + + -- A. Maitland Bottoms Tue, 29 Sep 2015 23:41:50 -0400 + +volk (1.1-3) unstable; urgency=low + + * drop dh_acc to get reproducible builds + + -- A. Maitland Bottoms Fri, 11 Sep 2015 22:57:06 -0400 + +volk (1.1-2) unstable; urgency=low + + * use dh-acc + + -- A. Maitland Bottoms Mon, 07 Sep 2015 15:45:20 -0400 + +volk (1.1-1) unstable; urgency=medium + + * re-organize package naming convention + * New upstream release tag v1.1 + New architectures exist for the AVX2 and FMA ISAs. Along + with the build-system support the following kernels have + no proto-kernels taking advantage of these architectures: + + * 32f_x2_dot_prod_32f + * 32fc_x2_multiply_32fc + * 64_byteswap + * 32f_binary_slicer_8i + * 16u_byteswap + * 32u_byteswap + + QA/profiler + ----------- + + The profiler now generates buffers that are vlen + a tiny + amount and generates random data to fill buffers. This is + intended to catch bugs in protokernels that write beyond + num_points. + + -- A. Maitland Bottoms Wed, 26 Aug 2015 09:22:48 -0400 + +volk (1.0.2-2) unstable; urgency=low + + * Use SOURCE_DATE_EPOCH from the environment, if defined, + rather than current date and time to implement volk_build_date() + (embedding build date in a library does not help reproducible builds) + * add watch file + + -- A. Maitland Bottoms Sat, 15 Aug 2015 17:43:15 -0400 + +volk (1.0.2-1) unstable; urgency=medium + + * Maintenance release 24 Jul 2015 by Nathan West + * The major change is the CMake logic to add ASM protokernels. Rather + than depending on CFLAGS and ASMFLAGS we use the results of VOLK's + built in has_ARCH tests. All configurations should work the same as + before, but manually specifying CFLAGS and ASMFLAGS on the cmake call + for ARM native builds should no longer be necessary. + * The 32fc_s32fc_x2_rotator_32fc generic protokernel now includes a + previously implied header. + * Finally, there is a fix to return the "best" protokernel to the + dispatcher when no volk_config exists. Thanks to Alexandre Raymond for + pointing this out. + * with maint branch patch: + kernels-add-missing-include-arm_neon.h + * removed unused build-dependency on liboil0.3-dev (closes: #793626) + + -- A. Maitland Bottoms Wed, 05 Aug 2015 00:43:40 -0400 + +volk (1.0.1-1) unstable; urgency=low + + * Maintenance Release v1.0.1 08 Jul 2015 by Nathan West + This is a maintenance release with bug fixes since the initial release of + v1.0 in April. + + * Contributors + + The following authors have contributed code to this release: + + Doug Geiger doug.geiger@bioradiation.net + Elliot Briggs elliot.briggs@gmail.com + Marcus Mueller marcus@hostalia.de + Nathan West nathan.west@okstate.edu + Tom Rondeau tom@trondeau.com + + * Kernels + + Several bug fixes in different kernels. The NEON implementations of the + following kernels have been fixed: + + 32f_x2_add_32f + 32f_x2_dot_prod_32f + 32fc_s32fc_multiply_32fc + 32fc_x2_multiply_32fc + + Additionally the NEON asm based 32f_x2_add_32f protokernels were not being + used and are now included and available for use via the dispatcher. + + The 32f_s32f_x2_fm_detect_32f kernel now has a puppet. This solves QA seg + faults on 32-bit machines and provide a better test for this kernel. + + The 32fc_s32fc_x2_rotator_32fc generic protokernel replaced cabsf with + hypotf for better Android support. + + * Building + + Static builds now trigger the applications (volk_profile and + volk-config-info) to be statically linked. + + The file gcc_x86_cpuid.h has been removed since it was no longer being + used. Previously it provided cpuid functionality for ancient compilers + that we do not support. + + All build types now use -Wall. + + * QA and Testing + + The documentation around the --update option to volk_profile now makes it + clear that the option will only profile kernels without entries in + volk_profile. The signature of run_volk_tests with expanded args changed + signed types to unsigned types to reflect the actual input. + + The remaining changes are all non-functional changes to address issues + from Coverity. + + -- A. Maitland Bottoms Fri, 10 Jul 2015 17:57:42 -0400 + +volk (1.0-5) unstable; urgency=medium + + * native-armv7-build-support skips neon on Debian armel (Closes: #789972) + + -- A. Maitland Bottoms Sat, 04 Jul 2015 12:36:36 -0400 + +volk (1.0-4) unstable; urgency=low + + * update native-armv7-build-support patch from gnuradio volk package + + -- A. Maitland Bottoms Thu, 25 Jun 2015 16:38:49 -0400 + +volk (1.0-3) unstable; urgency=medium + + * Add Breaks/Replaces (Closes: #789893, #789894) + * Allow failing tests + + -- A. Maitland Bottoms Thu, 25 Jun 2015 12:46:06 -0400 + +volk (1.0-2) unstable; urgency=medium + + * kernels-add-missing-math.h-include-to-rotator + + -- A. Maitland Bottoms Wed, 24 Jun 2015 21:09:32 -0400 + +volk (1.0-1) unstable; urgency=low + + * Initial package (Closes: #782417) + Initial Release 11 Apr 2015 by Nathan West + + VOLK 1.0 is available. This is the first release of VOLK as an independently + tracked sub-project of GNU Radio. + + * Contributors + + VOLK has been tracked separately from GNU Radio since 2014 Dec 23. + Contributors between the split and the initial release are + + Albert Holguin aholguin_77@yahoo.com + Doug Geiger doug.geiger@bioradiation.net + Elliot Briggs elliot.briggs@gmail.com + Julien Olivain julien.olivain@lsv.ens-cachan.fr + Michael Dickens michael.dickens@ettus.com + Nathan West nathan.west@okstate.edu + Tom Rondeau tom@trondeau.com + + * QA + + The test and profiler have significantly changed. The profiler supports + run-time changes to vlen and iters to help kernel development and provide + more flexibility on embedded systems. Additionally there is a new option + to update an existing volk_profile results file with only new kernels which + will save time when updating to newer versions of VOLK + + The QA system creates a static list of kernels and test cases. The QA + testing and profiler iterate over this static list rather than each source + file keeping its own list. The QA also emits XML results to + lib/.unittest/kernels.xml which is formatted similarly to JUnit results. + + * Modtool + + Modtool was updated to support the QA and profiler changes. + + * Kernels + + New proto-kernels: + + 16ic_deinterleave_real_8i_neon + 16ic_s32f_deinterleave_32f_neon + fix preprocessor errors for some compilers on byteswap and popcount puppets + + ORC was moved to the asm kernels directory. + volk_malloc + + The posix_memalign implementation of Volk_malloc now falls back to a standard + malloc if alignment is 1. + + * Miscellaneous + + Several build system and cmake changes have made it possible to build VOLK + both independently with proper soname versions and in-tree for projects + such as GNU Radio. + + The static builds take advantage of cmake object libraries to speed up builds. + + Finally, there are a number of changes to satisfy compiler warnings and make + QA work on multiple machines. + + -- A. Maitland Bottoms Sun, 12 Apr 2015 23:20:41 -0400 diff --git a/compat b/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +9 diff --git a/control b/control new file mode 100644 index 0000000..cf18eb9 --- /dev/null +++ b/control @@ -0,0 +1,72 @@ +Source: volk +Section: libdevel +Priority: optional +Maintainer: A. Maitland Bottoms +Build-Depends: cmake, + debhelper (>= 9.0.0~), + dh-python, + doxygen, + libboost-filesystem-dev, + libboost-program-options-dev, + libboost-system-dev, + libboost-test-dev, + liborc-0.4-dev, + pkg-config, + python, + python3, + python-mako, + python3-mako, + python-six, + python3-six +Standards-Version: 4.1.3 +Homepage: http://libvolk.org +Vcs-Browser: https://salsa.debian.org/bottoms/pkg-volk +Vcs-Git: https://salsa.debian.org/bottoms/pkg-volk.git + +Package: libvolk1.4 +Section: libs +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends} +Multi-Arch: same +Recommends: libvolk1-bin +Suggests: libvolk1-dev +Description: vector optimized functions + Vector-Optimized Library of Kernels is designed to help + applications work with the processor's SIMD instruction sets. These are + very powerful vector operations that can give signal processing a + huge boost in performance. + +Package: libvolk1-dev +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: libvolk1.4 (=${binary:Version}), ${misc:Depends} +Breaks: gnuradio-dev (<<3.7.8), libvolk-dev, libvolk1.0-dev +Replaces: gnuradio-dev (<<3.7.8), libvolk-dev, libvolk1.0-dev +Multi-Arch: same +Description: vector optimized function headers + Vector-Optimized Library of Kernels is designed to help + applications work with the processor's SIMD instruction sets. These are + very powerful vector operations that can give signal processing a + huge boost in performance. + . + This package contains the header files. + For documentation, see libvolk-doc. + +Package: libvolk1-bin +Section: libs +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: libvolk1.4 (=${binary:Version}), + ${misc:Depends}, + ${python:Depends}, + ${shlibs:Depends} +Breaks: libvolk-bin, libvolk1.0-bin, gnuradio (<=3.7.2.1) +Replaces: libvolk-bin, libvolk1.0-bin, gnuradio (<=3.7.2.1) +Description: vector optimized runtime tools + Vector-Optimized Library of Kernels is designed to help + applications work with the processor's SIMD instruction sets. These are + very powerful vector operations that can give signal processing a + huge boost in performance. + . + This package includes the volk_profile tool. diff --git a/copyright b/copyright new file mode 100644 index 0000000..34e4faf --- /dev/null +++ b/copyright @@ -0,0 +1,191 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: volk +Upstream-Contact: http://libvolk.org/ +Source: + https://github.com/gnuradio/volk +Comment: + Debian packages by A. Maitland Bottoms + . + Upstream Authors: + Albert Holguin + Doug Geiger + Elliot Briggs + Julien Olivain + Michael Dickens + Nathan West + Tom Rondeau +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: * +Copyright: 2006, 2009-2016, Free Software Foundation, Inc. +License: GPL-3+ + +Files: Doxyfile.in + DoxygenLayout.xml + volk.pc.in +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: apps/volk_profile.h +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: appveyor.yml +Copyright: 2016 Paul Cercueil +License: GPL-3+ + +Files: cmake/* +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: cmake/Modules/* +Copyright: 2006, 2009-2016, Free Software Foundation, Inc. +License: GPL-3+ + +Files: cmake/Modules/CMakeParseArgumentsCopy.cmake +Copyright: 2010 Alexander Neundorf +License: Kitware-BSD + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + * Neither the names of Kitware, Inc., the Insight Software Consortium, + nor the names of their contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: cmake/Modules/FindORC.cmake + cmake/Modules/VolkConfig.cmake.in +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: cmake/msvc/* +Copyright: 2006-2008, Alexander Chemeris +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + 3. The name of the author may be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: cmake/msvc/config.h +Copyright: 2005, 2006 Apple Computer, Inc. +License: LGPL-2+ + +Files: cmake/msvc/stdbool.h +Copyright: 2005, 2006, Apple Computer, Inc. +License: LGPL-2+ + +Files: debian/* +Copyright: 2015 Free Software Foundation, Inc +License: GPL-3+ +Comment: assigned by A. Maitland Bottoms + +Files: debian/libvolk1-dev.abi.tar.gz.amd64 +Copyright: 2016 Free Software Foundation, Inc +License: GPL-3+ + +Files: docs/* +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: gen/archs.xml + gen/machines.xml +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: include/volk/volk_common.h + include/volk/volk_complex.h + include/volk/volk_prefs.h +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: kernels/volk/asm/* +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: kernels/volk/volk_16u_byteswappuppet_16u.h + kernels/volk/volk_32u_byteswappuppet_32u.h + kernels/volk/volk_64u_byteswappuppet_64u.h +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +Files: lib/kernel_tests.h + lib/qa_utils.cc + lib/qa_utils.h + lib/volk_prefs.c +Copyright: 2014-2015 Free Software Foundation, Inc. +License: GPL-3+ + +License: LGPL-2+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + . + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +License: GPL-3+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/libvolk1-bin.install b/libvolk1-bin.install new file mode 100644 index 0000000..b8fc484 --- /dev/null +++ b/libvolk1-bin.install @@ -0,0 +1 @@ +usr/bin/volk* diff --git a/libvolk1-bin.manpages b/libvolk1-bin.manpages new file mode 100644 index 0000000..95bae9e --- /dev/null +++ b/libvolk1-bin.manpages @@ -0,0 +1,3 @@ +debian/volk-config-info.1 +debian/volk_modtool.1 +debian/volk_profile.1 diff --git a/libvolk1-dev.abi.tar.gz.amd64 b/libvolk1-dev.abi.tar.gz.amd64 new file mode 100644 index 0000000000000000000000000000000000000000..ddc5bdd74c2d9505a57b8d5063a85f8484be7142 GIT binary patch literal 58707 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 H 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

API compatibility report for the libvolk1-dev library between 1.3-3 and 1.4-1 versions on x86_64

+ +
+
+

Test Info


+ + + + + + + +
Library Namelibvolk1-dev
Version #11.3-3
Version #21.4-1
Archx86_64
GCC Version7
SubjectBinary Compatibility
+

Test Results


+ + + + + + +
Total Header Files135
Total Libraries1
Total Symbols / Types614 / 233
Compatibility99.8%
+

Problem Summary


+ + + + + + + + + +
SeverityCount
Added Symbols-45
Removed SymbolsHigh0
Problems with
Data Types
High0
Medium0
Low1
Problems with
Symbols
High1
Medium0
Low0
Problems with
Constants
Low1
+ +

Added Symbols  45 


+volk.h, libvolk.so.1.4
+volk_32f_64f_add_64f [data]
+volk_32f_64f_add_64f_a [data]
+volk_32f_64f_add_64f_get_func_desc ( )
+volk_32f_64f_add_64f_manual ( double* cVector, float const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_32f_64f_add_64f_u [data]
+volk_32f_64f_multiply_64f [data]
+volk_32f_64f_multiply_64f_a [data]
+volk_32f_64f_multiply_64f_get_func_desc ( )
+volk_32f_64f_multiply_64f_manual ( double* cVector, float const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_32f_64f_multiply_64f_u [data]
+volk_32f_s32f_mod_rangepuppet_32f [data]
+volk_32f_s32f_mod_rangepuppet_32f_a [data]
+volk_32f_s32f_mod_rangepuppet_32f_get_func_desc ( )
+volk_32f_s32f_mod_rangepuppet_32f_manual ( float* output, float const* input, float bound, unsigned int num_points, char const* impl_name )
+volk_32f_s32f_mod_rangepuppet_32f_u [data]
+volk_32f_s32f_s32f_mod_range_32f [data]
+volk_32f_s32f_s32f_mod_range_32f_a [data]
+volk_32f_s32f_s32f_mod_range_32f_get_func_desc ( )
+volk_32f_s32f_s32f_mod_range_32f_manual ( float* outputVector, float const* inputVector, float const lower_bound, float const upper_bound, unsigned int num_points, char const* impl_name )
+volk_32f_s32f_s32f_mod_range_32f_u [data]
+volk_32fc_32f_add_32fc [data]
+volk_32fc_32f_add_32fc_a [data]
+volk_32fc_32f_add_32fc_get_func_desc ( )
+volk_32fc_32f_add_32fc_manual ( lv_32fc_t* cVector, lv_32fc_t const* aVector, float const* bVector, unsigned int num_points, char const* impl_name )
+volk_32fc_32f_add_32fc_u [data]
+volk_32fc_x2_add_32fc [data]
+volk_32fc_x2_add_32fc_a [data]
+volk_32fc_x2_add_32fc_get_func_desc ( )
+volk_32fc_x2_add_32fc_manual ( lv_32fc_t* cVector, lv_32fc_t const* aVector, lv_32fc_t const* bVector, unsigned int num_points, char const* impl_name )
+volk_32fc_x2_add_32fc_u [data]
+volk_32u_reverse_32u [data]
+volk_32u_reverse_32u_a [data]
+volk_32u_reverse_32u_get_func_desc ( )
+volk_32u_reverse_32u_manual ( uint32_t* out, uint32_t const* in, unsigned int num_points, char const* impl_name )
+volk_32u_reverse_32u_u [data]
+volk_64f_x2_add_64f [data]
+volk_64f_x2_add_64f_a [data]
+volk_64f_x2_add_64f_get_func_desc ( )
+volk_64f_x2_add_64f_manual ( double* cVector, double const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_64f_x2_add_64f_u [data]
+volk_64f_x2_multiply_64f [data]
+volk_64f_x2_multiply_64f_a [data]
+volk_64f_x2_multiply_64f_get_func_desc ( )
+volk_64f_x2_multiply_64f_manual ( double* cVector, double const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_64f_x2_multiply_64f_u [data]
+
+to the top
+ +

Problems with Symbols, High Severity  1 


+volk.h, libvolk.so.1.3
+ +[+] volk_32f_8u_polarbutterfly_32f_manual ( float* llrs, unsigned char* u, int const frame_size, int const frame_exp, int const stage, int const u_num, int const row, char const* impl_name )  1  +
+ +
+to the top
+ +

Problems with Data Types, Low Severity  1 


+volk_typedefs.h
+ +[+] typedef p_32f_8u_polarbutterfly_32f  1  +
+ + +
+to the top
+ +

Problems with Constants, Low Severity  1 


+volk_32f_log2_32f.h
+ +[+] LOG_POLY_DEGREE +
+ + +
+to the top
+

Header Files  135 


+
+constants.h
+saturation_arithmetic.h
+volk.h
+volk_16i_32fc_dot_prod_32fc.h
+volk_16i_branch_4_state_8.h
+volk_16i_convert_8i.h
+volk_16i_max_star_16i.h
+volk_16i_max_star_horizontal_16i.h
+volk_16i_permute_and_scalar_add.h
+volk_16i_s32f_convert_32f.h
+volk_16i_x4_quad_max_star_16i.h
+volk_16i_x5_add_quad_16i_x4.h
+volk_16ic_convert_32fc.h
+volk_16ic_deinterleave_16i_x2.h
+volk_16ic_deinterleave_real_16i.h
+volk_16ic_deinterleave_real_8i.h
+volk_16ic_magnitude_16i.h
+volk_16ic_s32f_deinterleave_32f_x2.h
+volk_16ic_s32f_deinterleave_real_32f.h
+volk_16ic_s32f_magnitude_32f.h
+volk_16ic_x2_dot_prod_16ic.h
+volk_16ic_x2_multiply_16ic.h
+volk_16u_byteswap.h
+volk_16u_byteswappuppet_16u.h
+volk_32f_8u_polarbutterfly_32f.h
+volk_32f_8u_polarbutterflypuppet_32f.h
+volk_32f_accumulator_s32f.h
+volk_32f_acos_32f.h
+volk_32f_asin_32f.h
+volk_32f_atan_32f.h
+volk_32f_binary_slicer_32i.h
+volk_32f_binary_slicer_8i.h
+volk_32f_convert_64f.h
+volk_32f_cos_32f.h
+volk_32f_expfast_32f.h
+volk_32f_index_max_16u.h
+volk_32f_index_max_32u.h
+volk_32f_invsqrt_32f.h
+volk_32f_log2_32f.h
+volk_32f_null_32f.h
+volk_32f_s32f_32f_fm_detect_32f.h
+volk_32f_s32f_calc_spectral_noise_floor_32f.h
+volk_32f_s32f_convert_16i.h
+volk_32f_s32f_convert_32i.h
+volk_32f_s32f_convert_8i.h
+volk_32f_s32f_multiply_32f.h
+volk_32f_s32f_normalize.h
+volk_32f_s32f_power_32f.h
+volk_32f_s32f_stddev_32f.h
+volk_32f_sin_32f.h
+volk_32f_sqrt_32f.h
+volk_32f_stddev_and_mean_32f_x2.h
+volk_32f_tan_32f.h
+volk_32f_tanh_32f.h
+volk_32f_x2_add_32f.h
+volk_32f_x2_divide_32f.h
+volk_32f_x2_dot_prod_16i.h
+volk_32f_x2_dot_prod_32f.h
+volk_32f_x2_fm_detectpuppet_32f.h
+volk_32f_x2_interleave_32fc.h
+volk_32f_x2_max_32f.h
+volk_32f_x2_min_32f.h
+volk_32f_x2_multiply_32f.h
+volk_32f_x2_pow_32f.h
+volk_32f_x2_s32f_interleave_16ic.h
+volk_32f_x2_subtract_32f.h
+volk_32f_x3_sum_of_poly_32f.h
+volk_32fc_32f_dot_prod_32fc.h
+volk_32fc_32f_multiply_32fc.h
+volk_32fc_conjugate_32fc.h
+volk_32fc_convert_16ic.h
+volk_32fc_deinterleave_32f_x2.h
+volk_32fc_deinterleave_64f_x2.h
+volk_32fc_deinterleave_imag_32f.h
+volk_32fc_deinterleave_real_32f.h
+volk_32fc_deinterleave_real_64f.h
+volk_32fc_index_max_16u.h
+volk_32fc_index_max_32u.h
+volk_32fc_magnitude_32f.h
+volk_32fc_magnitude_squared_32f.h
+volk_32fc_s32f_atan2_32f.h
+volk_32fc_s32f_deinterleave_real_16i.h
+volk_32fc_s32f_magnitude_16i.h
+volk_32fc_s32f_power_32fc.h
+volk_32fc_s32f_power_spectrum_32f.h
+volk_32fc_s32f_x2_power_spectral_density_32f.h
+volk_32fc_s32fc_multiply_32fc.h
+volk_32fc_s32fc_rotatorpuppet_32fc.h
+volk_32fc_s32fc_x2_rotator_32fc.h
+volk_32fc_x2_conjugate_dot_prod_32fc.h
+volk_32fc_x2_divide_32fc.h
+volk_32fc_x2_dot_prod_32fc.h
+volk_32fc_x2_multiply_32fc.h
+volk_32fc_x2_multiply_conjugate_32fc.h
+volk_32fc_x2_s32f_square_dist_scalar_mult_32f.h
+volk_32fc_x2_square_dist_32f.h
+volk_32i_s32f_convert_32f.h
+volk_32i_x2_and_32i.h
+volk_32i_x2_or_32i.h
+volk_32u_byteswap.h
+volk_32u_byteswappuppet_32u.h
+volk_32u_popcnt.h
+volk_32u_popcntpuppet_32u.h
+volk_64f_convert_32f.h
+volk_64f_x2_max_64f.h
+volk_64f_x2_min_64f.h
+volk_64u_byteswap.h
+volk_64u_byteswappuppet_64u.h
+volk_64u_popcnt.h
+volk_64u_popcntpuppet_64u.h
+volk_8i_convert_16i.h
+volk_8i_s32f_convert_32f.h
+volk_8ic_deinterleave_16i_x2.h
+volk_8ic_deinterleave_real_16i.h
+volk_8ic_deinterleave_real_8i.h
+volk_8ic_s32f_deinterleave_32f_x2.h
+volk_8ic_s32f_deinterleave_real_32f.h
+volk_8ic_x2_multiply_conjugate_16ic.h
+volk_8ic_x2_s32f_multiply_conjugate_32fc.h
+volk_8u_conv_k7_r2puppet_8u.h
+volk_8u_x2_encodeframepolar_8u.h
+volk_8u_x3_encodepolar_8u_x2.h
+volk_8u_x3_encodepolarpuppet_8u.h
+volk_8u_x4_conv_k7_r2_8u.h
+volk_avx_intrinsics.h
+volk_common.h
+volk_complex.h
+volk_config_fixed.h
+volk_cpu.h
+volk_malloc.h
+volk_neon_intrinsics.h
+volk_prefs.h
+volk_sse3_intrinsics.h
+volk_sse_intrinsics.h
+volk_typedefs.h
+
+
to the top
+

Libraries  1 


+
+libvolk.so.1.3
+
+
to the top
+


+

Test Info


+ + + + + + +
Library Namelibvolk1-dev
Version #11.3-3
Version #21.4-1
Archx86_64
SubjectSource Compatibility
+

Test Results


+ + + + + + +
Total Header Files135
Total Libraries1
Total Symbols / Types660 / 235
Compatibility99.1%
+

Problem Summary


+ + + + + + + + + + +
SeverityCount
Added Symbols-46
Removed SymbolsHigh5
Problems with
Data Types
High0
Medium0
Low1
Problems with
Symbols
High1
Medium0
Low0
Problems with
Constants
Low1
Other Changes
in Constants
-2
+ +

Added Symbols  46 


+volk.h
+volk_32f_64f_add_64f [data]
+volk_32f_64f_add_64f_a [data]
+volk_32f_64f_add_64f_get_func_desc ( )
+volk_32f_64f_add_64f_manual ( double* cVector, float const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_32f_64f_add_64f_u [data]
+volk_32f_64f_multiply_64f [data]
+volk_32f_64f_multiply_64f_a [data]
+volk_32f_64f_multiply_64f_get_func_desc ( )
+volk_32f_64f_multiply_64f_manual ( double* cVector, float const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_32f_64f_multiply_64f_u [data]
+volk_32f_s32f_mod_rangepuppet_32f [data]
+volk_32f_s32f_mod_rangepuppet_32f_a [data]
+volk_32f_s32f_mod_rangepuppet_32f_get_func_desc ( )
+volk_32f_s32f_mod_rangepuppet_32f_manual ( float* output, float const* input, float bound, unsigned int num_points, char const* impl_name )
+volk_32f_s32f_mod_rangepuppet_32f_u [data]
+volk_32f_s32f_s32f_mod_range_32f [data]
+volk_32f_s32f_s32f_mod_range_32f_a [data]
+volk_32f_s32f_s32f_mod_range_32f_get_func_desc ( )
+volk_32f_s32f_s32f_mod_range_32f_manual ( float* outputVector, float const* inputVector, float const lower_bound, float const upper_bound, unsigned int num_points, char const* impl_name )
+volk_32f_s32f_s32f_mod_range_32f_u [data]
+volk_32fc_32f_add_32fc [data]
+volk_32fc_32f_add_32fc_a [data]
+volk_32fc_32f_add_32fc_get_func_desc ( )
+volk_32fc_32f_add_32fc_manual ( lv_32fc_t* cVector, lv_32fc_t const* aVector, float const* bVector, unsigned int num_points, char const* impl_name )
+volk_32fc_32f_add_32fc_u [data]
+volk_32fc_x2_add_32fc [data]
+volk_32fc_x2_add_32fc_a [data]
+volk_32fc_x2_add_32fc_get_func_desc ( )
+volk_32fc_x2_add_32fc_manual ( lv_32fc_t* cVector, lv_32fc_t const* aVector, lv_32fc_t const* bVector, unsigned int num_points, char const* impl_name )
+volk_32fc_x2_add_32fc_u [data]
+volk_32u_reverse_32u [data]
+volk_32u_reverse_32u_a [data]
+volk_32u_reverse_32u_get_func_desc ( )
+volk_32u_reverse_32u_manual ( uint32_t* out, uint32_t const* in, unsigned int num_points, char const* impl_name )
+volk_32u_reverse_32u_u [data]
+volk_64f_x2_add_64f [data]
+volk_64f_x2_add_64f_a [data]
+volk_64f_x2_add_64f_get_func_desc ( )
+volk_64f_x2_add_64f_manual ( double* cVector, double const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_64f_x2_add_64f_u [data]
+volk_64f_x2_multiply_64f [data]
+volk_64f_x2_multiply_64f_a [data]
+volk_64f_x2_multiply_64f_get_func_desc ( )
+volk_64f_x2_multiply_64f_manual ( double* cVector, double const* aVector, double const* bVector, unsigned int num_points, char const* impl_name )
+volk_64f_x2_multiply_64f_u [data]
+
+volk_32u_reverse_32u.h
+ +BitReverseTable256 [data] +
+ + +
+to the top
+

Removed Symbols  5 


+constants.h
+volk_available_machines ( )
+volk_c_compiler ( )
+volk_compiler_flags ( )
+volk_prefix ( )
+volk_version ( )
+
+to the top
+ +

Problems with Symbols, High Severity  1 


+volk.h
+ +[+] volk_32f_8u_polarbutterfly_32f_manual ( float* llrs, unsigned char* u, int const frame_size, int const frame_exp, int const stage, int const u_num, int const row, char const* impl_name )  1  +
+ +
+to the top
+ +

Problems with Data Types, Low Severity  1 


+volk_typedefs.h
+ +[+] typedef p_32f_8u_polarbutterfly_32f  1  +
+ + +
+to the top
+ +

Problems with Constants, Low Severity  1 


+volk_32f_log2_32f.h
+ +[+] LOG_POLY_DEGREE +
+ + +
+to the top
+ +

Other Changes in Constants  2 


+volk_common.h
+ +[+] __VOLK_ASM +
+ + + +[+] __VOLK_VOLATILE +
+ + +
+to the top
+

Header Files  135 


+
+constants.h
+saturation_arithmetic.h
+volk.h
+volk_16i_32fc_dot_prod_32fc.h
+volk_16i_branch_4_state_8.h
+volk_16i_convert_8i.h
+volk_16i_max_star_16i.h
+volk_16i_max_star_horizontal_16i.h
+volk_16i_permute_and_scalar_add.h
+volk_16i_s32f_convert_32f.h
+volk_16i_x4_quad_max_star_16i.h
+volk_16i_x5_add_quad_16i_x4.h
+volk_16ic_convert_32fc.h
+volk_16ic_deinterleave_16i_x2.h
+volk_16ic_deinterleave_real_16i.h
+volk_16ic_deinterleave_real_8i.h
+volk_16ic_magnitude_16i.h
+volk_16ic_s32f_deinterleave_32f_x2.h
+volk_16ic_s32f_deinterleave_real_32f.h
+volk_16ic_s32f_magnitude_32f.h
+volk_16ic_x2_dot_prod_16ic.h
+volk_16ic_x2_multiply_16ic.h
+volk_16u_byteswap.h
+volk_16u_byteswappuppet_16u.h
+volk_32f_8u_polarbutterfly_32f.h
+volk_32f_8u_polarbutterflypuppet_32f.h
+volk_32f_accumulator_s32f.h
+volk_32f_acos_32f.h
+volk_32f_asin_32f.h
+volk_32f_atan_32f.h
+volk_32f_binary_slicer_32i.h
+volk_32f_binary_slicer_8i.h
+volk_32f_convert_64f.h
+volk_32f_cos_32f.h
+volk_32f_expfast_32f.h
+volk_32f_index_max_16u.h
+volk_32f_index_max_32u.h
+volk_32f_invsqrt_32f.h
+volk_32f_log2_32f.h
+volk_32f_null_32f.h
+volk_32f_s32f_32f_fm_detect_32f.h
+volk_32f_s32f_calc_spectral_noise_floor_32f.h
+volk_32f_s32f_convert_16i.h
+volk_32f_s32f_convert_32i.h
+volk_32f_s32f_convert_8i.h
+volk_32f_s32f_multiply_32f.h
+volk_32f_s32f_normalize.h
+volk_32f_s32f_power_32f.h
+volk_32f_s32f_stddev_32f.h
+volk_32f_sin_32f.h
+volk_32f_sqrt_32f.h
+volk_32f_stddev_and_mean_32f_x2.h
+volk_32f_tan_32f.h
+volk_32f_tanh_32f.h
+volk_32f_x2_add_32f.h
+volk_32f_x2_divide_32f.h
+volk_32f_x2_dot_prod_16i.h
+volk_32f_x2_dot_prod_32f.h
+volk_32f_x2_fm_detectpuppet_32f.h
+volk_32f_x2_interleave_32fc.h
+volk_32f_x2_max_32f.h
+volk_32f_x2_min_32f.h
+volk_32f_x2_multiply_32f.h
+volk_32f_x2_pow_32f.h
+volk_32f_x2_s32f_interleave_16ic.h
+volk_32f_x2_subtract_32f.h
+volk_32f_x3_sum_of_poly_32f.h
+volk_32fc_32f_dot_prod_32fc.h
+volk_32fc_32f_multiply_32fc.h
+volk_32fc_conjugate_32fc.h
+volk_32fc_convert_16ic.h
+volk_32fc_deinterleave_32f_x2.h
+volk_32fc_deinterleave_64f_x2.h
+volk_32fc_deinterleave_imag_32f.h
+volk_32fc_deinterleave_real_32f.h
+volk_32fc_deinterleave_real_64f.h
+volk_32fc_index_max_16u.h
+volk_32fc_index_max_32u.h
+volk_32fc_magnitude_32f.h
+volk_32fc_magnitude_squared_32f.h
+volk_32fc_s32f_atan2_32f.h
+volk_32fc_s32f_deinterleave_real_16i.h
+volk_32fc_s32f_magnitude_16i.h
+volk_32fc_s32f_power_32fc.h
+volk_32fc_s32f_power_spectrum_32f.h
+volk_32fc_s32f_x2_power_spectral_density_32f.h
+volk_32fc_s32fc_multiply_32fc.h
+volk_32fc_s32fc_rotatorpuppet_32fc.h
+volk_32fc_s32fc_x2_rotator_32fc.h
+volk_32fc_x2_conjugate_dot_prod_32fc.h
+volk_32fc_x2_divide_32fc.h
+volk_32fc_x2_dot_prod_32fc.h
+volk_32fc_x2_multiply_32fc.h
+volk_32fc_x2_multiply_conjugate_32fc.h
+volk_32fc_x2_s32f_square_dist_scalar_mult_32f.h
+volk_32fc_x2_square_dist_32f.h
+volk_32i_s32f_convert_32f.h
+volk_32i_x2_and_32i.h
+volk_32i_x2_or_32i.h
+volk_32u_byteswap.h
+volk_32u_byteswappuppet_32u.h
+volk_32u_popcnt.h
+volk_32u_popcntpuppet_32u.h
+volk_64f_convert_32f.h
+volk_64f_x2_max_64f.h
+volk_64f_x2_min_64f.h
+volk_64u_byteswap.h
+volk_64u_byteswappuppet_64u.h
+volk_64u_popcnt.h
+volk_64u_popcntpuppet_64u.h
+volk_8i_convert_16i.h
+volk_8i_s32f_convert_32f.h
+volk_8ic_deinterleave_16i_x2.h
+volk_8ic_deinterleave_real_16i.h
+volk_8ic_deinterleave_real_8i.h
+volk_8ic_s32f_deinterleave_32f_x2.h
+volk_8ic_s32f_deinterleave_real_32f.h
+volk_8ic_x2_multiply_conjugate_16ic.h
+volk_8ic_x2_s32f_multiply_conjugate_32fc.h
+volk_8u_conv_k7_r2puppet_8u.h
+volk_8u_x2_encodeframepolar_8u.h
+volk_8u_x3_encodepolar_8u_x2.h
+volk_8u_x3_encodepolarpuppet_8u.h
+volk_8u_x4_conv_k7_r2_8u.h
+volk_avx_intrinsics.h
+volk_common.h
+volk_complex.h
+volk_config_fixed.h
+volk_cpu.h
+volk_malloc.h
+volk_neon_intrinsics.h
+volk_prefs.h
+volk_sse3_intrinsics.h
+volk_sse_intrinsics.h
+volk_typedefs.h
+
+
to the top
+

Libraries  1 


+
+libvolk.so.1.3
+
+
to the top
+



+ +
+ + diff --git a/libvolk1.4.install b/libvolk1.4.install new file mode 100644 index 0000000..e4252f4 --- /dev/null +++ b/libvolk1.4.install @@ -0,0 +1 @@ +usr/lib/*/libvolk.so.* diff --git a/patches/install-all-headers b/patches/install-all-headers new file mode 100644 index 0000000..60e26de --- /dev/null +++ b/patches/install-all-headers @@ -0,0 +1,38 @@ +From 1ccd05806eaba582dbd4aa9547bd0081731e2798 Mon Sep 17 00:00:00 2001 +From: "A. Maitland Bottoms" +Date: Tue, 27 Mar 2018 22:05:29 -0400 +Subject: [PATCH 4/6] install all headers + +(Along with some sorting) +--- + CMakeLists.txt | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -158,17 +158,20 @@ + ) + + install(FILES +- ${CMAKE_SOURCE_DIR}/include/volk/volk_prefs.h +- ${CMAKE_SOURCE_DIR}/include/volk/volk_complex.h +- ${CMAKE_SOURCE_DIR}/include/volk/volk_common.h ++ ${CMAKE_SOURCE_DIR}/include/volk/constants.h ++ ${CMAKE_SOURCE_DIR}/include/volk/saturation_arithmetic.h + ${CMAKE_SOURCE_DIR}/include/volk/volk_avx_intrinsics.h +- ${CMAKE_SOURCE_DIR}/include/volk/volk_sse3_intrinsics.h ++ ${CMAKE_SOURCE_DIR}/include/volk/volk_common.h ++ ${CMAKE_SOURCE_DIR}/include/volk/volk_complex.h ++ ${CMAKE_SOURCE_DIR}/include/volk/volk_malloc.h + ${CMAKE_SOURCE_DIR}/include/volk/volk_neon_intrinsics.h ++ ${CMAKE_SOURCE_DIR}/include/volk/volk_prefs.h ++ ${CMAKE_SOURCE_DIR}/include/volk/volk_sse3_intrinsics.h ++ ${CMAKE_SOURCE_DIR}/include/volk/volk_sse_intrinsics.h + ${CMAKE_BINARY_DIR}/include/volk/volk.h + ${CMAKE_BINARY_DIR}/include/volk/volk_cpu.h + ${CMAKE_BINARY_DIR}/include/volk/volk_config_fixed.h + ${CMAKE_BINARY_DIR}/include/volk/volk_typedefs.h +- ${CMAKE_SOURCE_DIR}/include/volk/volk_malloc.h + DESTINATION include/volk + COMPONENT "volk_devel" + ) diff --git a/patches/libm-link b/patches/libm-link new file mode 100644 index 0000000..b8f6314 --- /dev/null +++ b/patches/libm-link @@ -0,0 +1,20 @@ +--- a/lib/CMakeLists.txt ++++ b/lib/CMakeLists.txt +@@ -542,7 +542,7 @@ + + #Add dynamic library + add_library(volk SHARED $) +- target_link_libraries(volk ${volk_libraries}) ++ target_link_libraries(volk ${volk_libraries} m) + target_include_directories(volk + PUBLIC ${PROJECT_BINARY_DIR}/include + PUBLIC ${PROJECT_SOURCE_DIR}/include +@@ -584,7 +584,7 @@ + else() + #create the volk runtime library + add_library(volk SHARED ${volk_sources}) +- target_link_libraries(volk ${volk_libraries}) ++ target_link_libraries(volk ${volk_libraries} m) + include_directories(volk + PUBLIC ${PROJECT_BINARY_DIR}/include + PUBLIC ${PROJECT_SOURCE_DIR}/include diff --git a/patches/make-acc-happy b/patches/make-acc-happy new file mode 100644 index 0000000..08ebf34 --- /dev/null +++ b/patches/make-acc-happy @@ -0,0 +1,69 @@ +From 799245ea6e9e05cc0ed0fabe783fbbe1a5054fd4 Mon Sep 17 00:00:00 2001 +From: "A. Maitland Bottoms" +Date: Tue, 27 Mar 2018 22:02:59 -0400 +Subject: [PATCH 2/6] make acc happy + +The abi-compliance-checker grabs all the .h files it finds +and tries to compile them all. Even though some are not +appropriate for the architecture being run on. Being careful +with preprocessor protections avoids problems. +--- + include/volk/volk_neon_intrinsics.h | 2 ++ + kernels/volk/volk_32f_8u_polarbutterflypuppet_32f.h | 1 + + kernels/volk/volk_8u_x2_encodeframepolar_8u.h | 3 --- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/include/volk/volk_neon_intrinsics.h b/include/volk/volk_neon_intrinsics.h +index 3f121a8..ef42dea 100644 +--- a/include/volk/volk_neon_intrinsics.h ++++ b/include/volk/volk_neon_intrinsics.h +@@ -27,6 +27,7 @@ + + #ifndef INCLUDE_VOLK_VOLK_NEON_INTRINSICS_H_ + #define INCLUDE_VOLK_VOLK_NEON_INTRINSICS_H_ ++#ifdef LV_HAVE_NEON + #include + + static inline float32x4_t +@@ -119,4 +120,5 @@ _vlog2q_f32(float32x4_t aval) + return log2_approx; + } + ++#endif /*LV_HAVE_NEON*/ + #endif /* INCLUDE_VOLK_VOLK_NEON_INTRINSICS_H_ */ +diff --git a/kernels/volk/volk_32f_8u_polarbutterflypuppet_32f.h b/kernels/volk/volk_32f_8u_polarbutterflypuppet_32f.h +index 49a3076..4f84352 100644 +--- a/kernels/volk/volk_32f_8u_polarbutterflypuppet_32f.h ++++ b/kernels/volk/volk_32f_8u_polarbutterflypuppet_32f.h +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + + static inline void +diff --git a/kernels/volk/volk_8u_x2_encodeframepolar_8u.h b/kernels/volk/volk_8u_x2_encodeframepolar_8u.h +index 6a605c6..ff729a8 100644 +--- a/kernels/volk/volk_8u_x2_encodeframepolar_8u.h ++++ b/kernels/volk/volk_8u_x2_encodeframepolar_8u.h +@@ -58,8 +58,6 @@ encodepolar_single_stage(unsigned char* frame_ptr, const unsigned char* temp_ptr + } + } + +-#ifdef LV_HAVE_GENERIC +- + static inline void + volk_8u_x2_encodeframepolar_8u_generic(unsigned char* frame, unsigned char* temp, + unsigned int frame_size) +@@ -79,7 +77,6 @@ volk_8u_x2_encodeframepolar_8u_generic(unsigned char* frame, unsigned char* temp + --stage; + } + } +-#endif /* LV_HAVE_GENERIC */ + + #ifdef LV_HAVE_SSSE3 + #include +-- +2.11.0 + diff --git a/patches/native-armv7-build-support b/patches/native-armv7-build-support new file mode 100644 index 0000000..860bf41 --- /dev/null +++ b/patches/native-armv7-build-support @@ -0,0 +1,64 @@ +From b554121e765a3495e23975112f269a8083950212 Mon Sep 17 00:00:00 2001 +From: "A. Maitland Bottoms" +Date: Tue, 27 Mar 2018 22:01:33 -0400 +Subject: [PATCH 1/6] native armv7 build support + +Debian, unlike other GNU Radio deployments, does not cross-compile +packages, but builds natively on a set of build machines, including +both arm and armhf. +--- + lib/CMakeLists.txt | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +--- a/lib/CMakeLists.txt ++++ b/lib/CMakeLists.txt +@@ -250,6 +250,13 @@ + endif(NOT CPU_IS_x86) + + ######################################################################## ++# if building Debian armel, eliminate neon ++######################################################################## ++if(${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi") ++ OVERRULE_ARCH(neon "Architecture is not armhf") ++endif(${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi") ++ ++######################################################################## + # implement overruling in the ORC case, + # since ORC always passes flag detection + ######################################################################## +@@ -404,7 +411,7 @@ + # Handle ASM support + # on by default, but let users turn it off + ######################################################################## +-if(${CMAKE_VERSION} VERSION_GREATER "2.8.9") ++if((${CMAKE_VERSION} VERSION_GREATER "2.8.9") AND NOT (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi")) + set(ASM_ARCHS_AVAILABLE "neon") + + set(FULL_C_FLAGS "${CMAKE_C_FLAGS}" "${CMAKE_CXX_COMPILER_ARG1}") +@@ -414,7 +421,7 @@ + # set up the assembler flags and include the source files + foreach(ARCH ${ASM_ARCHS_AVAILABLE}) + string(REGEX MATCH "${ARCH}" ASM_ARCH "${available_archs}") +- if( ASM_ARCH STREQUAL "neon" ) ++ if(( ASM_ARCH STREQUAL "neon" ) OR ( ${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7")) + message(STATUS "---- Adding ASM files") # we always use ATT syntax + message(STATUS "-- Detected neon architecture; enabling ASM") + # setup architecture specific assembler flags +@@ -433,7 +440,7 @@ + message(STATUS "asm flags: ${CMAKE_ASM_FLAGS}") + endforeach(ARCH) + +-else(${CMAKE_VERSION} VERSION_GREATER "2.8.9") ++else((${CMAKE_VERSION} VERSION_GREATER "2.8.9") AND NOT (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi")) + message(STATUS "Not enabling ASM support. CMake >= 2.8.10 required.") + foreach(machine_name ${available_machines}) + string(REGEX MATCH "neon" NEON_MACHINE ${machine_name}) +@@ -441,7 +448,7 @@ + message(FATAL_ERROR "CMake >= 2.8.10 is required for ARM NEON support") + endif() + endforeach() +-endif(${CMAKE_VERSION} VERSION_GREATER "2.8.9") ++endif((${CMAKE_VERSION} VERSION_GREATER "2.8.9") AND NOT (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabi")) + + ######################################################################## + # Handle orc support diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..329797c --- /dev/null +++ b/patches/series @@ -0,0 +1,4 @@ +native-armv7-build-support +make-acc-happy +sort-cmake-glob-lists +libm-link diff --git a/patches/sort-cmake-glob-lists b/patches/sort-cmake-glob-lists new file mode 100644 index 0000000..eeefb5a --- /dev/null +++ b/patches/sort-cmake-glob-lists @@ -0,0 +1,25 @@ +From 9d32c341220aeb5a07011b7ef349f8c606941ee4 Mon Sep 17 00:00:00 2001 +From: "A. Maitland Bottoms" +Date: Tue, 27 Mar 2018 22:04:11 -0400 +Subject: [PATCH 3/6] sort cmake glob lists + +File lists are generated in a CMakeLists.txt file with file(GLOB ...), which varies +with the readdir() order. Sorting the lists should help make reproducible builds. +--- + lib/CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/lib/CMakeLists.txt ++++ b/lib/CMakeLists.txt +@@ -328,8 +328,11 @@ + + #dependencies are all python, xml, and header implementation files + file(GLOB xml_files ${PROJECT_SOURCE_DIR}/gen/*.xml) ++list(SORT xml_files) + file(GLOB py_files ${PROJECT_SOURCE_DIR}/gen/*.py) ++list(SORT py_files) + file(GLOB h_files ${PROJECT_SOURCE_DIR}/kernels/volk/*.h) ++list(SORT h_files) + + macro(gen_template tmpl output) + list(APPEND volk_gen_sources ${output}) diff --git a/patches/sort-input-files b/patches/sort-input-files new file mode 100644 index 0000000..bc06e19 --- /dev/null +++ b/patches/sort-input-files @@ -0,0 +1,39 @@ +From 77da3b36b68482d1d2309a0725da399196682de0 Mon Sep 17 00:00:00 2001 +From: "Bernhard M. Wiedemann" +Date: Mon, 5 Jun 2017 21:37:38 +0200 +Subject: [PATCH 5/6] sort input files + +when building packages (e.g. for openSUSE Linux) +(random) filesystem order of input files +influences ordering of entries in the output, +thus without the patch, builds (in disposable VMs) would usually differ. + +See https://reproducible-builds.org/ for why this matters. +--- + python/volk_modtool/volk_modtool_generate.py | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +--- a/python/volk_modtool/volk_modtool_generate.py ++++ b/python/volk_modtool/volk_modtool_generate.py +@@ -58,10 +58,10 @@ + else: + name = self.get_basename(base) + if name == '': +- hdr_files = glob.glob(os.path.join(base, "kernels/volk/*.h")) ++ hdr_files = sorted(glob.glob(os.path.join(base, "kernels/volk/*.h"))) + begins = re.compile("(?<=volk_).*") + else: +- hdr_files = glob.glob(os.path.join(base, "kernels/volk_" + name + "/*.h")) ++ hdr_files = sorted(glob.glob(os.path.join(base, "kernels/volk_" + name + "/*.h"))) + begins = re.compile("(?<=volk_" + name + "_).*") + + datatypes = [] +@@ -156,7 +156,7 @@ + open(dest, 'w+').write(outstring) + + # copy orc proto-kernels if they exist +- for orcfile in glob.glob(inpath + '/kernels/volk/asm/orc/' + top + name + '*.orc'): ++ for orcfile in sorted(glob.glob(inpath + '/kernels/volk/asm/orc/' + top + name + '*.orc')): + if os.path.isfile(orcfile): + instring = open(orcfile, 'r').read() + outstring = re.sub(oldvolk, 'volk_' + self.my_dict['name'], instring) diff --git a/release-v14.html b/release-v14.html new file mode 100644 index 0000000..9b64527 --- /dev/null +++ b/release-v14.html @@ -0,0 +1,201 @@ + + + + + Vector Optimized Library of Kernels + + + + + + + +
+
+
+ + VOLK logo + +
+ +
+
+
+
+
+ + +
+
+
+

VOLK v1.4

+

A lot of really good changes came to VOLK with v1.4. It wouldn't have been possible without the following contributors:

+

Contributors

+ +

Changes

+

Generally, there are a lot of kernel changes and some minor dependency changes. I'm trying to remove boost as a dependency and we've introduced mako templates rather than the old Cheetah-templates to keep in line with GNU Radio. There are also several new CI files that support appveyor, travis-ci, and gitlab. Right now all pull requests must pass travis-ci.

+

Kernels

+

The easiest way to show these changes is simply with two lists:

+

New kernels

+
    +
  • 32 bit reversal
  • +
  • 32f_s32f_s32f_mod_range_32f
  • +
  • double precision (64f_XXX...)
      +
    • multiply
    • +
    • add
    • +
    +
  • +
  • 32f_64f_multiply_64f
  • +
  • add 32f_64f_add_64f
  • +
  • 32fc_x2_add_32fc
  • +
+

New proto-kernels by architecture

+

AVX(2):

+

Note that in some cases an unaligned version was added where an aligned version already existed

+
    +
  • volk_64f_convert_32f
  • +
  • volk_64f_x2_max_64f
  • +
  • volk_64f_x2_min_64f
  • +
  • volk_32f_x2_add_32f
  • +
  • 32i_x2_and_32i
  • +
  • 32i_x2_or_32i
  • +
  • conjugate dot products
  • +
  • 32f_accumulator_32f
  • +
  • stddev_and_mean
  • +
  • volk_32f_* kernels
  • +
  • 32f_x2_divide_32f
  • +
  • 32f_x2_dot_prod_16i
  • +
  • volk_32f_s32f_normalize
  • +
  • volk_32f_s32f_stddev_32f
  • +
  • volk_32f_sqrt_32f
  • +
  • volk_32f_x2_max_32f
  • +
  • volk_32f_x2_min_32f
  • +
  • 32f_x2_s32f_interleave_16ic
  • +
  • 32f_x2_subtract_32f
  • +
  • 32f_x2_s32f_interleave_16ic
  • +
  • 32f_x2_subtract_32f
  • +
  • 32f_x2_subtract_32f
  • +
  • 32f_x2_s32f_interleave_16ic
  • +
  • volk_8ic_s32f_deinterleave_*
  • +
  • 32f_log2_32f
  • +
  • volk_32f_s32f_convert_8i and 16i
  • +
+

NEON:

+
    +
  • move all neonasm to aligned protokernels
  • +
  • added ARM version of volk_32u_reverse_32u (RBIT)
  • +
  • volk_32fc_x2_divide_32fc
  • +
  • volk_32fc_32f_add_32fc
  • +
  • volk_32f_x2_divide_32f
  • +
  • volk_8i_s32f_convert_32f
  • +
+

Additionally, there are new protokernel intrinsics available for use in writing new kernels.

+

Then, we also had some general kernel and protokernel bug fixes and using proper type-named C functions which happened to increase performance:

+

The polarbutterfly went through some heavy refactoring and bug fixes as well as adding an AVX version. +Fix GH issue #139 for 32fc_index_max_* kernels resulting in a slightly wrong index being returned. +Fix bug 106 (volk_64u_popcnt bug in generic implementation)

+

CI and Builds

+

As previously mentioned there are appveyor, travis-ci, and gitlab CI files available. There is a travis-ci instance checking all pull requests at https://travis-ci.org/gnuradio/volk/ and a gitlab mirror running CI checks at https://gitlab.com/n-west/volk.

+

While working on these CI files the kernel tests were split in to individual ctest targets so that each kernel is its own test rather than running them as a monolithic binary. This allows parallel testing, but mostly enables easier diagnostics when a test fails. The readme is now a markdown file that renders well on GitHub and Gitlab along with the travis-ci status as a badge.

+

Within this release two tools were run that reorganized includes and fixed a bunch of typos within code.

+

As part of the attempt to build VOLK without boost a bunch of app and build utilities were written to replace boost-code. This shouldnt be visible to the user, but will hopefully make future builds easier and smaller with fewer build and run-time dependencies. Builds with python 2.7 and 3 should work-- although six is required for python2.7 support.

+

Some build changes make it easier to do a relocatable build and order all files before building so that building from a particular revision (from now on) should be reproducible across machines building the same architectures. To use a relocatable install use the VOLK_PREFIX environment variable. This should support snaps (Canonical packaging environment).

+

Modtool

+
modtool: update the cmake find module for volk mods
+modtool: deconflict module include guards from main volk
+
+
+
+ +
+
+
+
+ +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/rules b/rules new file mode 100755 index 0000000..d58ca4b --- /dev/null +++ b/rules @@ -0,0 +1,17 @@ +#!/usr/bin/make -f +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +export DEB_HOST_MULTIARCH +DH_VERBOSE=1 +export DH_VERBOSE + +%: + dh $@ --with python2 + +override_dh_auto_configure: + dh_auto_configure -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)" -DPYTHON_EXECUTABLE=/usr/bin/python + +override_dh_auto_test: + - dh_auto_test -- CTEST_TEST_TIMEOUT=60 + +override_dh_acc: + - dh_acc diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/include-binaries b/source/include-binaries new file mode 100644 index 0000000..bc68a00 --- /dev/null +++ b/source/include-binaries @@ -0,0 +1 @@ +debian/libvolk1-dev.abi.tar.gz.amd64 diff --git a/upstream/signing-key.asc b/upstream/signing-key.asc new file mode 100644 index 0000000..f6d7f93 --- /dev/null +++ b/upstream/signing-key.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBFcTzE0BEACWkwa+pAwjBPwUvL8E9adB6sFlH/bw/3Dj2Vr/bXDkNrZDEQzc +C3wmoX3AZo0GSWpjlmlOGOPy6u4wZxEPfilKs+eDNnuIZN3gmLoRTThgbbrnH9bw +kIaUMiUn8VJ0pk5ULaygG6APxl4EOVrMfzgRnxmIbUfggiBLaW/xq2a/BaVrUAuA +oHv1GTGJkwcK0RfYigJMfZl9iHVJVopffexBt1hOeGYxiyLXSDWjOhLLVzhlfgTE +T9YdLGyjoXFmImsCvkAA2MA52e5YGUQIBrqmiXdHFit7sve0e5Dw0aLyuTnMR0MO +a2eIHWU6TYYv5GTJPzjBbWM1pRCgtupNilg2+RfN0tOTp27RQnUtgcCo26uBU+jV +pyvnidpDGnuUBL3WNLZlUiqmiZs8Hc9BGNw3rKB37sUOMXz6XessnhRspXC1Mot4 +V3I1NoKwb0wjgqlkAYIGCCSuySosC5HH2OssopBUH6U5QXjFp11QbP2e+QkvKPKA +S9V4ouSMrIDZ4krtu6QFDYsHa0zZ54yRl3O4UpfISlz3yngO2eKM019C5n51kd62 +Ia00rtx8ypvUxMy67PTEFdCKLJ6Ua/hEGcpxGygFMRa0pjHSrC6e9LvPudK92jsq +qO0TjhUytig5k9YPoEa2JGn/kqP+K1HGAdJPay/HmcNTZWh0hoamhuJ6NwARAQAB +tCZOYXRoYW4gV2VzdCA8bmF0aGFuLndlc3RAZ251cmFkaW8ub3JnPokCPgQTAQIA +KAUCVxPMTQIbAwUJA8JnAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQOFMj +7mQCCR20CA//VJfDu8W8BI/44JkucC+XBVqwOcfg/rcSHflgi0mNNz7hyJ+idwcB +JVFSbhSpXucl6baJ0nDe8gcMuGFLyF4uLwCByX3ExDAnFL3Mu/jIyOUX8TGudZU7 +wTEhzOLPxmXfbo8lw3TETC1Xsl8g1gU/KBJnTl3WbdGZUlKW6fP0TR5BMdYskNHm +CCqAvXWniZwjSX/jlpWremfTU9i9DUad8ufcdJue7uiZRNq4JLaWmSbtGNzDzJIq +6csHc3GFcd0Q/LDEDcm1AG081yLEmRnbTstZo+xW27yaRyoe1Dpm9ehsl19dVaO7 +9ek2CEarqHjtRfO1MJMSBGiaS1lvujukYKZQRGNDKemDJwuQCVkxBMEef7SNX8XG +2OPTARVp0hlrhMVFUk3hScekrKobq81YyCfWxBxxjRWySdInFhuT29cxxRLUxb69 +3MKLzFJRlq+oEbWJN8QGqILQ785TZA8MdnMsGywPk43x9spgYbwPhtJYb/Aes9B9 +NFkZ6EzVtzV7ztITuGhefRxt3eEmdFYNDHooWNFQdifcUgLoBgKOkP+oHOc+9mx7 +6CDN9ZJTHb87W3ISw7SLI4YcMPYipEN5g51ceInDc3kXFYQ+EqU691kOuGNtx3ov +qqvPm9PBR00GSwhLQt7s127MFpYx9+in87+UMBFXyo/VstVBPQW2GLq5Ag0EVxPM +TQEQAK+fh+ckP728ZVRn5mr8PtsG3gktyS6LlH7EjMsHnvQR16EVAjn5G915OQUY +Bk6yk9l0VRX0NLautc41NwVlHI4FYBBjz6mEnDocvo+BT0g5KYTyjJPOxmEzgVZW +3Zp/jPjK5Z9YZTCIalrk2iHVQCe8fFCnaXNGNQoku1jBPRUOOTI979LWPx4d7MI0 +7Yy+8xp5ogCrcTxea9VrMeXqnXzvy2peiceZDlvNmcEUCz222i6t2k9rUwY0+ozg +TbsorE42h4B+a49ylY4zOX9fTPfsUj59/z/ilrxZy2qP2lBIFC+wFphKF3Qkilxd +dnVGTsb9oKCQjuMcvh7MR27RVGLjW1pVMWGMmXBkIDu0U88Hn91XKfm1ZmWgksoU +MC7BZocvUxIKnV+WiKy9ooP/HSzgP7ggdG+16B3yDdicB0DiBFEKZEmIWCBt5NXR +q853WwFSH7xcrEOTXnqtkRUX4+obdwQhtqTueSC4xqX0+YVixZUC6ewqueFmPn+l +WItCV7XU67NXTJNRC3i4kIF+hpT5YWtx56NuNcvhN25bZr1frTChOuXcCBNrOU+b +yo2wpXAcfq+YmnaP0ZFFh7wKRi4leEPL/+JyitQbvSQU4Lejwanzvv7Ug1j4qZo1 +A6WSxXYUWJY5rhh8nWYtJJOn5Wj4Y3gWa1taUpYw1g2lf0o5ABEBAAGJAiUEGAEC +AA8FAlcTzE0CGwwFCQPCZwAACgkQOFMj7mQCCR2uXRAAiBsOfqp+QuQqO3OPW8OZ +I2+JNbaaFEC1TorUhGs5XiT4wKyn1wDni4mavO4kJ8nK4Zc1qBYWeMOClj6JySJL +yf0aVTjLyn+4Q4jt/9Dmn15wbOWZvdSICipfcLWmPLYniizsJWA4Mqoefcztmyxk +FrJZ+Vri6MH5PxVuZjHhOUVfXIsqRhqqrpRjVnjzGvNxLgP3aLHfQPim/jbxaeRK +oVtDNDLA+1nwdpZ8Hehe5OVfUKWuz1DXrdM0eY7pTRcms8+7y//AXpRqygH7TLx5 +mXavdmAzgYcamQGfu/K4Mq9Bkgr1BNasgkxnPu+J0Z4jO9HsRBCJWf2BLKXmYedD +5t0LR8bJHUTV7lsIifo0Ev47qsk1QX41KSKPAMwSzmtTLA0wzPJrkUEeVgm075N7 +btLneqw5EyDcz3pJ7aD3HceWh+HZOREnfYXyMLxWTND7SKx0k6nmM8xasYHP0/6y +mR8picMjbPlyoETe6B6yKi5rDjOrDwrKqBjulcUHsRhjAAUUI6IHgj4v5gCfTPS7 +WrV98icGSHYnuxV40NT8Nt0lWNrPJhIUm1nu3UkEInznxMii1h6ga6REE/TJsStD +C46x7fsiH4HkK1FJ+owoLhsVQo0OE4nWh8lWIBhTpR4wxThwfVHKt/H12st3tHuI +CLIM6szb01rYgHTn9/vDgJE= +=MlbD +-----END PGP PUBLIC KEY BLOCK----- diff --git a/volk-config-info.1 b/volk-config-info.1 new file mode 100644 index 0000000..e8d6efd --- /dev/null +++ b/volk-config-info.1 @@ -0,0 +1,45 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.10. +.TH VOLK-CONFIG-INFO "1" "July 2014" "volk-config-info 0.1" "User Commands" +.SH NAME +volk-config-info \- pkgconfig-like tool for Vector Optimized Library of Kernels 0.1 +.SH DESCRIPTION +.SS "Program options: volk-config-info [options]:" +.TP +\fB\-h\fR [ \fB\-\-help\fR ] +print help message +.TP +\fB\-\-prefix\fR +print VOLK installation prefix +.TP +\fB\-\-builddate\fR +print VOLK build date (RFC2822 format) +.TP +\fB\-\-cc\fR +print VOLK C compiler version +.TP +\fB\-\-cflags\fR +print VOLK CFLAGS +.TP +\fB\-\-all\-machines\fR +print VOLK machines built into library +.TP +\fB\-\-avail\-machines\fR +print VOLK machines the current platform can use +.TP +\fB\-\-machine\fR +print the VOLK machine that will be used +.TP +\fB\-v\fR [ \fB\-\-version\fR ] +print VOLK version +.SH "SEE ALSO" +The full documentation for +.B volk-config-info +is maintained as a Texinfo manual. If the +.B info +and +.B volk-config-info +programs are properly installed at your site, the command +.IP +.B info volk-config-info +.PP +should give you access to the complete manual. diff --git a/volk_modtool.1 b/volk_modtool.1 new file mode 100644 index 0000000..752e7f5 --- /dev/null +++ b/volk_modtool.1 @@ -0,0 +1,112 @@ +.TH GNURADIO "1" "August 2013" "volk_modtool 3.7" "User Commands" +.SH NAME +volk_modtool \- tailor VOLK modules +.SH DESCRIPTION +The volk_modtool tool is installed along with VOLK as a way of helping +to construct, add to, and interogate the VOLK library or companion +libraries. +.P +volk_modtool is installed into $prefix/bin. +.P +VOLK modtool enables creating standalone (out-of-tree) VOLK modules +and provides a few tools for sharing VOLK kernels between VOLK +modules. If you need to design or work with VOLK kernels away from +the canonical VOLK library, this is the tool. If you need to tailor +your own VOLK library for whatever reason, this is the tool. +.P +The canonical VOLK library installs a volk.h and a libvolk.so. Your +own library will install volk_$name.h and libvolk_$name.so. Ya Gronk? +Good. +.P +There isn't a substantial difference between the canonical VOLK +module and any other VOLK module. They're all peers. Any module +created via VOLK modtool will come complete with a default +volk_modtool.cfg file associating the module with the base from which +it came, its distinctive $name and its destination (or path). These +values (created from user input if VOLK modtool runs without a +user-supplied config file or a default config file) serve as default +values for some VOLK modtool actions. It's more or less intended for +the user to change directories to the top level of a created VOLK +module and then run volk_modtool to take advantage of the values +stored in the default volk_modtool.cfg file. +.P +Apart from creating new VOLK modules, VOLK modtool allows you to list +the names of kernels in other modules, list the names of kernels in +the current module, add kernels from another module into the current +module, and remove kernels from the current module. When moving +kernels between modules, VOLK modtool does its best to keep the qa +and profiling code for those kernels intact. If the base has a test +or a profiling call for some kernel, those calls will follow the +kernel when VOLK modtool adds that kernel. If QA or profiling +requires a puppet kernel, the puppet kernel will follow the original +kernel when VOLK modtool adds that original kernel. VOLK modtool +respects puppets. +.P +====================================================================== +.P +.SH Installing a new VOLK Library: +.P +Run the command "volk_modtool -i". This will ask you three questions: +.P + name: // the name to give your VOLK library: volk_ + destination: // directory new source tree is built under -- must exists. + // It will create /volk_ + base: // the directory containing the original VOLK source code +.P +This will build a new skeleton directory in the destination provided +with the name volk_. It will contain the necessary structure to +build: +.P + mkdir build + cd build + cmake -DCMAKE_INSTALL_PREFIX=/opt/volk ../ + make + sudo make install +.P +Right now, the library is empty and contains no kernels. Kernels can +be added from another VOLK library using the '-a' option. If not +specified, the kernel will be extracted from the base VOLK +directory. Using the '-b' allows us to specify another VOLK library to +use for this purpose. +.P + volk_modtool -a -n 32fc_x2_conjugate_dot_prod_32fc +.P +This will put the code for the new kernel into +/volk_/kernels/volk_/ +.P +Other kernels must be added by hand. See the following webpages for +more information about creating VOLK kernels: + http://gnuradio.org/doc/doxygen/volk_guide.html + http://gnuradio.org/redmine/projects/gnuradio/wiki/Volk +.P +====================================================================== +.P +.SH OPTIONS +.P +Options for Adding and Removing Kernels: + -a, --add_kernel + Add kernel from existing VOLK module. Uses the base VOLK module + unless -b is used. Use -n to specify the kernel name. + Requires: -n. + Optional: -b +.P + -A, --add_all_kernels + Add all kernels from existing VOLK module. Uses the base VOLK + module unless -b is used. + Optional: -b +.P + -x, --remove_kernel + Remove kernel from module. + Required: -n. + Optional: -b +.P +Options for Listing Kernels: + -l, --list + Lists all kernels available in the base VOLK module. +.P + -k, --kernels + Lists all kernels in this VOLK module. +.P + -r, --remote-list + Lists all kernels in another VOLK module that is specified + using the -b option. diff --git a/volk_profile.1 b/volk_profile.1 new file mode 100644 index 0000000..405facb --- /dev/null +++ b/volk_profile.1 @@ -0,0 +1,5 @@ +.TH UHD_FFT "1" "March 2012" "volk_profile 3.5" "User Commands" +.SH NAME +volk_profile \- Quality Assurance application for libvolk functions +.SH DESCRIPTION +Writes profile results to a file. diff --git a/watch b/watch new file mode 100644 index 0000000..d755268 --- /dev/null +++ b/watch @@ -0,0 +1,3 @@ +version=3 +opts="pgpsigurlmangle=s/$/.asc/" \ + http://libvolk.org/releases/volk-(\d\S*)\.tar\.gz -- 2.30.2

x<~9nM!E3mR0L}lfkm8ICp3jGt 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 LyGbzffZ+cD^?twK literal 0 HcmV?d00001 diff --git a/libvolk1-dev.acc b/libvolk1-dev.acc new file mode 100644 index 0000000..c8503c6 --- /dev/null +++ b/libvolk1-dev.acc @@ -0,0 +1,12 @@ + + + + +debian/libvolk1-dev/usr/include/ + + + +debian/libvolk1.4/usr/lib/ + + + diff --git a/libvolk1-dev.install b/libvolk1-dev.install new file mode 100644 index 0000000..4b391be --- /dev/null +++ b/libvolk1-dev.install @@ -0,0 +1,4 @@ +usr/include/* +usr/lib/*/*volk*so +usr/lib/*/cmake/volk +usr/lib/*/pkgconfig/*volk* diff --git a/libvolk1-dev_1.4-1_report.html b/libvolk1-dev_1.4-1_report.html new file mode 100644 index 0000000..f9614d6 --- /dev/null +++ b/libvolk1-dev_1.4-1_report.html @@ -0,0 +1,1069 @@ + + + + + + + + +libvolk1-dev: 1.3-3 to 1.4-1 compatibility report + + + +