Skip to main content

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)

Table of built distributions (wheels) for nimmake 0.6.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.6.1

1 release file

This release

0.6.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page