The gr4-incubator repo is designed to be a staging area for GR4 block development prior to upstreaming blocks to the main gnuradio4 repo. It is intended to collect and triage the "kitchen sink" of useful blocks, schedulers, utilities, but have a lower bar for accepting contributions than the core.
Pre-requisites for compiling this codebase are outlined in docker/Dockerfile. For convenience,
example devcontainer.json configurations are given in the .devcontainer directory for VS Code integration
The tree is organized around creating multiple modules under the blocks directory that live
├── blocks
│ ├── analog
│ │ ├── apps
│ │ ├── benchmarks
│ │ ├── docs
│ │ ├── examples
│ │ ├── include
│ │ ├── plugin
│ │ ├── src
│ │ └── test
│ ├── audio
│ ├── basic
│ ├── pfb
│ ├── soapysdr
│ └── zeromq
├── cmake
│ └── Modules
├── docker
├── examples
│ └── gr3_flowgraphs
└── subprojects
Examples that exercise multiple modules
The CMake path is the active build path for this branch.
- System dependencies only (
find_package/pkg-config); nosubprojects/orFetchContent. - Plugins are hard-disabled in CMake (
ENABLE_PLUGINS=ONis an error). - GUI examples are optional and
OFFby default.
cmake -S . -B build -G Ninja \
-DENABLE_EXAMPLES=ON \
-DENABLE_TESTING=ON \
-DENABLE_GUI_EXAMPLES=OFF
cmake --build build -jctest --test-dir build --output-on-failureENABLE_GUI_EXAMPLES=ON requires imgui, implot, glfw3, and OpenGL.
If implot is not discoverable through package config or pkg-config, pass explicit paths:
cmake -S . -B build -G Ninja \
-DENABLE_EXAMPLES=ON \
-DENABLE_TESTING=ON \
-DENABLE_GUI_EXAMPLES=ON \
-DIMPLOT_INCLUDE_DIR=/usr/local/include \
-DIMPLOT_LIBRARY=/usr/local/lib/libimplot.soYou can also use:
-DIMPLOT_SOURCE_DIR=/path/to/implotlibrtaudio-devlibcli11-devlibimgui-devlibglfw3-devlibopengl-dev
implot is typically not packaged; in this repo's devcontainer it is installed in /usr/local.
The current CMake setup is intentionally pragmatic. Full canonical cleanup is gated by upstream work in GNU Radio 4 and related packaging.
- Add install/export package config for this repo (
install(EXPORT ...),gr4-incubatorConfig.cmake). - Reduce custom fallback logic for GUI dependency discovery once upstream/system packages are stable.
- Keep CMake and Meson behavior aligned while migration is ongoing.
- Stable exported CMake package targets from
gnuradio4for all required link interfaces. - Canonical target/package exposure for blocklib components currently consumed as raw libraries.
- Consistent distro packaging (or official CMake package configs) for optional GUI dependencies, especially
implot. - Clear upstream contract for optional/plugin mechanisms to replace Meson bootstrap-specific workflows cleanly in CMake.