The boost library path was already added when running unittests
(UHD_ADD_TEST) but not when running python based unittests
(UHD_ADD_PYTEST). The boost library path is required when compiling
against custom boost version (tested with boost 1.89.0), because
some boost libraries have implicit dependencies on other boost
libraries which are not found otherwise.
This has multiple reasons:
- We use CMake's FindBoost
(https://cmake.org/cmake/help/v3.12/module/FindBoost.html) which can
resolve dependencies itself. We only use boost::system in tandem with
Boost::asio, which we already list as a dependency.
- There are combinations of CMake versions and Boost versions, where
specifying this will link against the stub library of Boost::system
(this is a header-only library since Boost 1.69). Removing it from the
list avoids any kind of linkage.
Note that UHDBoost.cmake has some compatibility hacks for Boost::system,
which we now also remove.
Our internal helper UHDBoost.cmake includes several hacks for Boost
version compatibility. Now that we require at least Boost 1.71, these
hacks are just clutter and can be removed.
Building static libraries with UHD was broken due to the way that
UHDBoost was structured. The following changes to UHDBoost.cmake were
applied:
- This file no longer observes ENABLE_STATIC_LIBS. That's because in UHD,
setting ENABLE_STATIC_LIBS is supposed to build both static and shared
libraries, but the way UHDBoost.cmake was written, it would apply
settings for static builds to all libraries. If ENABLE_STATIC_LIBS was
set, then this would cause linker errors.
- As a consequence, users of UHDBoost.cmake must specify
Boost_USE_STATIC_LIBS manually before including it.
- BUILD_SHARED_LIBS is no longer modified. UHD always specifies the
correct library modifier (SHARED, STATIC, etc.) directly in the
add_library() call, and that is good practice. By overriding
BUILD_SHARED_LIBS in UHDBoost.cmake, this file can make changes to
CMake files that call add_library() without a modifier.
In host/lib/CMakeLists.txt, we now call UHDBoost a second time for
static builds but set Boost_USE_STATIC_LIBS beforehand. This allows to
specify linker targets for the static library independently from the
shared library.
We also factored out some common library property manipulations that are
shared between uhd and uhd_static.
- Instead of blindly linking against all ${Boost_LIBRARIES}, we
selectively specify the various Boost::* targets.
- Replace include_directories() or link_directories() with target_*()
CMake functions to avoid cluttering global scope.
- Specify PRIVATE vs. PUBLIC on all link targets.
- For Ubuntu/Debian, the package lib dir (PKD_LIB_DIR), is set to
/usr/libexec/uhd. This is the path where examples, tests and
utils get installed.
- List usrp_hwd.py explicitly as not installed.
- Align the distribution of the files to packages (debian/*.install)
files to the Debian/Ubuntu official version from
https://salsa.debian.org/bottoms/pkg-uhd (branch experimental)
- Import rfnoc-blocks-track-runtime-abi patch from the official debian
sources at https://salsa.debian.org/bottoms/pkg-uhd.
This changes the UHD package data path to include the ABI version, e.g.:
old: /usr/share/uhd
new: /usr/share/uhd/4.9.0
Co-authored-by: A. Maitland Bottoms <bottoms@debian.org>
These sources are not required when building RFNoC bitfiles, and they
also reference csh, which causes some build systems to produce warnings.
As a consequence, we can also remove csh from the uhd-rfnoc-dev
dependency list.
This fixes the Device or resource busy bug in the x4xx hardware test
pipeline step. To enable different bitfiles than the one that were baked
into the file system image, we delete the installed one and install a
different one. This involves bringing up MPM without a bitfile. So when
the next bitfile gets installed, resources from the still running
bitfile cannot be cleaned up properly, like the mtdblocks of the X410
flash memories. To still clean that up, we now unmount these before we
start up MPM without a bitfile again. We ignore any errors that might
come up here as these steps are executed on devices without flash
memories on the daughtercards, too.
Update Changelog
- Add mention of new RFNoC OOT block repository to changelog.
Add link to RFNoC OOT block github repository to README.
Update Readme with reference to new OOT block repo
Update Manifest
Co-authored-by: Niels Garibaldi <niels.steffen.garibaldi@emerson.com>
Co-authored-by: Marian Koop <marian.koop@emerson.com>
- Improved structure, expanded setup steps and added
helpful diagrams
- Added step-by-step instructions for kit verification,
network setup and host requirements
- Consolidated section for troubleshooting
- Enhanced clarity for stand-alone vs. network modes
- Included security, care and handling guidelines
- Reorganized advanced topics such as serial connection
and microcontroller access
UHD_VERSION needs to be also checked against an empty string
since cmake 4.1 sets this variable during project setup, also
if it was undefined before. Furthermore we need to backup and
restore custom UHD_VERSION when defined for e.g. by using option
-DUHD_VERSION=<version>, because project() setup will reset the
version to an empty string.
- Move B206 jackscrew info from kit content to another section
- Add Additional Documents section to include external (to ni.com)
links to certification, specs, seri and enclosure assembly instructions
- Add getting started subsection to link to getting started tutorials
Change binary installation instructions for Windows to reflect that
installation of Windows USB driver packages is now fully integrated
into UHD installer and this previous post installation step is
no longer needed.
Some debian control files (e.g. "control") may need to be adopted
for specific Debian/Ubuntu version being used. However, instead of
copying the whole debian directory for each Debian/Ubuntu version,
support having a version-specific ending (e.g. ".noble") which
takes preference over the default file.
Example: when building for "noble", the file "control.noble" will
be copied to "control" before executing the debuild commands.
This will cast str to unsigned long if size_t is
of same size, otherwise unsigned long long
Co-authored-by: Grant Meyerhoff <grant.meyerhoff@emerson.com>
-merged device specific procedures into one section
-updated table to include x4xx and n3xx
-added usage of EXTRA_DEV_ARGS using make test_<devtest-pattern>
-extended devtest table with more devices
- Adds calling pnpdriver util to apply all installed inf win drivers
- Change installer to be aware of the target proc architecture of
installed files. This reults into a 64-bit installer to default
installing registry keys into the 64-bit registry hive.
- Extended file info of installer executable to incl. publisher and
copyright and make installer binary version match version of
deployed binaries.
- Add custom icon to installer and uninstaller binaries as well as
ARP entry.