uhd: cleanup deps & add many enable / disable flags
This commit is contained in:
parent
fd2c3ff812
commit
bcf5a67e2a
@ -3,9 +3,32 @@
|
|||||||
, fetchFromGitHub
|
, fetchFromGitHub
|
||||||
, cmake
|
, cmake
|
||||||
, pkgconfig
|
, pkgconfig
|
||||||
, python
|
# See https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html for dependencies explanations
|
||||||
, libusb1
|
|
||||||
, boost
|
, boost
|
||||||
|
, enableLibuhd_C_api ? true
|
||||||
|
# requires numpy
|
||||||
|
, enableLibuhd_Python_api ? false
|
||||||
|
, python ? null
|
||||||
|
, enableExamples ? false
|
||||||
|
, enableUtils ? false
|
||||||
|
, enableLiberio ? false
|
||||||
|
, liberio ? null
|
||||||
|
, libusb1 ? null
|
||||||
|
, enableDpdk ? false
|
||||||
|
, dpdk ? null
|
||||||
|
# Devices
|
||||||
|
, enableOctoClock ? true
|
||||||
|
, enableMpmd ? true
|
||||||
|
, enableB100 ? true
|
||||||
|
, enableB200 ? true
|
||||||
|
, enableUsrp1 ? true
|
||||||
|
, enableUsrp2 ? true
|
||||||
|
, enableX300 ? true
|
||||||
|
, enableN230 ? true
|
||||||
|
, enableN300 ? true
|
||||||
|
, enableN320 ? true
|
||||||
|
, enableE300 ? true
|
||||||
|
, enableE320 ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
# You need these udev rules to not have to run as root (copied from
|
# You need these udev rules to not have to run as root (copied from
|
||||||
@ -14,6 +37,11 @@
|
|||||||
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0002", MODE:="0666"
|
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0002", MODE:="0666"
|
||||||
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0002", MODE:="0666"
|
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="2500", ATTRS{idProduct}=="0002", MODE:="0666"
|
||||||
|
|
||||||
|
let
|
||||||
|
onOffBool = b: if b then "ON" else "OFF";
|
||||||
|
inherit (stdenv.lib) optionals;
|
||||||
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "uhd";
|
pname = "uhd";
|
||||||
# UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
|
# UHD seems to use three different version number styles: x.y.z, xxx_yyy_zzz
|
||||||
@ -35,6 +63,28 @@ stdenv.mkDerivation rec {
|
|||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
|
"-DENABLE_LIBUHD=ON"
|
||||||
|
"-DENABLE_USB=ON"
|
||||||
|
"-DENABLE_TESTS=ON" # This installs tests as well so we delete them via postPhases
|
||||||
|
"-DENABLE_EXAMPLES=${onOffBool enableExamples}"
|
||||||
|
"-DENABLE_UTILS=${onOffBool enableUtils}"
|
||||||
|
"-DENABLE_LIBUHD_C_API=${onOffBool enableLibuhd_C_api}"
|
||||||
|
"-DENABLE_LIBUHD_PYTHON_API=${onOffBool enableLibuhd_Python_api}"
|
||||||
|
"-DENABLE_LIBERIO=${onOffBool enableLiberio}"
|
||||||
|
"-DENABLE_DPDK=${onOffBool enableDpdk}"
|
||||||
|
# Devices
|
||||||
|
"-DENABLE_OCTOCLOCK=${onOffBool enableOctoClock}"
|
||||||
|
"-DENABLE_MPMD=${onOffBool enableMpmd}"
|
||||||
|
"-DENABLE_B100=${onOffBool enableB100}"
|
||||||
|
"-DENABLE_B200=${onOffBool enableB200}"
|
||||||
|
"-DENABLE_USRP1=${onOffBool enableUsrp1}"
|
||||||
|
"-DENABLE_USRP2=${onOffBool enableUsrp2}"
|
||||||
|
"-DENABLE_X300=${onOffBool enableX300}"
|
||||||
|
"-DENABLE_N230=${onOffBool enableN230}"
|
||||||
|
"-DENABLE_N300=${onOffBool enableN300}"
|
||||||
|
"-DENABLE_N320=${onOffBool enableN320}"
|
||||||
|
"-DENABLE_E300=${onOffBool enableE300}"
|
||||||
|
"-DENABLE_E320=${onOffBool enableE320}"
|
||||||
]
|
]
|
||||||
# TODO: Check if this still needed
|
# TODO: Check if this still needed
|
||||||
# ABI differences GCC 7.1
|
# ABI differences GCC 7.1
|
||||||
@ -42,16 +92,34 @@ stdenv.mkDerivation rec {
|
|||||||
++ [ (stdenv.lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ]
|
++ [ (stdenv.lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
# Python + Mako are always required for the build itself but not necessary for runtime.
|
||||||
|
pythonEnv = python.withPackages (ps: with ps; [ Mako ]
|
||||||
|
++ optionals (enableLibuhd_Python_api) [ numpy setuptools ]
|
||||||
|
++ optionals (enableUtils) [ requests six ]
|
||||||
|
);
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
pkgconfig
|
pkgconfig
|
||||||
# Python + Mako are always required for the build itself but not necessary for runtime
|
]
|
||||||
(python.withPackages (ps: with ps; [ Mako ]))
|
# If both enableLibuhd_Python_api and enableUtils are off, we don't need
|
||||||
];
|
# pythonEnv in buildInputs as it's a 'build' dependency and not a runtime
|
||||||
|
# dependency
|
||||||
|
++ optionals (!enableLibuhd_Python_api && !enableUtils) [ pythonEnv ]
|
||||||
|
;
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libusb1
|
|
||||||
boost
|
boost
|
||||||
];
|
libusb1
|
||||||
|
]
|
||||||
|
# However, if enableLibuhd_Python_api *or* enableUtils is on, we need
|
||||||
|
# pythonEnv for runtime as well. The utilities' runtime dependencies are
|
||||||
|
# handled at the environment
|
||||||
|
++ optionals (enableLibuhd_Python_api || enableUtils) [ pythonEnv ]
|
||||||
|
++ optionals (enableLiberio) [ liberio ]
|
||||||
|
++ optionals (enableDpdk) [ dpdk ]
|
||||||
|
;
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
# Build only the host software
|
# Build only the host software
|
||||||
preConfigure = "cd host";
|
preConfigure = "cd host";
|
||||||
@ -59,7 +127,7 @@ stdenv.mkDerivation rec {
|
|||||||
# https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html#build_instructions_unix_arm
|
# https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html#build_instructions_unix_arm
|
||||||
patches = if stdenv.isAarch32 then ./neon.patch else null;
|
patches = if stdenv.isAarch32 then ./neon.patch else null;
|
||||||
|
|
||||||
postPhases = [ "installFirmware" ];
|
postPhases = [ "installFirmware" "removeInstalledTests" ];
|
||||||
|
|
||||||
# UHD expects images in `$CMAKE_INSTALL_PREFIX/share/uhd/images`
|
# UHD expects images in `$CMAKE_INSTALL_PREFIX/share/uhd/images`
|
||||||
installFirmware = ''
|
installFirmware = ''
|
||||||
@ -67,6 +135,11 @@ stdenv.mkDerivation rec {
|
|||||||
tar --strip-components=1 -xvf "${uhdImagesSrc}" -C "$out/share/uhd/images"
|
tar --strip-components=1 -xvf "${uhdImagesSrc}" -C "$out/share/uhd/images"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# -DENABLE_TESTS=ON installs the tests, we don't need them in the output
|
||||||
|
removeInstalledTests = ''
|
||||||
|
rm -r $out/lib/uhd/tests
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "USRP Hardware Driver (for Software Defined Radio)";
|
description = "USRP Hardware Driver (for Software Defined Radio)";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user