volk (3.1.0-3) unstable; urgency=medium
authorA. Maitland Bottoms <bottoms@debian.org>
Sat, 16 Dec 2023 14:31:28 +0000 (09:31 -0500)
committerA. Maitland Bottoms <bottoms@debian.org>
Sat, 16 Dec 2023 14:31:28 +0000 (09:31 -0500)
  * add powerpc to cpu-features dependency

[dgit import unpatched volk 3.1.0-3]

29 files changed:
1  2 
debian/changelog
debian/control
debian/copyright
debian/libvolk-bin.install
debian/libvolk-bin.manpages
debian/libvolk-dev.install
debian/libvolk-doc.doc-base
debian/libvolk-doc.docs
debian/libvolk3.1.install
debian/not-not-installed
debian/patches/0001-Allow-for-rounding-error-in-float-to-int-conversions.patch
debian/patches/0002-Allow-for-rounding-error-in-volk_32fc_s32f_magnitude.patch
debian/patches/0003-Remove-broken-sse_32-kernels.patch
debian/patches/0004-Fix-flaky-fm_detect-test.patch
debian/patches/0005-Fix-flaky-mod_range-test.patch
debian/patches/0006-Allow-for-rounding-error-in-float-to-int-interleave.patch
debian/patches/0007-Express-version-information-in-decimal.patch
debian/patches/doxygen-pdf
debian/patches/omit-doxygen-build-paths
debian/patches/optional-static-apps
debian/patches/series
debian/patches/update-doxygen
debian/rules
debian/source/format
debian/upstream/metadata
debian/volk-config-info.1
debian/volk_modtool.1
debian/volk_profile.1
debian/watch

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c32224457769325da354c34f23ea7f39eab3f2a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,615 @@@
++volk (3.1.0-3) unstable; urgency=medium
++
++  * add powerpc to cpu-features dependency
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sat, 16 Dec 2023 09:31:28 -0500
++
++volk (3.1.0-2) unstable; urgency=medium
++
++  * Avoid ORC on x32, led to test failures
++  * include argilo-volk/all-i386-patches
++  * update available cpu-features architecture list
++  * Express version information in decimal
++  * add debian/upstream/metadata
++  * clean __pycahe__ (Closes: #1048046)
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Fri, 15 Dec 2023 17:57:14 -0500
++
++volk (3.1.0-1) experimental; urgency=medium
++
++  * New upstream release
++    Improved CMake build
++    Better tests
++    New kernel API (old API still available)
++    New and Updated kernels
++  * Upload to experimental for soversion bump
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Tue, 05 Dec 2023 18:12:20 -0500
++
++volk (3.0.0-2) unstable; urgency=medium
++
++  * upload to unstable
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sat, 15 Jul 2023 21:58:53 -0400
++
++volk (3.0.0-1) experimental; urgency=medium
++
++  * New upstream release
++     - License switch to LGPLv3+
++     - Fix build for 32 bit arm with neon
++     - Add experimental support for MIPS and RISC-V
++  * Upload to experimental for package renames and soversion bump
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sat, 14 Jan 2023 14:01:06 -0500
++
++volk (2.5.2-3) unstable; urgency=medium
++
++  * orc 1:0.4.33-1 dropped building static library,
++  so now volk will drop building its static library too. (Closes: #1026593)
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Tue, 20 Dec 2022 20:03:23 -0500
++
++volk (2.5.2-2) unstable; urgency=medium
++
++  * revert changes to kernels/volk/volk_8u_x2_encodeframepolar_8u.h
++    made by make-acc-happy patch since version 1.3-1 (Closes: #1021856)
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sat, 15 Oct 2022 23:41:48 -0400
++
++volk (2.5.2-1) unstable; urgency=medium
++
++  * New upstream release.
++  * volk_8u_x4_conv_k7_r2_8u
++    - Add NEON implementation `neonspiral` via `sse2neon.h`
++  * Fixes
++    - Fix out-of-bounds reads
++    - Fix broken neon kernels
++    - Fix float to int conversion
++  * CMake
++    - Suppress superfluous warning
++    - Fix Python install path calculation and documentation
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 04 Sep 2022 12:00:56 -0400
++
++volk (2.5.1-2) unstable; urgency=medium
++
++  * VolkPython use posix prefix scheme (Closes: #1009394)
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Tue, 12 Apr 2022 18:39:33 -0400
++
++volk (2.5.1-1) unstable; urgency=medium
++
++  * New upstream release.
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 13 Feb 2022 00:18:58 -0500
++
++volk (2.5.0-2) unstable; urgency=medium
++
++  * upload to unstable
++  * with some upstream bugfixes
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Thu, 21 Oct 2021 23:30:05 -0400
++
++volk (2.5.0-1) experimental; urgency=medium
++
++  * New upstream release
++  * Use libcpu-features-dev on powerpc and x32 (Closes: #978602)
++  * Mention volk-config-info and volk_modtool in description (Closes: #989263)
++  * Upload to experimental for soversion bump
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Thu, 10 Jun 2021 18:29:47 -0400
++
++volk (2.4.1-2) unstable; urgency=medium
++
++  [ Shengjing Zhu ]
++  * Use system cpu_features package
++
++  [ A. Maitland Bottoms ]
++  * Adopt Use system cpu_features package patch (Closes: #978096)
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 27 Dec 2020 15:16:07 -0500
++
++volk (2.4.1-1) unstable; urgency=medium
++
++  * New upstream release
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Thu, 17 Dec 2020 23:53:21 -0500
++
++volk (2.4.0-4) unstable; urgency=medium
++
++  * skip cpu_features on "Unsupported OS" kFreeBSD
++  * bump Standards-Version - no other changes.
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Tue, 15 Dec 2020 19:53:16 -0500
++
++volk (2.4.0-3) unstable; urgency=medium
++
++  * Fix binary-indep build (Closes: #976300)
++  * Upload to unstable
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Thu, 03 Dec 2020 20:43:29 -0500
++
++volk (2.4.0-2) experimental; urgency=medium
++
++  * Make use of cpu_features a CMake option with sensible defaults per arch
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Mon, 30 Nov 2020 16:19:19 -0500
++
++volk (2.4.0-1) experimental; urgency=medium
++
++  * New upstream release
++  * cpu_features git submodule packaged as cpu-features source component.
++  * Upload to experimental for soversion bump
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 22 Nov 2020 12:35:43 -0500
++
++volk (2.3.0-3) unstable; urgency=medium
++
++  * update to v2.3.0-14-g91e5d07
++    emit an emms instruction after using the mmx extension
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Tue, 30 Jun 2020 19:48:20 -0400
++
++volk (2.3.0-2) unstable; urgency=medium
++
++  * Upload to unstable
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Mon, 11 May 2020 07:26:03 -0400
++
++volk (2.3.0-1) experimental; urgency=medium
++
++  * New upstream release, to experimental for soversion bump
++  * Kernels
++    - volk: accurate exp kernel
++        - exp: Rename SSE4.1 to SSE2 kernel
++    - Add 32f_s32f_add_32f kernel
++        - This kernel adds in vector + scalar functionality
++    - Fix the broken index max kernels
++    - Treat the mod_range puppet as such
++    - Add puppet for power spectral density kernel
++    - Updated log10 calcs to use faster log2 approach
++    - fix: Use unaligned load
++    - divide: Optimize complexmultiplyconjugate
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sat, 09 May 2020 15:42:23 -0400
++
++volk (2.2.1-3) unstable; urgency=medium
++
++  * update to v2.2.1-34-gd4756c5
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 05 Apr 2020 10:37:46 -0400
++
++volk (2.2.1-2) unstable; urgency=medium
++
++  * update to v2.2.1-11-gfaf230e
++  * cmake: Remove the ORC from the VOLK public link interface
++  * Fix the broken index max kernels
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Fri, 27 Mar 2020 21:48:10 -0400
++
++volk (2.2.1-1) unstable; urgency=high
++
++  * New upstream bugfix release
++    reason for high urgency:
++    - Fix loop bound in AVX rotator (only one fixed in 2.2.0-3)
++    - Fix out-of-bounds read in AVX2 square dist kernel
++    - Fix length checks in AVX2 index max kernels
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Mon, 24 Feb 2020 18:08:05 -0500
++
++volk (2.2.0-3) unstable; urgency=high
++
++  * Update to v2.2.0-6-g5701f8f
++    reason for high urgency:
++    - Fix loop bound in AVX rotator
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 23 Feb 2020 23:49:18 -0500
++
++volk (2.2.0-2) unstable; urgency=medium
++
++  * Upload to unstable
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Tue, 18 Feb 2020 17:56:58 -0500
++
++volk (2.2.0-1) experimental; urgency=medium
++
++  * New upstream release
++    - Remove build dependency on python six
++    - Fixup VolkConfigVersion
++    - add volk_version.h
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 16 Feb 2020 18:25:20 -0500
++
++volk (2.1.0-2) unstable; urgency=medium
++
++  * Upload to unstable
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 05 Jan 2020 23:17:57 -0500
++
++volk (2.1.0-1) experimental; urgency=medium
++
++  * New upstream release
++    - The AVX FMA rotator bug is fixed
++    - VOLK offers `volk::vector<>` for C++ to follow RAII
++    - Use C++17 `std::filesystem`
++        - This enables VOLK to be built without Boost if available!
++    - lots of bugfixes
++    - more optimized kernels, especially more NEON versions
++  * Upload to experimental for new ABI library package libvolk2.1
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 22 Dec 2019 10:27:36 -0500
++
++volk (2.0.0-3) unstable; urgency=medium
++
++  * update to v2.0.0-4-gf04a46f
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Thu, 14 Nov 2019 22:47:23 -0500
++
++volk (2.0.0-2) unstable; urgency=medium
++
++  * Upload to unstable
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Mon, 12 Aug 2019 22:49:11 -0400
++
++volk (2.0.0-1) experimental; urgency=medium
++
++  * New upstream release
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Wed, 07 Aug 2019 23:31:20 -0400
++
++volk (1.4-4) unstable; urgency=medium
++
++  * working volk_modtool with Python 3
++  * build and install libvolk.a
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Mon, 29 Oct 2018 01:32:05 -0400
++
++volk (1.4-3) unstable; urgency=medium
++
++  * update to v1.4-9-g297fefd
++    Added an AVX protokernel for volk_32fc_x2_32f_square_dist_scalar_mult_32f
++    fixed a buffer over-read and over-write in
++     volk_32fc_x2_s32f_square_dist_scalar_mult_32f_a_avx
++    Fix 32u_reverse_32u for ARM
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sat, 12 May 2018 15:25:04 -0400
++
++volk (1.4-2) unstable; urgency=medium
++
++  * Upload to unstable, needed by gnuradio (>= 3.7.12.0)
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  Sun, 19 Jun 2016 14:44:15 -0400
++
++volk (1.2.2-1) unstable; urgency=medium
++
++  * New upstream release
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  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 <bottoms@debian.org>  Wed, 23 Mar 2016 17:47:54 -0400
++
++volk (1.2.1-1) unstable; urgency=medium
++
++  * New upstream release
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Sun, 07 Feb 2016 19:38:32 -0500
++
++volk (1.2-1) unstable; urgency=medium
++
++  * New upstream release
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  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 <bottoms@debian.org>  Fri, 11 Dec 2015 13:12:55 -0500
++
++volk (1.1.1-4) unstable; urgency=medium
++
++  * more lintian fixes
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  Wed, 25 Nov 2015 21:49:58 -0500
++
++volk (1.1.1-3) unstable; urgency=medium
++
++  * Lintian fixes Pre-Depends
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  Sun, 01 Nov 2015 18:45:43 -0500
++
++volk (1.1-4) unstable; urgency=medium
++
++  * update to v1.1-12-g264addc
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  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 <bottoms@debian.org>  Fri, 11 Sep 2015 22:57:06 -0400
++
++volk (1.1-2) unstable; urgency=low
++
++  * use dh-acc
++
++ -- A. Maitland Bottoms <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  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 <bottoms@debian.org>  Sun, 12 Apr 2015 23:20:41 -0400
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a104ede8ecac9e385342f0d665748f2707d41236
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,83 @@@
++Source: volk
++Section: libdevel
++Priority: optional
++Maintainer: A. Maitland Bottoms <bottoms@debian.org>
++Build-Depends: cmake,
++               debhelper-compat (= 13),
++               dh-python,
++               libcpu-features-dev [amd64 arm64 armel armhf i386 mips64el ppc64 ppc64el riscv64 s390x powerpc x32],
++               liborc-0.4-dev [!x32],
++               python3-dev,
++               python3-mako
++Build-Depends-Indep: doxygen, graphviz
++Standards-Version: 4.6.2
++Rules-Requires-Root: no
++Homepage: https://libvolk.org
++Vcs-Browser: https://salsa.debian.org/bottoms/pkg-volk
++Vcs-Git: https://salsa.debian.org/bottoms/pkg-volk.git
++
++Package: libvolk3.1
++Section: libs
++Architecture: any
++Pre-Depends: ${misc:Pre-Depends}
++Depends: ${misc:Depends}, ${shlibs:Depends}
++Multi-Arch: same
++Recommends: libvolk-bin
++Suggests: libvolk-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: libvolk-dev
++Architecture: any
++Pre-Depends: ${misc:Pre-Depends}
++Depends: libvolk3.1 (=${binary:Version}), ${misc:Depends}
++Breaks: libvolk1-dev, libvolk1.0-dev, libvolk2-dev
++Replaces: libvolk1-dev, libvolk1.0-dev, libvolk2-dev
++Suggests: libvolk-doc
++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: libvolk-bin
++Section: libs
++Architecture: any
++Pre-Depends: ${misc:Pre-Depends}
++Depends: libvolk3.1 (=${binary:Version}),
++         ${misc:Depends},
++         ${python3:Depends},
++         ${shlibs:Depends}
++Breaks: libvolk1-bin, libvolk1.0-bin, libvolk2-bin
++Replaces: libvolk1-bin, libvolk1.0-bin, libvolk2-bin
++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 to customize settings for
++ the system; volk_modtool to create new optimized modules; and
++ volk-config-info to show settings.
++
++Package: libvolk-doc
++Section: doc
++Architecture: all
++Multi-Arch: foreign
++Depends: ${misc:Depends}
++Recommends: www-browser
++Description: vector optimized library documentation
++ 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 Doxygen generated documentation in
++ /usr/share/doc/libvolk-dev/html/index.html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..440c5dc24ef9c10be1eae1022cba941f806a0b2c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,152 @@@
++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 <bottoms@debian.org>
++ .
++ Upstream Maintainers:
++  Johannes Demel <demel@uni-bremen.de>
++  Michael Dickens <michael.dickens@ettus.com>
++Copyright: 2014-2023 Free Software Foundation, Inc.
++License: LGPL-3+
++
++Files: *
++Copyright: 2006, 2009-2023, Free Software Foundation, Inc.
++License: LGPL-3+
++
++Files: apps/volk_profile.h
++Copyright: 2014-2020 Free Software Foundation, Inc.
++License: LGPL-3+
++
++Files: appveyor.yml
++Copyright: 2016 Paul Cercueil <paul.cercueil@analog.com>
++License: LGPL-3+
++
++Files: cmake/*
++Copyright: 2014-2020 Free Software Foundation, Inc.
++License: LGPL-3+
++
++Files: cmake/Modules/*
++Copyright: 2006, 2009-2020, Free Software Foundation, Inc.
++License: LGPL-3+
++
++Files: cmake/Modules/CMakeParseArgumentsCopy.cmake
++Copyright: 2010 Alexander Neundorf <neundorf@kde.org>
++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: LGPL-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: debian/*
++Copyright: 2015-2020 Free Software Foundation, Inc
++License: LGPL-3+
++Comment: assigned by A. Maitland Bottoms <bottoms@debian.org>
++
++Files: docs/*
++Copyright: 2014-2015 Free Software Foundation, Inc.
++License: LGPL-3+
++
++Files: gen/archs.xml
++  gen/machines.xml
++Copyright: 2014-2015 Free Software Foundation, Inc.
++License: LGPL-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: LGPL-3+
++
++Files: kernels/volk/asm/*
++Copyright: 2014-2015 Free Software Foundation, Inc.
++License: LGPL-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: LGPL-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: LGPL-3+
++
++License: LGPL-3+
++ This program is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser 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 Lesser General Public License
++ along with this program.  If not, see <http://www.gnu.org/licenses/>.
++ .
++ On Debian systems, the complete text of the GNU Lesser General
++ Public License version 3 can be found in "/usr/share/common-licenses/LGPL-3".
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2f34922ae7edbd440dc4c308ea6f55162bbb4e1a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/bin/volk*
++usr/lib/python3*/site-packages/* usr/lib/python3/dist-packages/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..95bae9ed64bf63074c84a8443157200593ecd7b9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++debian/volk-config-info.1
++debian/volk_modtool.1
++debian/volk_profile.1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4b391be67c9926a96be9efc4c368128bdce73c0b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++usr/include/*
++usr/lib/*/*volk*so
++usr/lib/*/cmake/volk
++usr/lib/*/pkgconfig/*volk*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1174c6428fd7790414f2e3d751565ef6eb50332b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++Document: libvolk-doc
++Title: Vector-Optimized Library of Kernels Reference Manual
++Author: GNU Radio Developers
++Abstract: 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.
++Section: Programming/C++
++
++Format: HTML
++Index: /usr/share/doc/libvolk-dev/html/index.html
++Files: /usr/share/doc/libvolk-dev/html/*.html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..87dd3148770f0c11566575da299d83a2108ae45f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++obj-*/html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e4252f46b63bd3c4b8896a2294216d7023ea526b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/lib/*/libvolk.so.*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6f354d05baed1d29759dd695194ca31a8ec6418d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++usr/bin/list_cpu_features
++usr/lib/*/cmake/CpuFeatures/CpuFeaturesConfig.cmake
++usr/lib/*/cmake/CpuFeatures/CpuFeaturesConfigVersion.cmake
++usr/lib/*/cmake/CpuFeatures/CpuFeaturesTargets-relwithdebinfo.cmake
++usr/lib/*/cmake/CpuFeatures/CpuFeaturesTargets.cmake
++usr/lib/*/libcpu_features.a
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ce259bc80a6369f76f415653e7a378352d86d1cd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++From f9aed341bcf68cf68248e82c6ea883d937a9ab7e Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Fri, 8 Dec 2023 12:25:56 -0500
++Subject: [PATCH 1/6] Allow for rounding error in float-to-int conversions
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ lib/kernel_tests.h | 6 +++---
++ 1 file changed, 3 insertions(+), 3 deletions(-)
++
++diff --git a/lib/kernel_tests.h b/lib/kernel_tests.h
++index 5ef3324..0f59de1 100644
++--- a/lib/kernel_tests.h
+++++ b/lib/kernel_tests.h
++@@ -121,10 +121,10 @@ std::vector<volk_test_case_t> init_test_list(volk_test_params_t test_params)
++     QA(VOLK_INIT_TEST(volk_32fc_x2_multiply_conjugate_32fc, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_x2_divide_32fc, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_conjugate_32fc, test_params))
++-    QA(VOLK_INIT_TEST(volk_32f_s32f_convert_16i, test_params))
++-    QA(VOLK_INIT_TEST(volk_32f_s32f_convert_32i, test_params))
+++    QA(VOLK_INIT_TEST(volk_32f_s32f_convert_16i, test_params.make_tol(1)))
+++    QA(VOLK_INIT_TEST(volk_32f_s32f_convert_32i, test_params.make_tol(1)))
++     QA(VOLK_INIT_TEST(volk_32f_convert_64f, test_params))
++-    QA(VOLK_INIT_TEST(volk_32f_s32f_convert_8i, test_params))
+++    QA(VOLK_INIT_TEST(volk_32f_s32f_convert_8i, test_params.make_tol(1)))
++     QA(VOLK_INIT_TEST(volk_32fc_convert_16ic, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_s32f_power_spectrum_32f, test_params.make_tol(2e-6)))
++     QA(VOLK_INIT_TEST(volk_32fc_x2_square_dist_32f, test_params))
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7022a2eb257309224fc5279426b4dee6a6a95dea
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++From 1828eae1d2e4a758acf5131e004dc0cccec04c1e Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Fri, 8 Dec 2023 14:02:12 -0500
++Subject: [PATCH 2/6] Allow for rounding error in volk_32fc_s32f_magnitude_16i
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ lib/kernel_tests.h | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/lib/kernel_tests.h b/lib/kernel_tests.h
++index 5ef3324..d5f9442 100644
++--- a/lib/kernel_tests.h
+++++ b/lib/kernel_tests.h
++@@ -113,7 +113,7 @@ std::vector<volk_test_case_t> init_test_list(volk_test_params_t test_params)
++     QA(VOLK_INIT_TEST(volk_32fc_index_max_32u, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_index_min_16u, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_index_min_32u, test_params))
++-    QA(VOLK_INIT_TEST(volk_32fc_s32f_magnitude_16i, test_params))
+++    QA(VOLK_INIT_TEST(volk_32fc_s32f_magnitude_16i, test_params.make_tol(1)))
++     QA(VOLK_INIT_TEST(volk_32fc_magnitude_32f, test_params_inacc_tenth))
++     QA(VOLK_INIT_TEST(volk_32fc_magnitude_squared_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_x2_add_32fc, test_params))
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e00277580bd7245f7ec780b3c7e33c6d989d55e1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,292 @@@
++From 874d95c3ef837cfb90b47b063447f15db6cdbd5d Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Fri, 8 Dec 2023 16:53:53 -0500
++Subject: [PATCH 3/6] Remove broken sse_32 kernels
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ .../volk_32fc_x2_conjugate_dot_prod_32fc.h    | 131 ------------------
++ kernels/volk/volk_32fc_x2_dot_prod_32fc.h     | 126 -----------------
++ 2 files changed, 257 deletions(-)
++
++diff --git a/kernels/volk/volk_32fc_x2_conjugate_dot_prod_32fc.h b/kernels/volk/volk_32fc_x2_conjugate_dot_prod_32fc.h
++index b1c1938..c71c7a3 100644
++--- a/kernels/volk/volk_32fc_x2_conjugate_dot_prod_32fc.h
+++++ b/kernels/volk/volk_32fc_x2_conjugate_dot_prod_32fc.h
++@@ -567,136 +567,5 @@ static inline void volk_32fc_x2_conjugate_dot_prod_32fc_a_sse(lv_32fc_t* result,
++ }
++ #endif
++ 
++-#if LV_HAVE_SSE && LV_HAVE_32
++-static inline void volk_32fc_x2_conjugate_dot_prod_32fc_a_sse_32(lv_32fc_t* result,
++-                                                                 const lv_32fc_t* input,
++-                                                                 const lv_32fc_t* taps,
++-                                                                 unsigned int num_points)
++-{
++-
++-    const unsigned int num_bytes = num_points * 8;
++-
++-    __VOLK_ATTR_ALIGNED(16)
++-    static const uint32_t conjugator[4] = {
++-        0x00000000, 0x80000000, 0x00000000, 0x80000000
++-    };
++-
++-    int bound = num_bytes >> 4;
++-    int leftovers = num_bytes % 16;
++-
++-    __VOLK_ASM __VOLK_VOLATILE(
++-        "    #pushl  %%ebp\n\t"
++-        "    #movl   %%esp, %%ebp\n\t"
++-        "    #movl   12(%%ebp), %%eax                # input\n\t"
++-        "    #movl   16(%%ebp), %%edx                # taps\n\t"
++-        "    #movl   20(%%ebp), %%ecx                # n_bytes\n\t"
++-        "  movaps  0(%[conjugator]), %%xmm1\n\t"
++-        "    xorps   %%xmm6, %%xmm6          # zero accumulators\n\t"
++-        "    movaps  0(%[eax]), %%xmm0\n\t"
++-        "    xorps   %%xmm7, %%xmm7          # zero accumulators\n\t"
++-        "    movaps  0(%[edx]), %%xmm2\n\t"
++-        "  movl    %[ecx], (%[out])\n\t"
++-        "    shrl    $5, %[ecx]              # ecx = n_2_ccomplex_blocks / 2\n\t"
++-
++-        "  xorps   %%xmm1, %%xmm2\n\t"
++-        "    jmp     .%=L1_test\n\t"
++-        "    # 4 taps / loop\n\t"
++-        "    # something like ?? cycles / loop\n\t"
++-        ".%=Loop1:   \n\t"
++-        "# complex prod: C += A * B,  w/ temp Z & Y (or B), xmmPN=$0x8000000080000000\n\t"
++-        "#   movaps  (%[eax]), %%xmmA\n\t"
++-        "#   movaps  (%[edx]), %%xmmB\n\t"
++-        "#   movaps  %%xmmA, %%xmmZ\n\t"
++-        "#   shufps  $0xb1, %%xmmZ, %%xmmZ   # swap internals\n\t"
++-        "#   mulps   %%xmmB, %%xmmA\n\t"
++-        "#   mulps   %%xmmZ, %%xmmB\n\t"
++-        "#   # SSE replacement for: pfpnacc %%xmmB, %%xmmA\n\t"
++-        "#   xorps   %%xmmPN, %%xmmA\n\t"
++-        "#   movaps  %%xmmA, %%xmmZ\n\t"
++-        "#   unpcklps %%xmmB, %%xmmA\n\t"
++-        "#   unpckhps %%xmmB, %%xmmZ\n\t"
++-        "#   movaps  %%xmmZ, %%xmmY\n\t"
++-        "#   shufps  $0x44, %%xmmA, %%xmmZ   # b01000100\n\t"
++-        "#   shufps  $0xee, %%xmmY, %%xmmA   # b11101110\n\t"
++-        "#   addps   %%xmmZ, %%xmmA\n\t"
++-        "#   addps   %%xmmA, %%xmmC\n\t"
++-        "# A=xmm0, B=xmm2, Z=xmm4\n\t"
++-        "# A'=xmm1, B'=xmm3, Z'=xmm5\n\t"
++-        "    movaps  16(%[edx]), %%xmm3\n\t"
++-        "    movaps  %%xmm0, %%xmm4\n\t"
++-        "  xorps   %%xmm1, %%xmm3\n\t"
++-        "    mulps   %%xmm2, %%xmm0\n\t"
++-        "    movaps  16(%[eax]), %%xmm1\n\t"
++-        "    shufps  $0xb1, %%xmm4, %%xmm4   # swap internals\n\t"
++-        "    movaps  %%xmm1, %%xmm5\n\t"
++-        "    addps   %%xmm0, %%xmm6\n\t"
++-        "    mulps   %%xmm3, %%xmm1\n\t"
++-        "    shufps  $0xb1, %%xmm5, %%xmm5   # swap internals\n\t"
++-        "    addps   %%xmm1, %%xmm6\n\t"
++-        "  movaps  0(%[conjugator]), %%xmm1\n\t"
++-        "    mulps   %%xmm4, %%xmm2\n\t"
++-        "    movaps  32(%[eax]), %%xmm0\n\t"
++-        "    addps   %%xmm2, %%xmm7\n\t"
++-        "    mulps   %%xmm5, %%xmm3\n\t"
++-        "    addl    $32, %[eax]\n\t"
++-        "    movaps  32(%[edx]), %%xmm2\n\t"
++-        "    addps   %%xmm3, %%xmm7\n\t"
++-        "  xorps   %%xmm1, %%xmm2\n\t"
++-        "    addl    $32, %[edx]\n\t"
++-        ".%=L1_test:\n\t"
++-        "    decl    %[ecx]\n\t"
++-        "    jge     .%=Loop1\n\t"
++-        "    # We've handled the bulk of multiplies up to here.\n\t"
++-        "    # Let's sse if original n_2_ccomplex_blocks was odd.\n\t"
++-        "    # If so, we've got 2 more taps to do.\n\t"
++-        "    movl    0(%[out]), %[ecx]               # n_2_ccomplex_blocks\n\t"
++-        "  shrl    $4, %[ecx]\n\t"
++-        "    andl    $1, %[ecx]\n\t"
++-        "    je      .%=Leven\n\t"
++-        "    # The count was odd, do 2 more taps.\n\t"
++-        "    # Note that we've already got mm0/mm2 preloaded\n\t"
++-        "    # from the main loop.\n\t"
++-        "    movaps  %%xmm0, %%xmm4\n\t"
++-        "    mulps   %%xmm2, %%xmm0\n\t"
++-        "    shufps  $0xb1, %%xmm4, %%xmm4   # swap internals\n\t"
++-        "    addps   %%xmm0, %%xmm6\n\t"
++-        "    mulps   %%xmm4, %%xmm2\n\t"
++-        "    addps   %%xmm2, %%xmm7\n\t"
++-        ".%=Leven:\n\t"
++-        "    # neg inversor\n\t"
++-        "  #movl 8(%%ebp), %[eax] \n\t"
++-        "    xorps   %%xmm1, %%xmm1\n\t"
++-        "  movl      $0x80000000, (%[out])\n\t"
++-        "    movss   (%[out]), %%xmm1\n\t"
++-        "    shufps  $0x11, %%xmm1, %%xmm1   # b00010001 # 0 -0 0 -0\n\t"
++-        "    # pfpnacc\n\t"
++-        "    xorps   %%xmm1, %%xmm6\n\t"
++-        "    movaps  %%xmm6, %%xmm2\n\t"
++-        "    unpcklps %%xmm7, %%xmm6\n\t"
++-        "    unpckhps %%xmm7, %%xmm2\n\t"
++-        "    movaps  %%xmm2, %%xmm3\n\t"
++-        "    shufps  $0x44, %%xmm6, %%xmm2   # b01000100\n\t"
++-        "    shufps  $0xee, %%xmm3, %%xmm6   # b11101110\n\t"
++-        "    addps   %%xmm2, %%xmm6\n\t"
++-        "                                    # xmm6 = r1 i2 r3 i4\n\t"
++-        "    #movl   8(%%ebp), %[eax]                # @result\n\t"
++-        "    movhlps %%xmm6, %%xmm4          # xmm4 = r3 i4 ?? ??\n\t"
++-        "    addps   %%xmm4, %%xmm6          # xmm6 = r1+r3 i2+i4 ?? ??\n\t"
++-        "    movlps  %%xmm6, (%[out])                # store low 2x32 bits (complex) "
++-        "to memory\n\t"
++-        "    #popl   %%ebp\n\t"
++-        :
++-        : [eax] "r"(input),
++-          [edx] "r"(taps),
++-          [ecx] "r"(num_bytes),
++-          [out] "r"(result),
++-          [conjugator] "r"(conjugator));
++-
++-    for (; leftovers > 0; leftovers -= 8) {
++-        *result += (input[(bound << 1)] * lv_conj(taps[(bound << 1)]));
++-    }
++-}
++-#endif /*LV_HAVE_SSE*/
++-
++ 
++ #endif /*INCLUDED_volk_32fc_x2_conjugate_dot_prod_32fc_a_H*/
++diff --git a/kernels/volk/volk_32fc_x2_dot_prod_32fc.h b/kernels/volk/volk_32fc_x2_dot_prod_32fc.h
++index 16851f8..7d9d4d4 100644
++--- a/kernels/volk/volk_32fc_x2_dot_prod_32fc.h
+++++ b/kernels/volk/volk_32fc_x2_dot_prod_32fc.h
++@@ -651,132 +651,6 @@ static inline void volk_32fc_x2_dot_prod_32fc_a_sse_64(lv_32fc_t* result,
++ 
++ #endif
++ 
++-#if LV_HAVE_SSE && LV_HAVE_32
++-
++-static inline void volk_32fc_x2_dot_prod_32fc_a_sse_32(lv_32fc_t* result,
++-                                                       const lv_32fc_t* input,
++-                                                       const lv_32fc_t* taps,
++-                                                       unsigned int num_points)
++-{
++-
++-    volk_32fc_x2_dot_prod_32fc_generic(result, input, taps, num_points);
++-
++-#if 0
++-  const unsigned int num_bytes = num_points*8;
++-  unsigned int isodd = num_points & 1;
++-
++-  __VOLK_ASM __VOLK_VOLATILE
++-    (
++-     "       #pushl  %%ebp\n\t"
++-     "       #movl   %%esp, %%ebp\n\t"
++-     "       movl    12(%%ebp), %%eax                # input\n\t"
++-     "       movl    16(%%ebp), %%edx                # taps\n\t"
++-     "       movl    20(%%ebp), %%ecx                # n_bytes\n\t"
++-     "       xorps   %%xmm6, %%xmm6          # zero accumulators\n\t"
++-     "       movaps  0(%%eax), %%xmm0\n\t"
++-     "       xorps   %%xmm7, %%xmm7          # zero accumulators\n\t"
++-     "       movaps  0(%%edx), %%xmm2\n\t"
++-     "       shrl    $5, %%ecx               # ecx = n_2_ccomplex_blocks / 2\n\t"
++-     "       jmp     .%=L1_test\n\t"
++-     "       # 4 taps / loop\n\t"
++-     "       # something like ?? cycles / loop\n\t"
++-     ".%=Loop1:      \n\t"
++-     "# complex prod: C += A * B,  w/ temp Z & Y (or B), xmmPN=$0x8000000080000000\n\t"
++-     "#      movaps  (%%eax), %%xmmA\n\t"
++-     "#      movaps  (%%edx), %%xmmB\n\t"
++-     "#      movaps  %%xmmA, %%xmmZ\n\t"
++-     "#      shufps  $0xb1, %%xmmZ, %%xmmZ   # swap internals\n\t"
++-     "#      mulps   %%xmmB, %%xmmA\n\t"
++-     "#      mulps   %%xmmZ, %%xmmB\n\t"
++-     "#      # SSE replacement for: pfpnacc %%xmmB, %%xmmA\n\t"
++-     "#      xorps   %%xmmPN, %%xmmA\n\t"
++-     "#      movaps  %%xmmA, %%xmmZ\n\t"
++-     "#      unpcklps %%xmmB, %%xmmA\n\t"
++-     "#      unpckhps %%xmmB, %%xmmZ\n\t"
++-     "#      movaps  %%xmmZ, %%xmmY\n\t"
++-     "#      shufps  $0x44, %%xmmA, %%xmmZ   # b01000100\n\t"
++-     "#      shufps  $0xee, %%xmmY, %%xmmA   # b11101110\n\t"
++-     "#      addps   %%xmmZ, %%xmmA\n\t"
++-     "#      addps   %%xmmA, %%xmmC\n\t"
++-     "# A=xmm0, B=xmm2, Z=xmm4\n\t"
++-     "# A'=xmm1, B'=xmm3, Z'=xmm5\n\t"
++-     "       movaps  16(%%eax), %%xmm1\n\t"
++-     "       movaps  %%xmm0, %%xmm4\n\t"
++-     "       mulps   %%xmm2, %%xmm0\n\t"
++-     "       shufps  $0xb1, %%xmm4, %%xmm4   # swap internals\n\t"
++-     "       movaps  16(%%edx), %%xmm3\n\t"
++-     "       movaps  %%xmm1, %%xmm5\n\t"
++-     "       addps   %%xmm0, %%xmm6\n\t"
++-     "       mulps   %%xmm3, %%xmm1\n\t"
++-     "       shufps  $0xb1, %%xmm5, %%xmm5   # swap internals\n\t"
++-     "       addps   %%xmm1, %%xmm6\n\t"
++-     "       mulps   %%xmm4, %%xmm2\n\t"
++-     "       movaps  32(%%eax), %%xmm0\n\t"
++-     "       addps   %%xmm2, %%xmm7\n\t"
++-     "       mulps   %%xmm5, %%xmm3\n\t"
++-     "       addl    $32, %%eax\n\t"
++-     "       movaps  32(%%edx), %%xmm2\n\t"
++-     "       addps   %%xmm3, %%xmm7\n\t"
++-     "       addl    $32, %%edx\n\t"
++-     ".%=L1_test:\n\t"
++-     "       decl    %%ecx\n\t"
++-     "       jge     .%=Loop1\n\t"
++-     "       # We've handled the bulk of multiplies up to here.\n\t"
++-     "       # Let's sse if original n_2_ccomplex_blocks was odd.\n\t"
++-     "       # If so, we've got 2 more taps to do.\n\t"
++-     "       movl    20(%%ebp), %%ecx                # n_2_ccomplex_blocks\n\t"
++-     "  shrl    $4, %%ecx\n\t"
++-     "       andl    $1, %%ecx\n\t"
++-     "       je      .%=Leven\n\t"
++-     "       # The count was odd, do 2 more taps.\n\t"
++-     "       # Note that we've already got mm0/mm2 preloaded\n\t"
++-     "       # from the main loop.\n\t"
++-     "       movaps  %%xmm0, %%xmm4\n\t"
++-     "       mulps   %%xmm2, %%xmm0\n\t"
++-     "       shufps  $0xb1, %%xmm4, %%xmm4   # swap internals\n\t"
++-     "       addps   %%xmm0, %%xmm6\n\t"
++-     "       mulps   %%xmm4, %%xmm2\n\t"
++-     "       addps   %%xmm2, %%xmm7\n\t"
++-     ".%=Leven:\n\t"
++-     "       # neg inversor\n\t"
++-     "  movl 8(%%ebp), %%eax \n\t"
++-     "       xorps   %%xmm1, %%xmm1\n\t"
++-     "  movl $0x80000000, (%%eax)\n\t"
++-     "       movss   (%%eax), %%xmm1\n\t"
++-     "       shufps  $0x11, %%xmm1, %%xmm1   # b00010001 # 0 -0 0 -0\n\t"
++-     "       # pfpnacc\n\t"
++-     "       xorps   %%xmm1, %%xmm6\n\t"
++-     "       movaps  %%xmm6, %%xmm2\n\t"
++-     "       unpcklps %%xmm7, %%xmm6\n\t"
++-     "       unpckhps %%xmm7, %%xmm2\n\t"
++-     "       movaps  %%xmm2, %%xmm3\n\t"
++-     "       shufps  $0x44, %%xmm6, %%xmm2   # b01000100\n\t"
++-     "       shufps  $0xee, %%xmm3, %%xmm6   # b11101110\n\t"
++-     "       addps   %%xmm2, %%xmm6\n\t"
++-     "                                       # xmm6 = r1 i2 r3 i4\n\t"
++-     "       #movl   8(%%ebp), %%eax         # @result\n\t"
++-     "       movhlps %%xmm6, %%xmm4          # xmm4 = r3 i4 ?? ??\n\t"
++-     "       addps   %%xmm4, %%xmm6          # xmm6 = r1+r3 i2+i4 ?? ??\n\t"
++-     "       movlps  %%xmm6, (%%eax)         # store low 2x32 bits (complex) to memory\n\t"
++-     "       #popl   %%ebp\n\t"
++-     :
++-     :
++-     : "eax", "ecx", "edx"
++-     );
++-
++-
++-  int getem = num_bytes % 16;
++-
++-  if(isodd) {
++-    *result += (input[num_points - 1] * taps[num_points - 1]);
++-  }
++-
++-  return;
++-#endif
++-}
++-
++-#endif /*LV_HAVE_SSE*/
++-
++ #ifdef LV_HAVE_SSE3
++ 
++ #include <pmmintrin.h>
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..02ebdcac69899a4e9f8e53d5591748a4804fa8ef
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++From e6fa6a54bd79764cebc855f58ca4db32c25584a2 Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Fri, 8 Dec 2023 18:57:02 -0500
++Subject: [PATCH 4/6] Fix flaky fm_detect test
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ kernels/volk/volk_32f_x2_fm_detectpuppet_32f.h | 8 ++++----
++ lib/kernel_tests.h                             | 5 +++--
++ 2 files changed, 7 insertions(+), 6 deletions(-)
++
++diff --git a/kernels/volk/volk_32f_x2_fm_detectpuppet_32f.h b/kernels/volk/volk_32f_x2_fm_detectpuppet_32f.h
++index e4196d5..b490154 100644
++--- a/kernels/volk/volk_32f_x2_fm_detectpuppet_32f.h
+++++ b/kernels/volk/volk_32f_x2_fm_detectpuppet_32f.h
++@@ -20,7 +20,7 @@ static inline void volk_32f_x2_fm_detectpuppet_32f_a_avx(float* outputVector,
++                                                          float* saveValue,
++                                                          unsigned int num_points)
++ {
++-    const float bound = 1.0f;
+++    const float bound = 2.0f;
++ 
++     volk_32f_s32f_32f_fm_detect_32f_a_avx(
++         outputVector, inputVector, bound, saveValue, num_points);
++@@ -35,7 +35,7 @@ static inline void volk_32f_x2_fm_detectpuppet_32f_a_sse(float* outputVector,
++                                                          float* saveValue,
++                                                          unsigned int num_points)
++ {
++-    const float bound = 1.0f;
+++    const float bound = 2.0f;
++ 
++     volk_32f_s32f_32f_fm_detect_32f_a_sse(
++         outputVector, inputVector, bound, saveValue, num_points);
++@@ -49,7 +49,7 @@ static inline void volk_32f_x2_fm_detectpuppet_32f_generic(float* outputVector,
++                                                            float* saveValue,
++                                                            unsigned int num_points)
++ {
++-    const float bound = 1.0f;
+++    const float bound = 2.0f;
++ 
++     volk_32f_s32f_32f_fm_detect_32f_generic(
++         outputVector, inputVector, bound, saveValue, num_points);
++@@ -73,7 +73,7 @@ static inline void volk_32f_x2_fm_detectpuppet_32f_u_avx(float* outputVector,
++                                                          float* saveValue,
++                                                          unsigned int num_points)
++ {
++-    const float bound = 1.0f;
+++    const float bound = 2.0f;
++ 
++     volk_32f_s32f_32f_fm_detect_32f_u_avx(
++         outputVector, inputVector, bound, saveValue, num_points);
++diff --git a/lib/kernel_tests.h b/lib/kernel_tests.h
++index 5ef3324..c90e7d8 100644
++--- a/lib/kernel_tests.h
+++++ b/lib/kernel_tests.h
++@@ -64,8 +64,9 @@ std::vector<volk_test_case_t> init_test_list(volk_test_params_t test_params)
++                       test_params_rotator))
++     QA(VOLK_INIT_PUPP(
++         volk_8u_conv_k7_r2puppet_8u, volk_8u_x4_conv_k7_r2_8u, test_params.make_tol(0)))
++-    QA(VOLK_INIT_PUPP(
++-        volk_32f_x2_fm_detectpuppet_32f, volk_32f_s32f_32f_fm_detect_32f, test_params))
+++    QA(VOLK_INIT_PUPP(volk_32f_x2_fm_detectpuppet_32f,
+++                      volk_32f_s32f_32f_fm_detect_32f,
+++                      test_params.make_absolute(1e-6)))
++     QA(VOLK_INIT_TEST(volk_16ic_s32f_deinterleave_real_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_16ic_deinterleave_real_8i, test_params))
++     QA(VOLK_INIT_TEST(volk_16ic_deinterleave_16i_x2, test_params))
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..29ef13bfb823e397ca32a65917102f5388253886
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,80 @@@
++From 2561b46ffd9c18cc8972b48a111e5dfaa79dfca3 Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Fri, 8 Dec 2023 19:27:45 -0500
++Subject: [PATCH 5/6] Fix flaky mod_range test
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ kernels/volk/volk_32f_s32f_mod_rangepuppet_32f.h | 14 +++++++-------
++ 1 file changed, 7 insertions(+), 7 deletions(-)
++
++diff --git a/kernels/volk/volk_32f_s32f_mod_rangepuppet_32f.h b/kernels/volk/volk_32f_s32f_mod_rangepuppet_32f.h
++index 3e0bc43..3a17859 100644
++--- a/kernels/volk/volk_32f_s32f_mod_rangepuppet_32f.h
+++++ b/kernels/volk/volk_32f_s32f_mod_rangepuppet_32f.h
++@@ -19,7 +19,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_generic(float* output,
++                                                              unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_generic(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ 
++@@ -31,7 +31,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_u_sse(float* output,
++                                                            unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_u_sse(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ #ifdef LV_HAVE_SSE
++@@ -41,7 +41,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_a_sse(float* output,
++                                                            unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_a_sse(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ 
++@@ -52,7 +52,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_u_sse2(float* output,
++                                                             unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_u_sse2(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ #ifdef LV_HAVE_SSE2
++@@ -62,7 +62,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_a_sse2(float* output,
++                                                             unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_a_sse2(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ 
++@@ -73,7 +73,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_u_avx(float* output,
++                                                            unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_u_avx(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ #ifdef LV_HAVE_AVX
++@@ -83,7 +83,7 @@ static inline void volk_32f_s32f_mod_rangepuppet_32f_a_avx(float* output,
++                                                            unsigned int num_points)
++ {
++     volk_32f_s32f_s32f_mod_range_32f_a_avx(
++-        output, input, bound - 3.141f, bound, num_points);
+++        output, input, bound - 3.131f, bound, num_points);
++ }
++ #endif
++ #endif
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d93568acd9c5147d2c0399f1192d10005348f49e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,30 @@@
++From b5992f21b74b129094afe0f2d3e31d5aeb50844c Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Fri, 8 Dec 2023 21:34:26 -0500
++Subject: [PATCH 6/6] Allow for rounding error in float-to-int interleave
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ lib/kernel_tests.h | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++--- a/lib/kernel_tests.h
+++++ b/lib/kernel_tests.h
++@@ -104,7 +104,7 @@
++     QA(VOLK_INIT_TEST(volk_32fc_deinterleave_32f_x2, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_accumulator_s32fc, test_params.make_absolute(3e-2)))
++     QA(VOLK_INIT_TEST(volk_32fc_deinterleave_64f_x2, test_params))
++-    QA(VOLK_INIT_TEST(volk_32fc_s32f_deinterleave_real_16i, test_params))
+++    QA(VOLK_INIT_TEST(volk_32fc_s32f_deinterleave_real_16i, test_params.make_tol(1)))
++     QA(VOLK_INIT_TEST(volk_32fc_deinterleave_imag_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_deinterleave_real_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_32fc_deinterleave_real_64f, test_params))
++@@ -132,7 +132,7 @@
++     QA(VOLK_INIT_TEST(volk_32fc_x2_s32f_square_dist_scalar_mult_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_32f_x2_divide_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_32f_x2_dot_prod_32f, test_params.make_absolute(1.5e-2)))
++-    QA(VOLK_INIT_TEST(volk_32f_x2_s32f_interleave_16ic, test_params))
+++    QA(VOLK_INIT_TEST(volk_32f_x2_s32f_interleave_16ic, test_params.make_tol(1)))
++     QA(VOLK_INIT_TEST(volk_32f_x2_interleave_32fc, test_params))
++     QA(VOLK_INIT_TEST(volk_32f_x2_max_32f, test_params))
++     QA(VOLK_INIT_TEST(volk_32f_x2_min_32f, test_params))
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..38489742e3db6ff6678319cd53056d3b433550c3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,68 @@@
++From 8b5183be984e27103ef2472244dac98ab3db0b32 Mon Sep 17 00:00:00 2001
++From: Clayton Smith <argilo@gmail.com>
++Date: Mon, 11 Dec 2023 14:10:20 -0500
++Subject: [PATCH 7/7] Express version information in decimal
++
++Signed-off-by: Clayton Smith <argilo@gmail.com>
++---
++ CMakeLists.txt                 | 17 ++++-------------
++ include/volk/volk_version.h.in |  8 ++++----
++ 2 files changed, 8 insertions(+), 17 deletions(-)
++
++diff --git a/CMakeLists.txt b/CMakeLists.txt
++index 2416eb2..2ff536a 100644
++--- a/CMakeLists.txt
+++++ b/CMakeLists.txt
++@@ -80,19 +80,10 @@ set(VERSION_INFO_MINOR_VERSION 1)
++ set(VERSION_INFO_MAINT_VERSION 0)
++ include(VolkVersion) #setup version info
++ 
++-macro(set_version_str VAR)
++-  set(IN_VER ${VERSION_INFO_${VAR}_VERSION})
++-  string(LENGTH "${IN_VER}" VER_LEN)
++-  if(${VER_LEN} EQUAL 1)
++-    set(VOLK_VERSION_${VAR} "0${IN_VER}")
++-  else()
++-    set(VOLK_VERSION_${VAR} "${IN_VER}")
++-  endif()
++-endmacro()
++-
++-set_version_str(MAJOR)
++-set_version_str(MINOR)
++-set_version_str(MAINT)
+++math(EXPR VOLK_VERSION_DECIMAL
+++    "${VERSION_INFO_MAJOR_VERSION} * 10000
+++    + ${VERSION_INFO_MINOR_VERSION} * 100
+++    + ${VERSION_INFO_MAINT_VERSION}")
++ 
++ configure_file(
++     ${CMAKE_SOURCE_DIR}/include/volk/volk_version.h.in
++diff --git a/include/volk/volk_version.h.in b/include/volk/volk_version.h.in
++index e565048..5fce7d3 100644
++--- a/include/volk/volk_version.h.in
+++++ b/include/volk/volk_version.h.in
++@@ -20,9 +20,9 @@ __VOLK_DECL_BEGIN
++  * some specific API is present and functional.
++  */
++ 
++-#define VOLK_VERSION_MAJOR @VOLK_VERSION_MAJOR@
++-#define VOLK_VERSION_MINOR @VOLK_VERSION_MINOR@
++-#define VOLK_VERSION_MAINT @VOLK_VERSION_MAINT@
+++#define VOLK_VERSION_MAJOR @VERSION_INFO_MAJOR_VERSION@
+++#define VOLK_VERSION_MINOR @VERSION_INFO_MINOR_VERSION@
+++#define VOLK_VERSION_MAINT @VERSION_INFO_MAINT_VERSION@
++ 
++ /*
++  * VOLK_VERSION % 100 is the MAINT version
++@@ -30,7 +30,7 @@ __VOLK_DECL_BEGIN
++  * (VOLK_VERSION / 100) / 100 is the MAJOR version
++  */
++ 
++-#define VOLK_VERSION @VOLK_VERSION_MAJOR@@VOLK_VERSION_MINOR@@VOLK_VERSION_MAINT@
+++#define VOLK_VERSION @VOLK_VERSION_DECIMAL@
++ 
++ __VOLK_DECL_END
++ 
++-- 
++2.39.2
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6babbfc3f9bdea30b5a7c467760207b56859ceea
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,86 @@@
++Author: A. Maitland Bottoms <bottoms@debian.org>
++Forwarded: not-needed
++Description: doxygen pdf
++ Work-In-Progress Debian inclusion of PDF format documentation.
++
++--- a/docs/CMakeLists.txt
+++++ b/docs/CMakeLists.txt
++@@ -5,10 +5,18 @@
++ # SPDX-License-Identifier: LGPL-3.0-or-later
++ #
++ 
+++option(ENABLE_DOXYGEN_PDF "Build Doxygen PDF" OFF)
++ find_package(Doxygen)
++ if(DOXYGEN_FOUND)
++-
++ message(STATUS "Doxygen found. Building docs ...")
+++find_package(LATEX COMPONENTS PDFLATEX)
+++
+++if(ENABLE_DOXYGEN_PDF AND LATEX_FOUND)
+++    set(enable_pdf_docs YES)
+++    message(STATUS "latex found. Building PDF docs ...")
+++else()
+++    set(enable_pdf_docs NO)
+++endif()
++ 
++ configure_file(
++     ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
++@@ -21,4 +29,11 @@
++     COMMENT "Generating documentation with Doxygen" VERBATIM
++ )
++ 
+++add_custom_target(volk_pdf_doc
+++    make
+++    DEPENDS volk_doc
+++    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/latex
+++    COMMENT "Generating PDF documentation with Doxygen" VERBATIM
+++)
+++
++ endif(DOXYGEN_FOUND)
++--- a/docs/Doxyfile.in
+++++ b/docs/Doxyfile.in
++@@ -1894,7 +1894,7 @@
++ # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
++ # The default value is: YES.
++ 
++-GENERATE_LATEX         = NO
+++GENERATE_LATEX         = @enable_pdf_docs@
++ 
++ # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
++ # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
++@@ -1914,7 +1914,7 @@
++ # the output language.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++-LATEX_CMD_NAME         = latex
+++LATEX_CMD_NAME         = xelatex
++ 
++ # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
++ # index for LaTeX.
++@@ -1951,7 +1951,7 @@
++ # The default value is: a4.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++-PAPER_TYPE             = a4
+++PAPER_TYPE             = letter
++ 
++ # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
++ # that should be included in the LaTeX output. The package can be specified just
++@@ -1963,7 +1963,7 @@
++ # If left blank no extra packages will be included.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++-EXTRA_PACKAGES         =
+++EXTRA_PACKAGES         = {unicode-math}
++ 
++ # The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
++ # the generated LaTeX document. The header should contain everything until the
++@@ -2429,7 +2429,7 @@
++ # set to NO
++ # The default value is: YES.
++ 
++-HAVE_DOT               = NO
+++HAVE_DOT               = YES
++ 
++ # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
++ # to run in parallel. When set to 0 doxygen will base this on the number of
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f916c35343ee92320e0eaf684f20dd28344ffa0f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,77 @@@
++From 58cc2b105211f0e5beab4dc228b478ebe105be06 Mon Sep 17 00:00:00 2001
++From: "A. Maitland Bottoms" <bottoms@debian.org>
++Date: Sun, 4 Sep 2022 21:37:45 -0400
++Subject: [PATCH] omit doxygen build paths
++
++Use reproducible-builds friendly configuration settings.
++
++Signed-off-by: A. Maitland Bottoms <bottoms@debian.org>
++---
++ docs/Doxyfile.in | 14 +++++++-------
++ 1 file changed, 7 insertions(+), 7 deletions(-)
++
++--- a/docs/Doxyfile.in
+++++ b/docs/Doxyfile.in
++@@ -157,7 +157,7 @@
++ # will be relative from the directory where doxygen is started.
++ # This tag requires that the tag FULL_PATH_NAMES is set to YES.
++ 
++-STRIP_FROM_PATH        =
+++STRIP_FROM_PATH        = @CMAKE_BINARY_DIR@ @CMAKE_SOURCE_DIR@
++ 
++ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
++ # path mentioned in the documentation of a class, which tells the reader which
++@@ -166,7 +166,7 @@
++ # specify the list of include paths that are normally passed to the compiler
++ # using the -I flag.
++ 
++-STRIP_FROM_INC_PATH    =
+++STRIP_FROM_INC_PATH    = @CMAKE_SOURCE_DIR@ @CMAKE_BINARY_DIR@
++ 
++ # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
++ # less readable) file names. This can be useful is your file systems doesn't
++@@ -637,7 +637,7 @@
++ # will mention the files that were used to generate the documentation.
++ # The default value is: YES.
++ 
++-SHOW_USED_FILES        = YES
+++SHOW_USED_FILES        = NO
++ 
++ # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
++ # will remove the Files entry from the Quick Index and from the Folder Tree View
++@@ -832,7 +832,7 @@
++ # Note that relative paths are relative to the directory from which doxygen is
++ # run.
++ 
++-EXCLUDE                = @CMAKE_BINARY_DIR@ @CMAKE_SOURCE_DIR@/cpu_features @CMAKE_SOURCE_DIR@/README.md @CMAKE_SOURCE_DIR@/docs/AUTHORS_RESUBMITTING_UNDER_LGPL_LICENSE.md
+++EXCLUDE                = @CMAKE_BINARY_DIR@ @CMAKE_SOURCE_DIR@/cpu_features @CMAKE_SOURCE_DIR@/README.md @CMAKE_SOURCE_DIR@/cmake @CMAKE_SOURCE_DIR@/docs/AUTHORS_RESUBMITTING_UNDER_LGPL_LICENSE.md @CMAKE_SOURCE_DIR@/apps @CMAKE_SOURCE_DIR@/lib/*qa* @CMAKE_SOURCE_DIR@/tmpl
++ 
++ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
++ # directories that are symbolic links (a Unix file system feature) are excluded
++@@ -979,7 +979,7 @@
++ # link to the documentation.
++ # The default value is: YES.
++ 
++-REFERENCES_LINK_SOURCE = YES
+++REFERENCES_LINK_SOURCE = NO
++ 
++ # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
++ # source code will show a tooltip with additional information such as prototype,
++@@ -989,7 +989,7 @@
++ # The default value is: YES.
++ # This tag requires that the tag SOURCE_BROWSER is set to YES.
++ 
++-SOURCE_TOOLTIPS        = YES
+++SOURCE_TOOLTIPS        = NO
++ 
++ # If the USE_HTAGS tag is set to YES then the references to source code will
++ # point to the HTML generated by the htags(1) tool instead of doxygen built-in
++@@ -1099,7 +1099,7 @@
++ # that doxygen normally uses.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++-HTML_FOOTER            =
+++HTML_FOOTER            = ""
++ 
++ # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
++ # sheet that is used by each HTML page. It can be used to fine-tune the look of
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8cb050d5c75029c8a95d5b6dd0e700bb747b3b4c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++Author: A. Maitland Bottoms <bottoms@debian.org>
++Forwarded: not-needed
++Description: optional static apps
++ For Debian, build apps with static libs if ENABLE_STATIC_APPS.
++
++--- a/apps/CMakeLists.txt
+++++ b/apps/CMakeLists.txt
++@@ -44,7 +44,7 @@
++ endif()
++ target_link_libraries(volk_profile PRIVATE std::filesystem)
++ 
++-if(ENABLE_STATIC_LIBS)
+++if(ENABLE_STATIC_LIBS AND ENABLE_STATIC_APPS)
++     target_link_libraries(volk_profile PRIVATE volk_static)
++     set_target_properties(volk_profile PROPERTIES LINK_FLAGS "-static")
++ else()
++@@ -61,7 +61,7 @@
++ add_executable(volk-config-info volk-config-info.cc ${CMAKE_CURRENT_SOURCE_DIR}/volk_option_helpers.cc
++         )
++ 
++-if(ENABLE_STATIC_LIBS)
+++if(ENABLE_STATIC_LIBS AND ENABLE_STATIC_APPS)
++     target_link_libraries(volk-config-info volk_static)
++     set_target_properties(volk-config-info PROPERTIES LINK_FLAGS "-static")
++ else()
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..620cb5780cba3269c6de2aa3ef15dae2a57a8fce
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++0001-Allow-for-rounding-error-in-float-to-int-conversions.patch
++0002-Allow-for-rounding-error-in-volk_32fc_s32f_magnitude.patch
++0003-Remove-broken-sse_32-kernels.patch
++0004-Fix-flaky-fm_detect-test.patch
++0005-Fix-flaky-mod_range-test.patch
++0006-Allow-for-rounding-error-in-float-to-int-interleave.patch
++0007-Express-version-information-in-decimal.patch
++optional-static-apps
++omit-doxygen-build-paths
++update-doxygen
++doxygen-pdf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d856a1ee8a93492fdef8f3a310124ddfb14d5576
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2134 @@@
++Author: A. Maitland Bottoms <bottoms@debian.org>
++Forwarded: not-needed
++Description: update doxygen
++ For Debian version of Doxygen.
++
++--- a/docs/Doxyfile.in
+++++ b/docs/Doxyfile.in
++@@ -1,4 +1,4 @@
++-# Doxyfile 1.8.6
+++# Doxyfile 1.9.4
++ 
++ # This file describes the settings to be used by the documentation system
++ # doxygen (www.doxygen.org) for a project.
++@@ -12,16 +12,25 @@
++ # For lists, items can also be appended using:
++ # TAG += value [value, ...]
++ # Values that contain spaces should be placed between quotes (\" \").
+++#
+++# Note:
+++#
+++# Use doxygen to compare the used configuration file with the template
+++# configuration file:
+++# doxygen -x [configFile]
+++# Use doxygen to compare the used configuration file with the template
+++# configuration file without replacing the environment variables:
+++# doxygen -x_noenv [configFile]
++ 
++ #---------------------------------------------------------------------------
++ # Project related configuration options
++ #---------------------------------------------------------------------------
++ 
++-# This tag specifies the encoding used for all characters in the config file
++-# that follow. The default is UTF-8 which is also the encoding used for all text
++-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
++-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
++-# for the list of possible encodings.
+++# This tag specifies the encoding used for all characters in the configuration
+++# file that follow. The default is UTF-8 which is also the encoding used for all
+++# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+++# iconv built into libc) for the transcoding. See
+++# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
++ # The default value is: UTF-8.
++ 
++ DOXYFILE_ENCODING      = UTF-8
++@@ -46,10 +55,10 @@
++ 
++ PROJECT_BRIEF          = "Architecture-tuned implementations of math kernels"
++ 
++-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
++-# the documentation. The maximum height of the logo should not exceed 55 pixels
++-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
++-# to the output directory.
+++# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+++# in the documentation. The maximum height of the logo should not exceed 55
+++# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+++# the logo to the output directory.
++ 
++ PROJECT_LOGO           = @CMAKE_SOURCE_DIR@/docs/volk_logo_small.png
++ 
++@@ -58,44 +67,61 @@
++ # entered, it will be relative to the location where doxygen was started. If
++ # left blank the current directory will be used.
++ 
++-# TODO: configure this to be a special docs directory. nw tried, but running
++-# make doc won' create the directory, but with doxygen it will.  why?
++-
++ OUTPUT_DIRECTORY       =
++ 
++-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
++-# directories (in 2 levels) under the output directory of each output format and
++-# will distribute the generated files over these directories. Enabling this
+++# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
+++# sub-directories (in 2 levels) under the output directory of each output format
+++# and will distribute the generated files over these directories. Enabling this
++ # option can be useful when feeding doxygen a huge amount of source files, where
++ # putting all generated files in the same directory would otherwise causes
++-# performance problems for the file system.
+++# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
+++# control the number of sub-directories.
++ # The default value is: NO.
++ 
++ CREATE_SUBDIRS         = NO
++ 
+++# Controls the number of sub-directories that will be created when
+++# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
+++# level increment doubles the number of directories, resulting in 4096
+++# directories at level 8 which is the default and also the maximum value. The
+++# sub-directories are organized in 2 levels, the first level always has a fixed
+++# numer of 16 directories.
+++# Minimum value: 0, maximum value: 8, default value: 8.
+++# This tag requires that the tag CREATE_SUBDIRS is set to YES.
+++
+++CREATE_SUBDIRS_LEVEL   = 8
+++
+++# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+++# characters to appear in the names of generated files. If set to NO, non-ASCII
+++# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+++# U+3044.
+++# The default value is: NO.
+++
+++ALLOW_UNICODE_NAMES    = NO
+++
++ # The OUTPUT_LANGUAGE tag is used to specify the language in which all
++ # documentation generated by doxygen is written. Doxygen will use this
++ # information to generate all constant output in the proper language.
++-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
++-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
++-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
++-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
++-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
++-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
++-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
++-# Ukrainian and Vietnamese.
+++# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
+++# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
+++# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
+++# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
+++# English messages), Korean, Korean-en (Korean with English messages), Latvian,
+++# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
+++# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
+++# Swedish, Turkish, Ukrainian and Vietnamese.
++ # The default value is: English.
++ 
++ OUTPUT_LANGUAGE        = English
++ 
++-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+++# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
++ # descriptions after the members that are listed in the file and class
++ # documentation (similar to Javadoc). Set to NO to disable this.
++ # The default value is: YES.
++ 
++ BRIEF_MEMBER_DESC      = YES
++ 
++-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+++# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
++ # description of a member or function before the detailed description
++ #
++ # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
++@@ -140,7 +166,7 @@
++ 
++ INLINE_INHERITED_MEMB  = NO
++ 
++-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+++# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
++ # before files name in the file list and in the header files. If set to NO the
++ # shortest path that makes the file name unique will be used
++ # The default value is: YES.
++@@ -157,7 +183,8 @@
++ # will be relative from the directory where doxygen is started.
++ # This tag requires that the tag FULL_PATH_NAMES is set to YES.
++ 
++-STRIP_FROM_PATH        = @CMAKE_BINARY_DIR@ @CMAKE_SOURCE_DIR@
+++STRIP_FROM_PATH        = @CMAKE_BINARY_DIR@ \
+++                         @CMAKE_SOURCE_DIR@
++ 
++ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
++ # path mentioned in the documentation of a class, which tells the reader which
++@@ -166,7 +193,8 @@
++ # specify the list of include paths that are normally passed to the compiler
++ # using the -I flag.
++ 
++-STRIP_FROM_INC_PATH    = @CMAKE_SOURCE_DIR@ @CMAKE_BINARY_DIR@
+++STRIP_FROM_INC_PATH    = @CMAKE_SOURCE_DIR@ \
+++                         @CMAKE_BINARY_DIR@
++ 
++ # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
++ # less readable) file names. This can be useful is your file systems doesn't
++@@ -184,6 +212,16 @@
++ 
++ JAVADOC_AUTOBRIEF      = NO
++ 
+++# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
+++# such as
+++# /***************
+++# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
+++# Javadoc-style will behave just like regular comments and it will not be
+++# interpreted by doxygen.
+++# The default value is: NO.
+++
+++JAVADOC_BANNER         = NO
+++
++ # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
++ # line (until the first dot) of a Qt-style comment as the brief description. If
++ # set to NO, the Qt-style will behave just like regular Qt-style comments (thus
++@@ -204,15 +242,23 @@
++ 
++ MULTILINE_CPP_IS_BRIEF = NO
++ 
+++# By default Python docstrings are displayed as preformatted text and doxygen's
+++# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
+++# doxygen's special commands can be used and the contents of the docstring
+++# documentation blocks is shown as doxygen documentation.
+++# The default value is: YES.
+++
+++PYTHON_DOCSTRING       = YES
+++
++ # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
++ # documentation from any documented member that it re-implements.
++ # The default value is: YES.
++ 
++ INHERIT_DOCS           = YES
++ 
++-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
++-# new page for each member. If set to NO, the documentation of a member will be
++-# part of the file/class/namespace that contains it.
+++# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+++# page for each member. If set to NO, the documentation of a member will be part
+++# of the file/class/namespace that contains it.
++ # The default value is: NO.
++ 
++ SEPARATE_MEMBER_PAGES  = NO
++@@ -227,20 +273,19 @@
++ # the documentation. An alias has the form:
++ # name=value
++ # For example adding
++-# "sideeffect=@par Side Effects:\n"
+++# "sideeffect=@par Side Effects:^^"
++ # will allow you to put the command \sideeffect (or @sideeffect) in the
++ # documentation, which will result in a user-defined paragraph with heading
++-# "Side Effects:". You can put \n's in the value part of an alias to insert
++-# newlines.
+++# "Side Effects:". Note that you cannot put \n's in the value part of an alias
+++# to insert newlines (in the resulting output). You can put ^^ in the value part
+++# of an alias to insert a newline as if a physical newline was in the original
+++# file. When you need a literal { or } or , in the value part of an alias you
+++# have to escape them by means of a backslash (\), this can lead to conflicts
+++# with the commands \{ and \} for these it is advised to use the version @{ and
+++# @} or use a double escape (\\{ and \\})
++ 
++ ALIASES                =
++ 
++-# This tag can be used to specify a number of word-keyword mappings (TCL only).
++-# A mapping has the form "name=value". For example adding "class=itcl::class"
++-# will allow you to use the command class in the itcl::class meaning.
++-
++-TCL_SUBST              =
++-
++ # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
++ # only. Doxygen will then generate output that is more tailored for C. For
++ # instance, some of the names that are used will be different. The list of all
++@@ -269,25 +314,40 @@
++ 
++ OPTIMIZE_OUTPUT_VHDL   = NO
++ 
+++# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
+++# sources only. Doxygen will then generate output that is more tailored for that
+++# language. For instance, namespaces will be presented as modules, types will be
+++# separated into more groups, etc.
+++# The default value is: NO.
+++
+++OPTIMIZE_OUTPUT_SLICE  = NO
+++
++ # Doxygen selects the parser to use depending on the extension of the files it
++ # parses. With this tag you can assign which parser to use for a given
++ # extension. Doxygen has a built-in mapping, but you can override or extend it
++ # using this tag. The format is ext=language, where ext is a file extension, and
++-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
++-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
++-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
++-# (default is Fortran), use: inc=Fortran f=C.
+++# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
+++# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
+++# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
+++# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
+++# tries to guess whether the code is fixed or free formatted code, this is the
+++# default for Fortran type files). For instance to make doxygen treat .inc files
+++# as Fortran files (default is PHP), and .f files as C (default is Fortran),
+++# use: inc=Fortran f=C.
++ #
++-# Note For files without extension you can use no_extension as a placeholder.
+++# Note: For files without extension you can use no_extension as a placeholder.
++ #
++ # Note that for custom extensions you also need to set FILE_PATTERNS otherwise
++-# the files are not read by doxygen.
+++# the files are not read by doxygen. When specifying no_extension you should add
+++# * to the FILE_PATTERNS.
+++#
+++# Note see also the list of default file extension mappings.
++ 
++ EXTENSION_MAPPING      =
++ 
++ # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
++ # according to the Markdown format, which allows for more readable
++-# documentation. See http://daringfireball.net/projects/markdown/ for details.
+++# documentation. See https://daringfireball.net/projects/markdown/ for details.
++ # The output of markdown processing is further processed by doxygen, so you can
++ # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
++ # case of backward compatibilities issues.
++@@ -295,10 +355,19 @@
++ 
++ MARKDOWN_SUPPORT       = YES
++ 
+++# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+++# to that level are automatically included in the table of contents, even if
+++# they do not have an id attribute.
+++# Note: This feature currently applies only to Markdown headings.
+++# Minimum value: 0, maximum value: 99, default value: 5.
+++# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+++
+++TOC_INCLUDE_HEADINGS   = 5
+++
++ # When enabled doxygen tries to link words that correspond to documented
++ # classes, or namespaces to their corresponding documentation. Such a link can
++-# be prevented in individual cases by by putting a % sign in front of the word
++-# or globally by setting AUTOLINK_SUPPORT to NO.
+++# be prevented in individual cases by putting a % sign in front of the word or
+++# globally by setting AUTOLINK_SUPPORT to NO.
++ # The default value is: YES.
++ 
++ AUTOLINK_SUPPORT       = YES
++@@ -320,7 +389,7 @@
++ CPP_CLI_SUPPORT        = NO
++ 
++ # Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
++-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+++# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
++ # will parse them like normal C++ but will assume all classes use public instead
++ # of private inheritance when no explicit protection keyword is present.
++ # The default value is: NO.
++@@ -338,13 +407,20 @@
++ IDL_PROPERTY_SUPPORT   = YES
++ 
++ # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
++-# tag is set to YES, then doxygen will reuse the documentation of the first
+++# tag is set to YES then doxygen will reuse the documentation of the first
++ # member in the group (if any) for the other members of the group. By default
++ # all members of a group must be documented explicitly.
++ # The default value is: NO.
++ 
++ DISTRIBUTE_GROUP_DOC   = NO
++ 
+++# If one adds a struct or class to a group and this option is enabled, then also
+++# any nested class or struct is added to the same group. By default this option
+++# is disabled and one has to add nested compounds explicitly via \ingroup.
+++# The default value is: NO.
+++
+++GROUP_NESTED_COMPOUNDS = NO
+++
++ # Set the SUBGROUPING tag to YES to allow class member groups of the same type
++ # (for instance a group of public functions) to be put as a subgroup of that
++ # type (e.g. under the Public Functions section). Set it to NO to prevent
++@@ -399,11 +475,24 @@
++ 
++ LOOKUP_CACHE_SIZE      = 0
++ 
+++# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use
+++# during processing. When set to 0 doxygen will based this on the number of
+++# cores available in the system. You can set it explicitly to a value larger
+++# than 0 to get more control over the balance between CPU load and processing
+++# speed. At this moment only the input processing can be done using multiple
+++# threads. Since this is still an experimental feature the default is set to 1,
+++# which effectively disables parallel processing. Please report any issues you
+++# encounter. Generating dot graphs in parallel is controlled by the
+++# DOT_NUM_THREADS setting.
+++# Minimum value: 0, maximum value: 32, default value: 1.
+++
+++NUM_PROC_THREADS       = 1
+++
++ #---------------------------------------------------------------------------
++ # Build related configuration options
++ #---------------------------------------------------------------------------
++ 
++-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+++# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
++ # documentation are documented, even if no documentation was available. Private
++ # class members and static file members will be hidden unless the
++ # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
++@@ -413,35 +502,41 @@
++ 
++ EXTRACT_ALL            = YES
++ 
++-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+++# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
++ # be included in the documentation.
++ # The default value is: NO.
++ 
++ EXTRACT_PRIVATE        = NO
++ 
++-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+++# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
+++# methods of a class will be included in the documentation.
+++# The default value is: NO.
+++
+++EXTRACT_PRIV_VIRTUAL   = NO
+++
+++# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
++ # scope will be included in the documentation.
++ # The default value is: NO.
++ 
++ EXTRACT_PACKAGE        = NO
++ 
++-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+++# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
++ # included in the documentation.
++ # The default value is: NO.
++ 
++ EXTRACT_STATIC         = YES
++ 
++-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
++-# locally in source files will be included in the documentation. If set to NO
+++# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+++# locally in source files will be included in the documentation. If set to NO,
++ # only classes defined in header files are included. Does not have any effect
++ # for Java sources.
++ # The default value is: YES.
++ 
++ EXTRACT_LOCAL_CLASSES  = YES
++ 
++-# This flag is only useful for Objective-C code. When set to YES local methods,
+++# This flag is only useful for Objective-C code. If set to YES, local methods,
++ # which are defined in the implementation section but not in the interface are
++-# included in the documentation. If set to NO only methods in the interface are
+++# included in the documentation. If set to NO, only methods in the interface are
++ # included.
++ # The default value is: NO.
++ 
++@@ -456,6 +551,13 @@
++ 
++ EXTRACT_ANON_NSPACES   = NO
++ 
+++# If this flag is set to YES, the name of an unnamed parameter in a declaration
+++# will be determined by the corresponding definition. By default unnamed
+++# parameters remain unnamed in the output.
+++# The default value is: YES.
+++
+++RESOLVE_UNNAMED_PARAMS = YES
+++
++ # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
++ # undocumented members inside documented classes or files. If set to NO these
++ # members will be included in the various overviews, but no documentation
++@@ -466,21 +568,21 @@
++ 
++ # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
++ # undocumented classes that are normally visible in the class hierarchy. If set
++-# to NO these classes will be included in the various overviews. This option has
++-# no effect if EXTRACT_ALL is enabled.
+++# to NO, these classes will be included in the various overviews. This option
+++# has no effect if EXTRACT_ALL is enabled.
++ # The default value is: NO.
++ 
++ HIDE_UNDOC_CLASSES     = YES
++ 
++ # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
++-# (class|struct|union) declarations. If set to NO these declarations will be
++-# included in the documentation.
+++# declarations. If set to NO, these declarations will be included in the
+++# documentation.
++ # The default value is: NO.
++ 
++ HIDE_FRIEND_COMPOUNDS  = NO
++ 
++ # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
++-# documentation blocks found inside the body of a function. If set to NO these
+++# documentation blocks found inside the body of a function. If set to NO, these
++ # blocks will be appended to the function's detailed documentation block.
++ # The default value is: NO.
++ 
++@@ -493,22 +595,42 @@
++ 
++ INTERNAL_DOCS          = NO
++ 
++-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
++-# names in lower-case letters. If set to YES upper-case letters are also
++-# allowed. This is useful if you have classes or files whose names only differ
++-# in case and if your file system supports case sensitive file names. Windows
++-# and Mac users are advised to set this option to NO.
+++# With the correct setting of option CASE_SENSE_NAMES doxygen will better be
+++# able to match the capabilities of the underlying filesystem. In case the
+++# filesystem is case sensitive (i.e. it supports files in the same directory
+++# whose names only differ in casing), the option must be set to YES to properly
+++# deal with such files in case they appear in the input. For filesystems that
+++# are not case sensitive the option should be set to NO to properly deal with
+++# output files written for symbols that only differ in casing, such as for two
+++# classes, one named CLASS and the other named Class, and to also support
+++# references to files without having to specify the exact matching casing. On
+++# Windows (including Cygwin) and MacOS, users should typically set this option
+++# to NO, whereas on Linux or other Unix flavors it should typically be set to
+++# YES.
++ # The default value is: system dependent.
++ 
++ CASE_SENSE_NAMES       = NO
++ 
++ # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
++-# their full class and namespace scopes in the documentation. If set to YES the
+++# their full class and namespace scopes in the documentation. If set to YES, the
++ # scope will be hidden.
++ # The default value is: NO.
++ 
++ HIDE_SCOPE_NAMES       = NO
++ 
+++# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+++# append additional text to a page's title, such as Class Reference. If set to
+++# YES the compound reference will be hidden.
+++# The default value is: NO.
+++
+++HIDE_COMPOUND_REFERENCE= NO
+++
+++# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
+++# will show which file needs to be included to use the class.
+++# The default value is: YES.
+++
+++SHOW_HEADERFILE        = YES
+++
++ # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
++ # the files that are included by a file in the documentation of that file.
++ # The default value is: YES.
++@@ -536,14 +658,14 @@
++ 
++ # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
++ # (detailed) documentation of file and class members alphabetically by member
++-# name. If set to NO the members will appear in declaration order.
+++# name. If set to NO, the members will appear in declaration order.
++ # The default value is: YES.
++ 
++ SORT_MEMBER_DOCS       = YES
++ 
++ # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
++ # descriptions of file, namespace and class members alphabetically by member
++-# name. If set to NO the members will appear in declaration order. Note that
+++# name. If set to NO, the members will appear in declaration order. Note that
++ # this will also influence the order of the classes in the class list.
++ # The default value is: NO.
++ 
++@@ -588,27 +710,25 @@
++ 
++ STRICT_PROTO_MATCHING  = NO
++ 
++-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
++-# todo list. This list is created by putting \todo commands in the
++-# documentation.
+++# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+++# list. This list is created by putting \todo commands in the documentation.
++ # The default value is: YES.
++ 
++ GENERATE_TODOLIST      = YES
++ 
++-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
++-# test list. This list is created by putting \test commands in the
++-# documentation.
+++# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+++# list. This list is created by putting \test commands in the documentation.
++ # The default value is: YES.
++ 
++ GENERATE_TESTLIST      = YES
++ 
++-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+++# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
++ # list. This list is created by putting \bug commands in the documentation.
++ # The default value is: YES.
++ 
++ GENERATE_BUGLIST       = YES
++ 
++-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+++# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
++ # the deprecated list. This list is created by putting \deprecated commands in
++ # the documentation.
++ # The default value is: YES.
++@@ -633,8 +753,8 @@
++ MAX_INITIALIZER_LINES  = 30
++ 
++ # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
++-# the bottom of the documentation of classes and structs. If set to YES the list
++-# will mention the files that were used to generate the documentation.
+++# the bottom of the documentation of classes and structs. If set to YES, the
+++# list will mention the files that were used to generate the documentation.
++ # The default value is: YES.
++ 
++ SHOW_USED_FILES        = NO
++@@ -668,7 +788,8 @@
++ # output files in an output format independent way. To create the layout file
++ # that represents doxygen's defaults, run doxygen with the -l option. You can
++ # optionally specify a file name after the option, if omitted DoxygenLayout.xml
++-# will be used as the name of the layout file.
+++# will be used as the name of the layout file. See also section "Changing the
+++# layout of pages" for information.
++ #
++ # Note that if you run doxygen from a directory containing a file called
++ # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
++@@ -679,11 +800,10 @@
++ # The CITE_BIB_FILES tag can be used to specify one or more bib files containing
++ # the reference definitions. This must be a list of .bib files. The .bib
++ # extension is automatically appended if omitted. This requires the bibtex tool
++-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+++# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
++ # For LaTeX the style of the bibliography can be controlled using
++ # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
++-# search path. Do not use file names with spaces, bibtex cannot handle them. See
++-# also \cite for info how to create references.
+++# search path. See also \cite for info how to create references.
++ 
++ CITE_BIB_FILES         =
++ 
++@@ -699,7 +819,7 @@
++ QUIET                  = NO
++ 
++ # The WARNINGS tag can be used to turn on/off the warning messages that are
++-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+++# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
++ # this implies that the warnings are on.
++ #
++ # Tip: Turn warnings on while writing the documentation.
++@@ -707,7 +827,7 @@
++ 
++ WARNINGS               = YES
++ 
++-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+++# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
++ # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
++ # will automatically be disabled.
++ # The default value is: YES.
++@@ -715,34 +835,66 @@
++ WARN_IF_UNDOCUMENTED   = YES
++ 
++ # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
++-# potential errors in the documentation, such as not documenting some parameters
++-# in a documented function, or documenting parameters that don't exist or using
++-# markup commands wrongly.
+++# potential errors in the documentation, such as documenting some parameters in
+++# a documented function twice, or documenting parameters that don't exist or
+++# using markup commands wrongly.
++ # The default value is: YES.
++ 
++ WARN_IF_DOC_ERROR      = YES
++ 
+++# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete
+++# function parameter documentation. If set to NO, doxygen will accept that some
+++# parameters have no documentation without warning.
+++# The default value is: YES.
+++
+++WARN_IF_INCOMPLETE_DOC = YES
+++
++ # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
++ # are documented, but have no documentation for their parameters or return
++-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
++-# documentation, but not about the absence of documentation.
+++# value. If set to NO, doxygen will only warn about wrong parameter
+++# documentation, but not about the absence of documentation. If EXTRACT_ALL is
+++# set to YES then this flag will automatically be disabled. See also
+++# WARN_IF_INCOMPLETE_DOC
++ # The default value is: NO.
++ 
++ WARN_NO_PARAMDOC       = NO
++ 
+++# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+++# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
+++# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
+++# at the end of the doxygen process doxygen will return with a non-zero status.
+++# Possible values are: NO, YES and FAIL_ON_WARNINGS.
+++# The default value is: NO.
+++
+++WARN_AS_ERROR          = NO
+++
++ # The WARN_FORMAT tag determines the format of the warning messages that doxygen
++ # can produce. The string should contain the $file, $line, and $text tags, which
++ # will be replaced by the file and line number from which the warning originated
++ # and the warning text. Optionally the format may contain $version, which will
++ # be replaced by the version of the file (if it could be obtained via
++ # FILE_VERSION_FILTER)
+++# See also: WARN_LINE_FORMAT
++ # The default value is: $file:$line: $text.
++ 
++ WARN_FORMAT            = "$file:$line: $text"
++ 
+++# In the $text part of the WARN_FORMAT command it is possible that a reference
+++# to a more specific place is given. To make it easier to jump to this place
+++# (outside of doxygen) the user can define a custom "cut" / "paste" string.
+++# Example:
+++# WARN_LINE_FORMAT = "'vi $file +$line'"
+++# See also: WARN_FORMAT
+++# The default value is: at line $line of file $file.
+++
+++WARN_LINE_FORMAT       = "at line $line of file $file"
+++
++ # The WARN_LOGFILE tag can be used to specify a file to which warning and error
++ # messages should be written. If left blank the output is written to standard
++-# error (stderr).
+++# error (stderr). In case the file specified cannot be opened for writing the
+++# warning and error messages are written to standard error. When as file - is
+++# specified the warning and error messages are written to standard output
+++# (stdout).
++ 
++ WARN_LOGFILE           =
++ 
++@@ -753,7 +905,7 @@
++ # The INPUT tag is used to specify the files and/or directories that contain
++ # documented source files. You may enter file names like myfile.cpp or
++ # directories like /usr/src/myproject. Separate the files or directories with
++-# spaces.
+++# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
++ # Note: If this tag is empty the current directory is searched.
++ 
++ INPUT                  = @CMAKE_SOURCE_DIR@
++@@ -761,20 +913,29 @@
++ # This tag can be used to specify the character encoding of the source files
++ # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
++ # libiconv (or the iconv built into libc) for the transcoding. See the libiconv
++-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
++-# possible encodings.
+++# documentation (see:
+++# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
++ # The default value is: UTF-8.
++ 
++ INPUT_ENCODING         = UTF-8
++ 
++ # If the value of the INPUT tag contains directories, you can use the
++ # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
++-# *.h) to filter out the source-files in the directories. If left blank the
++-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
++-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
++-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
++-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
++-# *.qsf, *.as and *.js.
+++# *.h) to filter out the source-files in the directories.
+++#
+++# Note that for custom extensions or not directly supported extensions you also
+++# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+++# read by doxygen.
+++#
+++# Note the list of default checked file patterns might differ from the list of
+++# default file extension mappings.
+++#
+++# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+++# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+++# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml,
+++# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C
+++# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
+++# *.vhdl, *.ucf, *.qsf and *.ice.
++ 
++ FILE_PATTERNS          = *.c \
++                          *.cc \
++@@ -832,7 +993,14 @@
++ # Note that relative paths are relative to the directory from which doxygen is
++ # run.
++ 
++-EXCLUDE                = @CMAKE_BINARY_DIR@ @CMAKE_SOURCE_DIR@/cpu_features @CMAKE_SOURCE_DIR@/README.md @CMAKE_SOURCE_DIR@/cmake @CMAKE_SOURCE_DIR@/docs/AUTHORS_RESUBMITTING_UNDER_LGPL_LICENSE.md @CMAKE_SOURCE_DIR@/apps @CMAKE_SOURCE_DIR@/lib/*qa* @CMAKE_SOURCE_DIR@/tmpl
+++EXCLUDE                = @CMAKE_BINARY_DIR@ \
+++                         @CMAKE_SOURCE_DIR@/cpu_features \
+++                         @CMAKE_SOURCE_DIR@/README.md \
+++                         @CMAKE_SOURCE_DIR@/cmake \
+++                         @CMAKE_SOURCE_DIR@/docs/AUTHORS_RESUBMITTING_UNDER_LGPL_LICENSE.md \
+++                         @CMAKE_SOURCE_DIR@/apps \
+++                         @CMAKE_SOURCE_DIR@/lib/*qa* \
+++                         @CMAKE_SOURCE_DIR@/tmpl
++ 
++ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
++ # directories that are symbolic links (a Unix file system feature) are excluded
++@@ -854,7 +1022,7 @@
++ # (namespaces, classes, functions, etc.) that should be excluded from the
++ # output. The symbol name can be a fully qualified name, a word, or if the
++ # wildcard * is used, a substring. Examples: ANamespace, AClass,
++-# AClass::ANamespace, ANamespace::*Test
+++# ANamespace::AClass, ANamespace::*Test
++ #
++ # Note that the wildcards are matched against the file with absolute path, so to
++ # exclude all test directories use the pattern */test/*
++@@ -901,6 +1069,10 @@
++ # Note that the filter must not add or remove lines; it is applied before the
++ # code is scanned, but not when the output code is generated. If lines are added
++ # or removed, the anchors will not be placed correctly.
+++#
+++# Note that for custom extensions or not directly supported extensions you also
+++# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+++# properly processed by doxygen.
++ 
++ INPUT_FILTER           =
++ 
++@@ -910,11 +1082,15 @@
++ # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
++ # filters are used. If the FILTER_PATTERNS tag is empty or if none of the
++ # patterns match the file name, INPUT_FILTER is applied.
+++#
+++# Note that for custom extensions or not directly supported extensions you also
+++# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+++# properly processed by doxygen.
++ 
++ FILTER_PATTERNS        =
++ 
++ # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
++-# INPUT_FILTER ) will also be used to filter the input files that are used for
+++# INPUT_FILTER) will also be used to filter the input files that are used for
++ # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
++ # The default value is: NO.
++ 
++@@ -962,7 +1138,7 @@
++ STRIP_CODE_COMMENTS    = YES
++ 
++ # If the REFERENCED_BY_RELATION tag is set to YES then for each documented
++-# function all documented functions referencing it will be listed.
+++# entity all documented functions referencing it will be listed.
++ # The default value is: NO.
++ 
++ REFERENCED_BY_RELATION = NO
++@@ -974,7 +1150,7 @@
++ REFERENCES_RELATION    = NO
++ 
++ # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
++-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+++# to YES then the hyperlinks from functions in REFERENCES_RELATION and
++ # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
++ # link to the documentation.
++ # The default value is: YES.
++@@ -994,12 +1170,12 @@
++ # If the USE_HTAGS tag is set to YES then the references to source code will
++ # point to the HTML generated by the htags(1) tool instead of doxygen built-in
++ # source browser. The htags tool is part of GNU's global source tagging system
++-# (see http://www.gnu.org/software/global/global.html). You will need version
+++# (see https://www.gnu.org/software/global/global.html). You will need version
++ # 4.8.6 or higher.
++ #
++ # To use it do the following:
++ # - Install the latest version of global
++-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+++# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
++ # - Make sure the INPUT points to the root of the source tree
++ # - Run doxygen as normal
++ #
++@@ -1021,6 +1197,46 @@
++ 
++ VERBATIM_HEADERS       = YES
++ 
+++# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+++# clang parser (see:
+++# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
+++# performance. This can be particularly helpful with template rich C++ code for
+++# which doxygen's built-in parser lacks the necessary type information.
+++# Note: The availability of this option depends on whether or not doxygen was
+++# generated with the -Duse_libclang=ON option for CMake.
+++# The default value is: NO.
+++
+++CLANG_ASSISTED_PARSING = NO
+++
+++# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS
+++# tag is set to YES then doxygen will add the directory of each input to the
+++# include path.
+++# The default value is: YES.
+++# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+++
+++CLANG_ADD_INC_PATHS    = YES
+++
+++# If clang assisted parsing is enabled you can provide the compiler with command
+++# line options that you would normally use when invoking the compiler. Note that
+++# the include paths will already be set by doxygen for the files and directories
+++# specified with INPUT and INCLUDE_PATH.
+++# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+++
+++CLANG_OPTIONS          =
+++
+++# If clang assisted parsing is enabled you can provide the clang parser with the
+++# path to the directory containing a file called compile_commands.json. This
+++# file is the compilation database (see:
+++# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
+++# options used when the source files were built. This is equivalent to
+++# specifying the -p option to a clang tool, such as clang-check. These options
+++# will then be passed to the parser. Any options specified with CLANG_OPTIONS
+++# will be added as well.
+++# Note: The availability of this option depends on whether or not doxygen was
+++# generated with the -Duse_libclang=ON option for CMake.
+++
+++CLANG_DATABASE_PATH    =
+++
++ #---------------------------------------------------------------------------
++ # Configuration options related to the alphabetical class index
++ #---------------------------------------------------------------------------
++@@ -1032,13 +1248,6 @@
++ 
++ ALPHABETICAL_INDEX     = YES
++ 
++-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
++-# which the alphabetical index list will be split.
++-# Minimum value: 1, maximum value: 20, default value: 5.
++-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
++-
++-COLS_IN_ALPHA_INDEX    = 5
++-
++ # In case all classes in a project start with a common prefix, all classes will
++ # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
++ # can be used to specify a prefix (or a list of prefixes) that should be ignored
++@@ -1051,7 +1260,7 @@
++ # Configuration options related to the HTML output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+++# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
++ # The default value is: YES.
++ 
++ GENERATE_HTML          = YES
++@@ -1099,7 +1308,7 @@
++ # that doxygen normally uses.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++-HTML_FOOTER            = ""
+++HTML_FOOTER            =
++ 
++ # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
++ # sheet that is used by each HTML page. It can be used to fine-tune the look of
++@@ -1113,13 +1322,15 @@
++ 
++ HTML_STYLESHEET        =
++ 
++-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
++-# defined cascading style sheet that is included after the standard style sheets
+++# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+++# cascading style sheets that are included after the standard style sheets
++ # created by doxygen. Using this option one can overrule certain style aspects.
++ # This is preferred over using HTML_STYLESHEET since it does not replace the
++ # standard style sheet and is therefore more robust against future updates.
++-# Doxygen will copy the style sheet file to the output directory. For an example
++-# see the documentation.
+++# Doxygen will copy the style sheet files to the output directory.
+++# Note: The order of the extra style sheet files is of importance (e.g. the last
+++# style sheet in the list overrules the setting of the previous ones in the
+++# list). For an example see the documentation.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++ HTML_EXTRA_STYLESHEET  =
++@@ -1135,9 +1346,9 @@
++ HTML_EXTRA_FILES       =
++ 
++ # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
++-# will adjust the colors in the stylesheet and background images according to
++-# this color. Hue is specified as an angle on a colorwheel, see
++-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+++# will adjust the colors in the style sheet and background images according to
+++# this color. Hue is specified as an angle on a color-wheel, see
+++# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
++ # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
++ # purple, and 360 is red again.
++ # Minimum value: 0, maximum value: 359, default value: 220.
++@@ -1146,7 +1357,7 @@
++ HTML_COLORSTYLE_HUE    = 220
++ 
++ # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
++-# in the HTML output. For a value of 0 the output will use grayscales only. A
+++# in the HTML output. For a value of 0 the output will use gray-scales only. A
++ # value of 255 will produce the most vivid colors.
++ # Minimum value: 0, maximum value: 255, default value: 100.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++@@ -1166,12 +1377,24 @@
++ 
++ # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
++ # page will contain the date and time when the page was generated. Setting this
++-# to NO can help when comparing the output of multiple runs.
++-# The default value is: YES.
+++# to YES can help to show when doxygen was last run and thus if the
+++# documentation is up to date.
+++# The default value is: NO.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++ HTML_TIMESTAMP         = NO
++ 
+++# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
+++# documentation will contain a main index with vertical navigation menus that
+++# are dynamically created via JavaScript. If disabled, the navigation index will
+++# consists of multiple levels of tabs that are statically embedded in every HTML
+++# page. Disable this option to support browsers that do not have JavaScript,
+++# like the Qt help browser.
+++# The default value is: YES.
+++# This tag requires that the tag GENERATE_HTML is set to YES.
+++
+++HTML_DYNAMIC_MENUS     = YES
+++
++ # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
++ # documentation will contain sections that can be hidden and shown after the
++ # page has loaded.
++@@ -1195,13 +1418,14 @@
++ 
++ # If the GENERATE_DOCSET tag is set to YES, additional index files will be
++ # generated that can be used as input for Apple's Xcode 3 integrated development
++-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
++-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
++-# Makefile in the HTML output directory. Running make will produce the docset in
++-# that directory and running make install will install the docset in
+++# environment (see:
+++# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
+++# create a documentation set, doxygen will generate a Makefile in the HTML
+++# output directory. Running make will produce the docset in that directory and
+++# running make install will install the docset in
++ # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
++-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
++-# for more information.
+++# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
+++# genXcode/_index.html for more information.
++ # The default value is: NO.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++@@ -1215,6 +1439,13 @@
++ 
++ DOCSET_FEEDNAME        = "Doxygen generated docs"
++ 
+++# This tag determines the URL of the docset feed. A documentation feed provides
+++# an umbrella under which multiple documentation sets from a single provider
+++# (such as a company or product suite) can be grouped.
+++# This tag requires that the tag GENERATE_DOCSET is set to YES.
+++
+++DOCSET_FEEDURL         =
+++
++ # This tag specifies a string that should uniquely identify the documentation
++ # set bundle. This should be a reverse domain-name style string, e.g.
++ # com.mycompany.MyDocSet. Doxygen will append .docset to the name.
++@@ -1240,8 +1471,12 @@
++ # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
++ # additional HTML index files: index.hhp, index.hhc, and index.hhk. The
++ # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
++-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
++-# Windows.
+++# on Windows. In the beginning of 2021 Microsoft took the original page, with
+++# a.o. the download links, offline the HTML help workshop was already many years
+++# in maintenance mode). You can download the HTML help workshop from the web
+++# archives at Installation executable (see:
+++# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
+++# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
++ #
++ # The HTML Help Workshop contains a compiler that can convert all HTML output
++ # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
++@@ -1263,28 +1498,29 @@
++ CHM_FILE               =
++ 
++ # The HHC_LOCATION tag can be used to specify the location (absolute path
++-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+++# including file name) of the HTML help compiler (hhc.exe). If non-empty,
++ # doxygen will try to run the HTML help compiler on the generated index.hhp.
++ # The file has to be specified with full path.
++ # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
++ 
++ HHC_LOCATION           =
++ 
++-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
++-# YES) or that it should be included in the master .chm file ( NO).
+++# The GENERATE_CHI flag controls if a separate .chi index file is generated
+++# (YES) or that it should be included in the main .chm file (NO).
++ # The default value is: NO.
++ # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
++ 
++ GENERATE_CHI           = NO
++ 
++-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+++# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
++ # and project file content.
++ # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
++ 
++ CHM_INDEX_ENCODING     =
++ 
++-# The BINARY_TOC flag controls whether a binary table of contents is generated (
++-# YES) or a normal table of contents ( NO) in the .chm file.
+++# The BINARY_TOC flag controls whether a binary table of contents is generated
+++# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+++# enables the Previous and Next buttons.
++ # The default value is: NO.
++ # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
++ 
++@@ -1315,7 +1551,8 @@
++ 
++ # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
++ # Project output. For more information please see Qt Help Project / Namespace
++-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+++# (see:
+++# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
++ # The default value is: org.doxygen.Project.
++ # This tag requires that the tag GENERATE_QHP is set to YES.
++ 
++@@ -1323,8 +1560,8 @@
++ 
++ # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
++ # Help Project output. For more information please see Qt Help Project / Virtual
++-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
++-# folders).
+++# Folders (see:
+++# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
++ # The default value is: doc.
++ # This tag requires that the tag GENERATE_QHP is set to YES.
++ 
++@@ -1332,30 +1569,30 @@
++ 
++ # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
++ # filter to add. For more information please see Qt Help Project / Custom
++-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
++-# filters).
+++# Filters (see:
+++# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
++ # This tag requires that the tag GENERATE_QHP is set to YES.
++ 
++ QHP_CUST_FILTER_NAME   =
++ 
++ # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
++ # custom filter to add. For more information please see Qt Help Project / Custom
++-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
++-# filters).
+++# Filters (see:
+++# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
++ # This tag requires that the tag GENERATE_QHP is set to YES.
++ 
++ QHP_CUST_FILTER_ATTRS  =
++ 
++ # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
++ # project's filter section matches. Qt Help Project / Filter Attributes (see:
++-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+++# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
++ # This tag requires that the tag GENERATE_QHP is set to YES.
++ 
++ QHP_SECT_FILTER_ATTRS  =
++ 
++-# The QHG_LOCATION tag can be used to specify the location of Qt's
++-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
++-# generated .qhp file.
+++# The QHG_LOCATION tag can be used to specify the location (absolute path
+++# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to
+++# run qhelpgenerator on the generated .qhp file.
++ # This tag requires that the tag GENERATE_QHP is set to YES.
++ 
++ QHG_LOCATION           =
++@@ -1397,17 +1634,29 @@
++ # index structure (just like the one that is generated for HTML Help). For this
++ # to work a browser that supports JavaScript, DHTML, CSS and frames is required
++ # (i.e. any modern browser). Windows users are probably better off using the
++-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
++-# further fine-tune the look of the index. As an example, the default style
++-# sheet generated by doxygen has an example that shows how to put an image at
++-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
++-# the same information as the tab index, you could consider setting
++-# DISABLE_INDEX to YES when enabling this option.
+++# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
+++# further fine tune the look of the index (see "Fine-tuning the output"). As an
+++# example, the default style sheet generated by doxygen has an example that
+++# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
+++# Since the tree basically has the same information as the tab index, you could
+++# consider setting DISABLE_INDEX to YES when enabling this option.
++ # The default value is: NO.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++ GENERATE_TREEVIEW      = YES
++ 
+++# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
+++# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
+++# area (value NO) or if it should extend to the full height of the window (value
+++# YES). Setting this to YES gives a layout similar to
+++# https://docs.readthedocs.io with more room for contents, but less room for the
+++# project logo, title, and description. If either GENERATE_TREEVIEW or
+++# DISABLE_INDEX is set to NO, this option has no effect.
+++# The default value is: NO.
+++# This tag requires that the tag GENERATE_HTML is set to YES.
+++
+++FULL_SIDEBAR           = NO
+++
++ # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
++ # doxygen will group on one line in the generated HTML documentation.
++ #
++@@ -1425,13 +1674,31 @@
++ 
++ TREEVIEW_WIDTH         = 250
++ 
++-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+++# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
++ # external symbols imported via tag files in a separate window.
++ # The default value is: NO.
++ # This tag requires that the tag GENERATE_HTML is set to YES.
++ 
++ EXT_LINKS_IN_WINDOW    = NO
++ 
+++# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email
+++# addresses.
+++# The default value is: YES.
+++# This tag requires that the tag GENERATE_HTML is set to YES.
+++
+++OBFUSCATE_EMAILS       = YES
+++
+++# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
+++# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
+++# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
+++# the HTML output. These images will generally look nicer at scaled resolutions.
+++# Possible values are: png (the default) and svg (looks nicer but requires the
+++# pdf2svg or inkscape tool).
+++# The default value is: png.
+++# This tag requires that the tag GENERATE_HTML is set to YES.
+++
+++HTML_FORMULA_FORMAT    = png
+++
++ # Use this tag to change the font size of LaTeX formulas included as images in
++ # the HTML documentation. When you change the font size after a successful
++ # doxygen run you need to manually remove any form_*.png images from the HTML
++@@ -1441,7 +1708,7 @@
++ 
++ FORMULA_FONTSIZE       = 10
++ 
++-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+++# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
++ # generated for formulas are transparent PNGs. Transparent PNGs are not
++ # supported properly for IE 6.0, but are supported on all modern browsers.
++ #
++@@ -1452,9 +1719,15 @@
++ 
++ FORMULA_TRANSPARENT    = YES
++ 
+++# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
+++# to create new LaTeX commands to be used in formulas as building blocks. See
+++# the section "Including formulas" for details.
+++
+++FORMULA_MACROFILE      =
+++
++ # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
++-# http://www.mathjax.org) which uses client side Javascript for the rendering
++-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+++# https://www.mathjax.org) which uses client side JavaScript for the rendering
+++# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
++ # installed or if you want to formulas look prettier in the HTML output. When
++ # enabled you may also need to install MathJax separately and configure the path
++ # to it using the MATHJAX_RELPATH option.
++@@ -1463,11 +1736,29 @@
++ 
++ USE_MATHJAX            = NO
++ 
+++# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
+++# Note that the different versions of MathJax have different requirements with
+++# regards to the different settings, so it is possible that also other MathJax
+++# settings have to be changed when switching between the different MathJax
+++# versions.
+++# Possible values are: MathJax_2 and MathJax_3.
+++# The default value is: MathJax_2.
+++# This tag requires that the tag USE_MATHJAX is set to YES.
+++
+++MATHJAX_VERSION        = MathJax_2
+++
++ # When MathJax is enabled you can set the default output format to be used for
++-# the MathJax output. See the MathJax site (see:
++-# http://docs.mathjax.org/en/latest/output.html) for more details.
+++# the MathJax output. For more details about the output format see MathJax
+++# version 2 (see:
+++# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
+++# (see:
+++# http://docs.mathjax.org/en/latest/web/components/output.html).
++ # Possible values are: HTML-CSS (which is slower, but has the best
++-# compatibility), NativeMML (i.e. MathML) and SVG.
+++# compatibility. This is the name for Mathjax version 2, for MathJax version 3
+++# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
+++# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
+++# is the name for Mathjax version 3, for MathJax version 2 this will be
+++# translated into HTML-CSS) and SVG.
++ # The default value is: HTML-CSS.
++ # This tag requires that the tag USE_MATHJAX is set to YES.
++ 
++@@ -1480,22 +1771,29 @@
++ # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
++ # Content Delivery Network so you can quickly see the result without installing
++ # MathJax. However, it is strongly recommended to install a local copy of
++-# MathJax from http://www.mathjax.org before deployment.
++-# The default value is: http://cdn.mathjax.org/mathjax/latest.
+++# MathJax from https://www.mathjax.org before deployment. The default value is:
+++# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
+++# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
++ # This tag requires that the tag USE_MATHJAX is set to YES.
++ 
++ MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
++ 
++ # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
++ # extension names that should be enabled during MathJax rendering. For example
+++# for MathJax version 2 (see
+++# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
++ # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+++# For example for MathJax version 3 (see
+++# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
+++# MATHJAX_EXTENSIONS = ams
++ # This tag requires that the tag USE_MATHJAX is set to YES.
++ 
++ MATHJAX_EXTENSIONS     =
++ 
++ # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
++ # of code that will be used on startup of the MathJax code. See the MathJax site
++-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+++# (see:
+++# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
++ # example see the documentation.
++ # This tag requires that the tag USE_MATHJAX is set to YES.
++ 
++@@ -1523,12 +1821,12 @@
++ SEARCHENGINE           = YES
++ 
++ # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
++-# implemented using a web server instead of a web client using Javascript. There
++-# are two flavours of web server based searching depending on the
++-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
++-# searching and an index file used by the script. When EXTERNAL_SEARCH is
++-# enabled the indexing and searching needs to be provided by external tools. See
++-# the section "External Indexing and Searching" for details.
+++# implemented using a web server instead of a web client using JavaScript. There
+++# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+++# setting. When disabled, doxygen will generate a PHP script for searching and
+++# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+++# and searching needs to be provided by external tools. See the section
+++# "External Indexing and Searching" for details.
++ # The default value is: NO.
++ # This tag requires that the tag SEARCHENGINE is set to YES.
++ 
++@@ -1540,9 +1838,10 @@
++ # external search engine pointed to by the SEARCHENGINE_URL option to obtain the
++ # search results.
++ #
++-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+++# Doxygen ships with an example indexer (doxyindexer) and search engine
++ # (doxysearch.cgi) which are based on the open source search engine library
++-# Xapian (see: http://xapian.org/).
+++# Xapian (see:
+++# https://xapian.org/).
++ #
++ # See the section "External Indexing and Searching" for details.
++ # The default value is: NO.
++@@ -1553,10 +1852,11 @@
++ # The SEARCHENGINE_URL should point to a search engine hosted by a web server
++ # which will return the search results when EXTERNAL_SEARCH is enabled.
++ #
++-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+++# Doxygen ships with an example indexer (doxyindexer) and search engine
++ # (doxysearch.cgi) which are based on the open source search engine library
++-# Xapian (see: http://xapian.org/). See the section "External Indexing and
++-# Searching" for details.
+++# Xapian (see:
+++# https://xapian.org/). See the section "External Indexing and Searching" for
+++# details.
++ # This tag requires that the tag SEARCHENGINE is set to YES.
++ 
++ SEARCHENGINE_URL       =
++@@ -1591,7 +1891,7 @@
++ # Configuration options related to the LaTeX output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+++# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
++ # The default value is: YES.
++ 
++ GENERATE_LATEX         = NO
++@@ -1607,22 +1907,36 @@
++ # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
++ # invoked.
++ #
++-# Note that when enabling USE_PDFLATEX this option is only used for generating
++-# bitmaps for formulas in the HTML output, but not in the Makefile that is
++-# written to the output directory.
++-# The default file is: latex.
+++# Note that when not enabling USE_PDFLATEX the default is latex when enabling
+++# USE_PDFLATEX the default is pdflatex and when in the later case latex is
+++# chosen this is overwritten by pdflatex. For specific output languages the
+++# default can have been set differently, this depends on the implementation of
+++# the output language.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++ LATEX_CMD_NAME         = latex
++ 
++ # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
++ # index for LaTeX.
+++# Note: This tag is used in the Makefile / make.bat.
+++# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
+++# (.tex).
++ # The default file is: makeindex.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++ MAKEINDEX_CMD_NAME     = makeindex
++ 
++-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+++# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
+++# generate index for LaTeX. In case there is no backslash (\) as first character
+++# it will be automatically added in the LaTeX code.
+++# Note: This tag is used in the generated output file (.tex).
+++# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
+++# The default value is: makeindex.
+++# This tag requires that the tag GENERATE_LATEX is set to YES.
+++
+++LATEX_MAKEINDEX_CMD    = makeindex
+++
+++# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
++ # documents. This may be useful for small projects and may help to save some
++ # trees in general.
++ # The default value is: NO.
++@@ -1640,39 +1954,57 @@
++ PAPER_TYPE             = a4
++ 
++ # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
++-# that should be included in the LaTeX output. To get the times font for
++-# instance you can specify
++-# EXTRA_PACKAGES=times
+++# that should be included in the LaTeX output. The package can be specified just
+++# by its name or with the correct syntax as to be used with the LaTeX
+++# \usepackage command. To get the times font for instance you can specify :
+++# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+++# To use the option intlimits with the amsmath package you can specify:
+++# EXTRA_PACKAGES=[intlimits]{amsmath}
++ # If left blank no extra packages will be included.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++ EXTRA_PACKAGES         =
++ 
++-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
++-# generated LaTeX document. The header should contain everything until the first
++-# chapter. If it is left blank doxygen will generate a standard header. See
++-# section "Doxygen usage" for information on how to let doxygen write the
++-# default header to a separate file.
++-#
++-# Note: Only use a user-defined header if you know what you are doing! The
++-# following commands have a special meaning inside the header: $title,
++-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
++-# replace them by respectively the title of the page, the current date and time,
++-# only the current date, the version number of doxygen, the project name (see
++-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+++# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
+++# the generated LaTeX document. The header should contain everything until the
+++# first chapter. If it is left blank doxygen will generate a standard header. It
+++# is highly recommended to start with a default header using
+++# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
+++# and then modify the file new_header.tex. See also section "Doxygen usage" for
+++# information on how to generate the default header that doxygen normally uses.
+++#
+++# Note: Only use a user-defined header if you know what you are doing!
+++# Note: The header is subject to change so you typically have to regenerate the
+++# default header when upgrading to a newer version of doxygen. The following
+++# commands have a special meaning inside the header (and footer): For a
+++# description of the possible markers and block names see the documentation.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++ LATEX_HEADER           =
++ 
++-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
++-# generated LaTeX document. The footer should contain everything after the last
++-# chapter. If it is left blank doxygen will generate a standard footer.
++-#
++-# Note: Only use a user-defined footer if you know what you are doing!
+++# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
+++# the generated LaTeX document. The footer should contain everything after the
+++# last chapter. If it is left blank doxygen will generate a standard footer. See
+++# LATEX_HEADER for more information on how to generate a default footer and what
+++# special commands can be used inside the footer. See also section "Doxygen
+++# usage" for information on how to generate the default footer that doxygen
+++# normally uses. Note: Only use a user-defined footer if you know what you are
+++# doing!
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++ LATEX_FOOTER           =
++ 
+++# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+++# LaTeX style sheets that are included after the standard style sheets created
+++# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+++# will copy the style sheet files to the output directory.
+++# Note: The order of the extra style sheet files is of importance (e.g. the last
+++# style sheet in the list overrules the setting of the previous ones in the
+++# list).
+++# This tag requires that the tag GENERATE_LATEX is set to YES.
+++
+++LATEX_EXTRA_STYLESHEET =
+++
++ # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
++ # other source files which should be copied to the LATEX_OUTPUT output
++ # directory. Note that the files will be copied as-is; there are no commands or
++@@ -1690,9 +2022,11 @@
++ 
++ PDF_HYPERLINKS         = YES
++ 
++-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
++-# the PDF file directly from the LaTeX files. Set this option to YES to get a
++-# higher quality PDF documentation.
+++# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
+++# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
+++# files. Set this option to YES, to get a higher quality PDF documentation.
+++#
+++# See also section LATEX_CMD_NAME for selecting the engine.
++ # The default value is: YES.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++@@ -1700,8 +2034,7 @@
++ 
++ # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
++ # command to the generated LaTeX files. This will instruct LaTeX to keep running
++-# if errors occur, instead of asking the user for help. This option is also used
++-# when generating formulas in HTML.
+++# if errors occur, instead of asking the user for help.
++ # The default value is: NO.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++@@ -1714,29 +2047,35 @@
++ 
++ LATEX_HIDE_INDICES     = NO
++ 
++-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
++-# code with syntax highlighting in the LaTeX output.
++-#
++-# Note that which sources are shown also depends on other settings such as
++-# SOURCE_BROWSER.
++-# The default value is: NO.
++-# This tag requires that the tag GENERATE_LATEX is set to YES.
++-
++-LATEX_SOURCE_CODE      = NO
++-
++ # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
++ # bibliography, e.g. plainnat, or ieeetr. See
++-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+++# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
++ # The default value is: plain.
++ # This tag requires that the tag GENERATE_LATEX is set to YES.
++ 
++ LATEX_BIB_STYLE        = plain
++ 
+++# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+++# page will contain the date and time when the page was generated. Setting this
+++# to NO can help when comparing the output of multiple runs.
+++# The default value is: NO.
+++# This tag requires that the tag GENERATE_LATEX is set to YES.
+++
+++LATEX_TIMESTAMP        = NO
+++
+++# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
+++# path from which the emoji images will be read. If a relative path is entered,
+++# it will be relative to the LATEX_OUTPUT directory. If left blank the
+++# LATEX_OUTPUT directory will be used.
+++# This tag requires that the tag GENERATE_LATEX is set to YES.
+++
+++LATEX_EMOJI_DIRECTORY  =
+++
++ #---------------------------------------------------------------------------
++ # Configuration options related to the RTF output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+++# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
++ # RTF output is optimized for Word 97 and may not look too pretty with other RTF
++ # readers/editors.
++ # The default value is: NO.
++@@ -1751,7 +2090,7 @@
++ 
++ RTF_OUTPUT             = rtf
++ 
++-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+++# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
++ # documents. This may be useful for small projects and may help to save some
++ # trees in general.
++ # The default value is: NO.
++@@ -1771,9 +2110,9 @@
++ 
++ RTF_HYPERLINKS         = NO
++ 
++-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
++-# file, i.e. a series of assignments. You only have to provide replacements,
++-# missing definitions are set to their default value.
+++# Load stylesheet definitions from file. Syntax is similar to doxygen's
+++# configuration file, i.e. a series of assignments. You only have to provide
+++# replacements, missing definitions are set to their default value.
++ #
++ # See also section "Doxygen usage" for information on how to generate the
++ # default style sheet that doxygen normally uses.
++@@ -1782,8 +2121,8 @@
++ RTF_STYLESHEET_FILE    =
++ 
++ # Set optional variables used in the generation of an RTF document. Syntax is
++-# similar to doxygen's config file. A template extensions file can be generated
++-# using doxygen -e rtf extensionFile.
+++# similar to doxygen's configuration file. A template extensions file can be
+++# generated using doxygen -e rtf extensionFile.
++ # This tag requires that the tag GENERATE_RTF is set to YES.
++ 
++ RTF_EXTENSIONS_FILE    =
++@@ -1792,7 +2131,7 @@
++ # Configuration options related to the man page output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+++# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
++ # classes and files.
++ # The default value is: NO.
++ 
++@@ -1816,6 +2155,13 @@
++ 
++ MAN_EXTENSION          = .3
++ 
+++# The MAN_SUBDIR tag determines the name of the directory created within
+++# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+++# MAN_EXTENSION with the initial . removed.
+++# This tag requires that the tag GENERATE_MAN is set to YES.
+++
+++MAN_SUBDIR             =
+++
++ # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
++ # will generate one additional man file for each entity documented in the real
++ # man page(s). These additional files only source the real man page, but without
++@@ -1829,7 +2175,7 @@
++ # Configuration options related to the XML output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+++# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
++ # captures the structure of the code including all documentation.
++ # The default value is: NO.
++ 
++@@ -1843,19 +2189,7 @@
++ 
++ XML_OUTPUT             = xml
++ 
++-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
++-# validating XML parser to check the syntax of the XML files.
++-# This tag requires that the tag GENERATE_XML is set to YES.
++-
++-XML_SCHEMA             =
++-
++-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
++-# validating XML parser to check the syntax of the XML files.
++-# This tag requires that the tag GENERATE_XML is set to YES.
++-
++-XML_DTD                =
++-
++-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+++# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
++ # listings (including syntax highlighting and cross-referencing information) to
++ # the XML output. Note that enabling this will significantly increase the size
++ # of the XML output.
++@@ -1864,11 +2198,18 @@
++ 
++ XML_PROGRAMLISTING     = YES
++ 
+++# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
+++# namespace members in file scope as well, matching the HTML output.
+++# The default value is: NO.
+++# This tag requires that the tag GENERATE_XML is set to YES.
+++
+++XML_NS_MEMB_FILE_SCOPE = NO
+++
++ #---------------------------------------------------------------------------
++ # Configuration options related to the DOCBOOK output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+++# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
++ # that can be used to generate PDF.
++ # The default value is: NO.
++ 
++@@ -1886,10 +2227,10 @@
++ # Configuration options for the AutoGen Definitions output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
++-# Definitions (see http://autogen.sf.net) file that captures the structure of
++-# the code including all documentation. Note that this feature is still
++-# experimental and incomplete at the moment.
+++# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+++# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
+++# the structure of the code including all documentation. Note that this feature
+++# is still experimental and incomplete at the moment.
++ # The default value is: NO.
++ 
++ GENERATE_AUTOGEN_DEF   = NO
++@@ -1898,7 +2239,7 @@
++ # Configuration options related to the Perl module output
++ #---------------------------------------------------------------------------
++ 
++-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+++# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
++ # file that captures the structure of the code including all documentation.
++ #
++ # Note that this feature is still experimental and incomplete at the moment.
++@@ -1906,7 +2247,7 @@
++ 
++ GENERATE_PERLMOD       = NO
++ 
++-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+++# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
++ # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
++ # output from the Perl module output.
++ # The default value is: NO.
++@@ -1914,9 +2255,9 @@
++ 
++ PERLMOD_LATEX          = NO
++ 
++-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+++# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
++ # formatted so it can be parsed by a human reader. This is useful if you want to
++-# understand what is going on. On the other hand, if this tag is set to NO the
+++# understand what is going on. On the other hand, if this tag is set to NO, the
++ # size of the Perl module output will be much smaller and Perl will parse it
++ # just the same.
++ # The default value is: YES.
++@@ -1936,14 +2277,14 @@
++ # Configuration options related to the preprocessor
++ #---------------------------------------------------------------------------
++ 
++-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+++# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
++ # C-preprocessor directives found in the sources and include files.
++ # The default value is: YES.
++ 
++ ENABLE_PREPROCESSING   = YES
++ 
++-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
++-# in the source code. If set to NO only conditional compilation will be
+++# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+++# in the source code. If set to NO, only conditional compilation will be
++ # performed. Macro expansion can be done in a controlled way by setting
++ # EXPAND_ONLY_PREDEF to YES.
++ # The default value is: NO.
++@@ -1959,7 +2300,7 @@
++ 
++ EXPAND_ONLY_PREDEF     = NO
++ 
++-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+++# If the SEARCH_INCLUDES tag is set to YES, the include files in the
++ # INCLUDE_PATH will be searched if a #include is found.
++ # The default value is: YES.
++ # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
++@@ -1968,7 +2309,8 @@
++ 
++ # The INCLUDE_PATH tag can be used to specify one or more directories that
++ # contain include files that are not input files but should be processed by the
++-# preprocessor.
+++# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of
+++# RECURSIVE has no effect here.
++ # This tag requires that the tag SEARCH_INCLUDES is set to YES.
++ 
++ INCLUDE_PATH           =
++@@ -2008,9 +2350,9 @@
++ EXPAND_AS_DEFINED      =
++ 
++ # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
++-# remove all references to function-like macros that are alone on a line, have an
++-# all uppercase name, and do not end with a semicolon. Such function macros are
++-# typically used for boiler-plate code, and will confuse the parser if not
+++# remove all references to function-like macros that are alone on a line, have
+++# an all uppercase name, and do not end with a semicolon. Such function macros
+++# are typically used for boiler-plate code, and will confuse the parser if not
++ # removed.
++ # The default value is: YES.
++ # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
++@@ -2030,7 +2372,7 @@
++ # where loc1 and loc2 can be relative or absolute paths or URLs. See the
++ # section "Linking to external documentation" for more information about the use
++ # of tag files.
++-# Note: Each tag file must have an unique name (where the name does NOT include
+++# Note: Each tag file must have a unique name (where the name does NOT include
++ # the path). If a tag file is not located in the directory in which doxygen is
++ # run, you must also specify the path to the tagfile here.
++ 
++@@ -2042,54 +2384,31 @@
++ 
++ GENERATE_TAGFILE       =
++ 
++-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
++-# class index. If set to NO only the inherited external classes will be listed.
+++# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+++# the class index. If set to NO, only the inherited external classes will be
+++# listed.
++ # The default value is: NO.
++ 
++ ALLEXTERNALS           = NO
++ 
++-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
++-# the modules index. If set to NO, only the current project's groups will be
+++# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+++# in the modules index. If set to NO, only the current project's groups will be
++ # listed.
++ # The default value is: YES.
++ 
++ EXTERNAL_GROUPS        = YES
++ 
++-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+++# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
++ # the related pages index. If set to NO, only the current project's pages will
++ # be listed.
++ # The default value is: YES.
++ 
++ EXTERNAL_PAGES         = YES
++ 
++-# The PERL_PATH should be the absolute path and name of the perl script
++-# interpreter (i.e. the result of 'which perl').
++-# The default file (with absolute path) is: /usr/bin/perl.
++-
++-PERL_PATH              = /usr/bin/perl
++-
++ #---------------------------------------------------------------------------
++ # Configuration options related to the dot tool
++ #---------------------------------------------------------------------------
++ 
++-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
++-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
++-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
++-# disabled, but it is recommended to install and use dot, since it yields more
++-# powerful graphs.
++-# The default value is: YES.
++-
++-CLASS_DIAGRAMS         = NO
++-
++-# You can define message sequence charts within doxygen comments using the \msc
++-# command. Doxygen will then run the mscgen tool (see:
++-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
++-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
++-# the mscgen tool resides. If left empty the tool is assumed to be found in the
++-# default search path.
++-
++-MSCGEN_PATH            =
++-
++ # You can include diagrams made with dia in doxygen documentation. Doxygen will
++ # then run dia to produce the diagram and insert it in the documentation. The
++ # DIA_PATH tag allows you to specify the directory where the dia binary resides.
++@@ -2097,7 +2416,7 @@
++ 
++ DIA_PATH               =
++ 
++-# If set to YES, the inheritance and collaboration graphs will hide inheritance
+++# If set to YES the inheritance and collaboration graphs will hide inheritance
++ # and usage relations if the target is undocumented or is not a class.
++ # The default value is: YES.
++ 
++@@ -2108,7 +2427,7 @@
++ # http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
++ # Bell Labs. The other options in this section have no effect if this option is
++ # set to NO
++-# The default value is: NO.
+++# The default value is: YES.
++ 
++ HAVE_DOT               = NO
++ 
++@@ -2122,7 +2441,7 @@
++ 
++ DOT_NUM_THREADS        = 0
++ 
++-# When you want a differently looking font n the dot files that doxygen
+++# When you want a differently looking font in the dot files that doxygen
++ # generates you can specify the font name using DOT_FONTNAME. You need to make
++ # sure dot is able to find the font, which can be done by putting it in a
++ # standard location or by setting the DOTFONTPATH environment variable or by
++@@ -2146,13 +2465,16 @@
++ 
++ DOT_FONTPATH           =
++ 
++-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
++-# each documented class showing the direct and indirect inheritance relations.
++-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+++# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a
+++# graph for each documented class showing the direct and indirect inheritance
+++# relations. In case HAVE_DOT is set as well dot will be used to draw the graph,
+++# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set
+++# to TEXT the direct and indirect inheritance relations will be shown as texts /
+++# links.
+++# Possible values are: NO, YES, TEXT and GRAPH.
++ # The default value is: YES.
++-# This tag requires that the tag HAVE_DOT is set to YES.
++ 
++-CLASS_GRAPH            = YES
+++CLASS_GRAPH            = TEXT
++ 
++ # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
++ # graph for each documented class showing the direct and indirect implementation
++@@ -2164,13 +2486,14 @@
++ COLLABORATION_GRAPH    = YES
++ 
++ # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
++-# groups, showing the direct groups dependencies.
+++# groups, showing the direct groups dependencies. See also the chapter Grouping
+++# in the manual.
++ # The default value is: YES.
++ # This tag requires that the tag HAVE_DOT is set to YES.
++ 
++ GROUP_GRAPHS           = YES
++ 
++-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+++# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
++ # collaboration diagrams in a style similar to the OMG's Unified Modeling
++ # Language.
++ # The default value is: NO.
++@@ -2187,10 +2510,32 @@
++ # but if the number exceeds 15, the total amount of fields shown is limited to
++ # 10.
++ # Minimum value: 0, maximum value: 100, default value: 10.
++-# This tag requires that the tag HAVE_DOT is set to YES.
+++# This tag requires that the tag UML_LOOK is set to YES.
++ 
++ UML_LIMIT_NUM_FIELDS   = 10
++ 
+++# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
+++# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
+++# tag is set to YES, doxygen will add type and arguments for attributes and
+++# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen
+++# will not generate fields with class member information in the UML graphs. The
+++# class diagrams will look similar to the default class diagrams but using UML
+++# notation for the relationships.
+++# Possible values are: NO, YES and NONE.
+++# The default value is: NO.
+++# This tag requires that the tag UML_LOOK is set to YES.
+++
+++DOT_UML_DETAILS        = NO
+++
+++# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
+++# to display on a single line. If the actual line length exceeds this threshold
+++# significantly it will wrapped across multiple lines. Some heuristics are apply
+++# to avoid ugly line breaks.
+++# Minimum value: 0, maximum value: 1000, default value: 17.
+++# This tag requires that the tag HAVE_DOT is set to YES.
+++
+++DOT_WRAP_THRESHOLD     = 17
+++
++ # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
++ # collaboration graphs will show the relations between templates and their
++ # instances.
++@@ -2222,7 +2567,8 @@
++ #
++ # Note that enabling this option will significantly increase the time of a run.
++ # So in most cases it will be better to enable call graphs for selected
++-# functions only using the \callgraph command.
+++# functions only using the \callgraph command. Disabling a call graph can be
+++# accomplished by means of the command \hidecallgraph.
++ # The default value is: NO.
++ # This tag requires that the tag HAVE_DOT is set to YES.
++ 
++@@ -2233,7 +2579,8 @@
++ #
++ # Note that enabling this option will significantly increase the time of a run.
++ # So in most cases it will be better to enable caller graphs for selected
++-# functions only using the \callergraph command.
+++# functions only using the \callergraph command. Disabling a caller graph can be
+++# accomplished by means of the command \hidecallergraph.
++ # The default value is: NO.
++ # This tag requires that the tag HAVE_DOT is set to YES.
++ 
++@@ -2255,12 +2602,24 @@
++ 
++ DIRECTORY_GRAPH        = YES
++ 
+++# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
+++# of child directories generated in directory dependency graphs by dot.
+++# Minimum value: 1, maximum value: 25, default value: 1.
+++# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
+++
+++DIR_GRAPH_MAX_DEPTH    = 1
+++
++ # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
++-# generated by dot.
+++# generated by dot. For an explanation of the image formats see the section
+++# output formats in the documentation of the dot tool (Graphviz (see:
+++# http://www.graphviz.org/)).
++ # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
++ # to make the SVG files visible in IE 9+ (other browsers do not have this
++ # requirement).
++-# Possible values are: png, jpg, gif and svg.
+++# Possible values are: png, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd,
+++# gif, gif:cairo, gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd,
+++# png:cairo, png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+++# png:gdiplus:gdiplus.
++ # The default value is: png.
++ # This tag requires that the tag HAVE_DOT is set to YES.
++ 
++@@ -2303,6 +2662,24 @@
++ 
++ DIAFILE_DIRS           =
++ 
+++# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+++# path where java can find the plantuml.jar file or to the filename of jar file
+++# to be used. If left blank, it is assumed PlantUML is not used or called during
+++# a preprocessing step. Doxygen will generate a warning when it encounters a
+++# \startuml command in this case and will not generate output for the diagram.
+++
+++PLANTUML_JAR_PATH      =
+++
+++# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
+++# configuration file for plantuml.
+++
+++PLANTUML_CFG_FILE      =
+++
+++# When using plantuml, the specified paths are searched for files specified by
+++# the !include statement in a plantuml block.
+++
+++PLANTUML_INCLUDE_PATH  =
+++
++ # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
++ # that will be shown in the graph. If the number of nodes in a graph becomes
++ # larger than this value, doxygen will truncate the graph, which is visualized
++@@ -2339,7 +2716,7 @@
++ 
++ DOT_TRANSPARENT        = NO
++ 
++-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+++# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
++ # files in one run (i.e. multiple -o and -T options on the command line). This
++ # makes dot run faster, but since only newer versions of dot (>1.8.10) support
++ # this, this feature is disabled by default.
++@@ -2351,14 +2728,18 @@
++ # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
++ # explaining the meaning of the various boxes and arrows in the dot generated
++ # graphs.
+++# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal
+++# graphical representation for inheritance and collaboration diagrams is used.
++ # The default value is: YES.
++ # This tag requires that the tag HAVE_DOT is set to YES.
++ 
++ GENERATE_LEGEND        = YES
++ 
++-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+++# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate
++ # files that are used to generate the various graphs.
+++#
+++# Note: This setting is not only used for dot files but also for msc temporary
+++# files.
++ # The default value is: YES.
++-# This tag requires that the tag HAVE_DOT is set to YES.
++ 
++ DOT_CLEANUP            = YES
++--- a/docs/DoxygenLayout.xml
+++++ b/docs/DoxygenLayout.xml
++@@ -1,22 +1,36 @@
++ <doxygenlayout version="1.0">
++-  <!-- Generated by doxygen 1.8.6 -->
+++  <!-- Generated by doxygen 1.9.4 -->
++   <!-- Navigation index tabs for HTML output -->
++   <navindex>
++     <tab type="mainpage" visible="yes" title=""/>
++     <tab type="pages" visible="yes" title="" intro=""/>
++     <tab type="modules" visible="yes" title="" intro=""/>
++-    <!--
++     <tab type="namespaces" visible="yes" title="">
++       <tab type="namespacelist" visible="yes" title="" intro=""/>
++       <tab type="namespacemembers" visible="yes" title="" intro=""/>
++     </tab>
+++    <tab type="concepts" visible="yes" title="">
+++    </tab>
+++    <tab type="interfaces" visible="yes" title="">
+++      <tab type="interfacelist" visible="yes" title="" intro=""/>
+++      <tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
+++      <tab type="interfacehierarchy" visible="yes" title="" intro=""/>
+++    </tab>
++     <tab type="classes" visible="yes" title="">
++       <tab type="classlist" visible="yes" title="" intro=""/>
++       <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
++       <tab type="hierarchy" visible="yes" title="" intro=""/>
++       <tab type="classmembers" visible="yes" title="" intro=""/>
++     </tab>
++-    -->
+++    <tab type="structs" visible="yes" title="">
+++      <tab type="structlist" visible="yes" title="" intro=""/>
+++      <tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
+++    </tab>
+++    <tab type="exceptions" visible="yes" title="">
+++      <tab type="exceptionlist" visible="yes" title="" intro=""/>
+++      <tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
+++      <tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
+++    </tab>
++     <tab type="files" visible="yes" title="">
++       <tab type="filelist" visible="yes" title="" intro=""/>
++       <tab type="globals" visible="yes" title="" intro=""/>
++@@ -27,7 +41,7 @@
++   <!-- Layout definition for a class page -->
++   <class>
++     <briefdescription visible="yes"/>
++-    <includes visible="$SHOW_INCLUDE_FILES"/>
+++    <includes visible="$SHOW_HEADERFILE"/>
++     <inheritancegraph visible="$CLASS_GRAPH"/>
++     <collaborationgraph visible="$COLLABORATION_GRAPH"/>
++     <memberdecl>
++@@ -89,8 +103,14 @@
++     <memberdecl>
++       <nestednamespaces visible="yes" title=""/>
++       <constantgroups visible="yes" title=""/>
+++      <interfaces visible="yes" title=""/>
++       <classes visible="yes" title=""/>
+++      <concepts visible="yes" title=""/>
+++      <structs visible="yes" title=""/>
+++      <exceptions visible="yes" title=""/>
++       <typedefs title=""/>
+++      <sequences title=""/>
+++      <dictionaries title=""/>
++       <enums title=""/>
++       <functions title=""/>
++       <variables title=""/>
++@@ -100,6 +120,8 @@
++     <memberdef>
++       <inlineclasses title=""/>
++       <typedefs title=""/>
+++      <sequences title=""/>
+++      <dictionaries title=""/>
++       <enums title=""/>
++       <functions title=""/>
++       <variables title=""/>
++@@ -107,6 +129,15 @@
++     <authorsection visible="yes"/>
++   </namespace>
++ 
+++  <!-- Layout definition for a concept page -->
+++  <concept>
+++    <briefdescription visible="yes"/>
+++    <includes visible="$SHOW_HEADERFILE"/>
+++    <definition visible="yes" title=""/>
+++    <detaileddescription title=""/>
+++    <authorsection visible="yes"/>
+++  </concept>
+++
++   <!-- Layout definition for a file page -->
++   <file>
++     <briefdescription visible="yes"/>
++@@ -115,11 +146,17 @@
++     <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
++     <sourcelink visible="yes"/>
++     <memberdecl>
+++      <interfaces visible="yes" title=""/>
++       <classes visible="yes" title=""/>
+++      <structs visible="yes" title=""/>
+++      <exceptions visible="yes" title=""/>
++       <namespaces visible="yes" title=""/>
+++      <concepts visible="yes" title=""/>
++       <constantgroups visible="yes" title=""/>
++       <defines title=""/>
++       <typedefs title=""/>
+++      <sequences title=""/>
+++      <dictionaries title=""/>
++       <enums title=""/>
++       <functions title=""/>
++       <variables title=""/>
++@@ -130,6 +167,8 @@
++       <inlineclasses title=""/>
++       <defines title=""/>
++       <typedefs title=""/>
+++      <sequences title=""/>
+++      <dictionaries title=""/>
++       <enums title=""/>
++       <functions title=""/>
++       <variables title=""/>
++@@ -146,9 +185,12 @@
++       <dirs visible="yes" title=""/>
++       <files visible="yes" title=""/>
++       <namespaces visible="yes" title=""/>
+++      <concepts visible="yes" title=""/>
++       <classes visible="yes" title=""/>
++       <defines title=""/>
++       <typedefs title=""/>
+++      <sequences title=""/>
+++      <dictionaries title=""/>
++       <enums title=""/>
++       <enumvalues title=""/>
++       <functions title=""/>
++@@ -168,6 +210,8 @@
++       <inlineclasses title=""/>
++       <defines title=""/>
++       <typedefs title=""/>
+++      <sequences title=""/>
+++      <dictionaries title=""/>
++       <enums title=""/>
++       <enumvalues title=""/>
++       <functions title=""/>
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c8814153afb1da87a6c8869c46dfae5eeab589ba
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++#!/usr/bin/make -f
++DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
++export DEB_HOST_MULTIARCH
++#DEB_BUILD_MAINT_OPTIONS += hardening=+all
++#export DEB_BUILD_MAINT_OPTIONS
++#export DH_VERBOSE=1
++
++%:
++      dh $@ --with python3
++
++override_dh_auto_configure:
++      dh_auto_configure -- -DLIB_SUFFIX="/$(DEB_HOST_MULTIARCH)"
++#     -DENABLE_DOXYGEN_PDF=ON
++
++override_dh_auto_build-indep:
++      cmake --build obj-* --target all
++      cmake --build obj-* --target volk_doc
++#     cmake --build obj-* --target volk_pdf_doc
++
++override_dh_auto_install:
++      dh_auto_install
++      find debian -type d -empty -delete
++
++override_dh_auto_clean:
++      dh_auto_clean
++      rm -rf gen/__pycache__
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..30bf7d4e2cab5929683165a640ee7d9a7768f7d0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++---
++Bug-Database: https://github.com/gnuradio/volk/issues
++Bug-Submit: https://github.com/gnuradio/volk/issues/new
++Repository-Browse: https://github.com/gnuradio/volk
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e8d6efdbbcbde3a07e31471d786985614a36aaad
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..752e7f53d2d30c2dccf506e7423df16eac02a1c8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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_<name>
++  destination: // directory new source tree is built under -- must exists.
++               // It will create <directory>/volk_<name>
++  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_<name>. 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
++<destination>/volk_<name>/kernels/volk_<name>/
++.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.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..405facbf04075e7ec73f9429398e46a5a51857c7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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 --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0a64f716829fd7930b353eace751d520291f37dc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++version=4
++ opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*@ARCHIVE_EXT@)%@PACKAGE@-$1%,uversionmangle=s/-rc/~rc/" \
++ https://github.com/gnuradio/volk/tags \
++ (?:.*?/)?v?@ANY_VERSION@@ARCHIVE_EXT@