nimmake
A Nimble cross-platform build tool optimized for ARM and RISC-V architectures.A Python-powered build system for MCU firmware development. Compile C/C++ source code for arm riscv, and other common microcontrollers with ease. Built-in extensive MCU and toolchain configurations, automatically generating the required compile flags. Add code as third-party libraries without manually adding source files, headers, or macros one by one; you can set dependencies between each library. Especially suitable for rapid development and prototyping.
Features
- Multi-Toolchain Support — Use armgcc, LLVM/Clang, or armclang to compile your firmware.
- Modular Third-Party Integration — Pre-built modules for FreeRTOS, LVGL, FatFS, EasyLogger, CherryUSB, FreeModbus, and more.
- Incremental Builds — Analyzes which files need rebuilding and compiles only what changed.
- Multi-Processing Build — Parallel compilation with configurable job count (-j).
- Ninja Backend — Optional Ninja build mode for faster builds (-n or --ninja).
- Compilation Database — Generate compile_commands.json for IDE support and static analysis (--compiledb).
- Build Cache — Cache compiled objects to speed up rebuilds (--cache).
- Dry-Run Mode — Preview what would be built without actually compiling (--dry-run).
- Party System — Organize third-party library flags and configurations in reusable "party" modules.
Installation
pip install nimmake
Usage
nimmake -f Nimmake.py
nimmake --version
nimmake --compiledb
Development
# Clone the repo
git clone https://github.com/pophu/nimmake.git
cd nimmake
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# Install dev dependencies
pip install -e ".[dev]"
pip install -e .
# Run tests
pytest
# Lint
ruff check src/ tests/
# Type check
mypy src/
# Build
python -m build
Metadata
Release files for nimmake 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nimmake-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / nimmake-0.6.0-py3-none-any.whl
| Download URL | nimmake-0.6.0-py3-none-any.whl |
|---|---|
| Size | 145.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ca3f2a8220370932973197481c072faa8f26eb4558599359440a093a84ee585d
|
|
BLAKE2b-256 checksum How to use checksums |
4d1cc30c32cc3d49c50088bd549841a81e2b0dc67f20ef0af8a4175015345d84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.6
|