https://github.com/zorxx/micro-builder
You may ask: How is this different from every other build tool?
- It's designed to make use of other existing projects. You want to build an application for a microcontroller and want to make use of all of the great libraries, SDKs, and tools that have been developed. micro-builder provides the infrastructure for pulling-in applications and tools into your build, so you can just make use of them.
- micro-builder just handles building. You're not forced to develop in an IDE you don't like. micro-builder currently has a package for the excellent ESP8266/Arduino toolchain/libraries, so you can develop and build an "Arduino" application without using the Arduino IDE. If you prefer, you can build an application against the bare-bones ESP8266 SDK from Expressif using the excellent sysinternals ESP8266 toolchain (which is built for windows hosts only). micro-builder currently includes packages for all of this.
- Build on multiple hosts. The packages currently included have been minimally tested on MinGW and 64-bit Linux. Note that some packages are host architecture dependent (e.g. sysinternals toolchain for Windows hosts only).
Please remember: micro-builder is brand-new and very immature. Any feedback is welcome.
From the README:
micro-builder: Build Environment for Microcontroller Projects
Goals:
- Simple, flexible environment for building applications for microcontrollers
- Make use of existing projects (don't re-invent wheels)
Build Environment:
- Rely only on GNU make. Never assume any particular shell exists (e.g. bash). This makes
portability of the build environment among platforms (e.g. Windows and Linux) possible.
- Never rely on absolute paths. The micro-builder root directory can exist anywhere.
- "make" can be executed from any directory in the build source tree (e.g. to build individual
example applications or all example applications)
Packages:
The packages directory contains recipes for downloading and optionally building packages
from external projects. Examples of packages are: toolchains, target flashing and debugging
tools, libraries, applications, etc. The two major components of a package are
- Makefile
This contains all of the information for downloading and building the package
- <package_name>.inc
When the package is included by the user in /config.inc, this file is included
in the build environment. This allows the package to provide things to the build
environment, such as include file directories (for library packages) or toolchain
binary locations (for toolchain packages).
Libraries:
Some libraries exist directly within the micro-builder source tree. Eventually, these
libraries may be split into separate git projects (and be included as packages in
micro-builder).
Examples:
Some example applications exist directly within the micro-builder source tree. Eventually,
these applications may be split into separate git projects (and be included as packages in
micro-builder).
Notes:
Some aspects of micro-builder are similar to Buildroot, however there are some key differences:
- micro-builder is designed to allow for development of applications.
- Selected packages determine the build environment. Adding a new package can change the way
all applications/libraries are built.