Project Features

Basic NuttX Scripts Wrapper

  • Supports the most used functions of the tools/configure.sh script on NuttX.

  • Makefile build support

  • Environemnt clean and distclean

  • Menuconfig available and also kconfig options modification directly from command line

  • Full Python API support

Toolchain Management

  • The toolchain module provides a quick way to download toolchains for supported architectures.

  • Installed on home directory for general use when needed even outside ntxbuild CLI.

  • Toolchains are organized by NuttX release and default to latest version.

CMake Support

The use of Makefile is the default state of ntxbuild. To build using CMake, pass --use-cmake to the ntxbuild start command. This will setup the directory to CMake and Ninja generator.

Currently, CMake support uses the build directory for output and Ninja generator when invoked from the CLI. Using the Python API allows more flexibility.

Real-time Build Output

When building directly from NuttX, the user can see build output in real-time. This tool keeps the output the same, as the user will see the logging output with no buffering.

  • Live progress display with proper ANSI colors

  • No buffering for immediate feedback

  • Preserves terminal control sequences

Lightweight Workspace Copies

The API provides functions that assist in generating lightweight copies of the NuttX workspace, which can be useful in CI environments.

See usage examples on API Examples.

  • Excludes unnecessary files (.git, build artifacts, etc.)

  • Configurable target directory

  • Automatic cleanup

Board Explorer

The Board Explorer feature provides a simple way to discover and inspect the boards and available defconfigs inside a NuttX repository. It is available both through the CLI (commands that list boards) and the Python API (see ntxbuild.nuttx helpers).

  • Quickly find which boards support a particular architecture or SoC.

  • Programmatically build a list of candidate boards for automated testing or CI matrix generation.

  • Provide a lightweight UI (or CLI output) that helps users choose a board and defconfig before running start or build commands.

Curses Support

Menuconfig works just as usual through this tool.

  • Full support for interactive tools like menuconfig

  • Proper terminal handling

  • No broken interfaces

To-Do

Note

Active feature tracking and new feature requests are now handled on the project board.

The following are features that should be added to this project:

  1. (OK) Publish on PyPi

  2. (OK) Add build using CMake

  3. Checkpatch script support

  4. (OK) Download and install compilers

  5. Open the docs for a board

  6. Improve support for installing source (multi thread and API improvements)

  7. Export defconfig (make savedefconfig)

  8. (OK) Support kconfig-merger

  9. (OK) Support disabling build log output

  10. Prettify logging: add colored output and option to log to file

  11. (OK) Replace the shelve module: use .ini file instead

  12. Add support for custom Make options on NuttXBuilder.build

  13. (Partial support) Support extra flags on configure.sh script