Skip to content
Embedded Artistry Templates, Documents, and Source Code
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
build @ 66c2ba3 Migrate buildsystem from Premake to Meson Mar 2, 2019
examples Move stdbool to circular_buffer header Mar 13, 2019
interview Migrate buildsystem from Premake to Meson Mar 2, 2019
manufacturing Move MAC allocation tracker from embedded-artistry to ea-docs. Dec 10, 2016
tools Advance submodule pointers Sep 5, 2018
.gitattributes Expand lfs for bin/ folder Apr 10, 2017
Makefile Migrate buildsystem from Premake to Meson Mar 2, 2019


Embedded Artistry Public Resources

Contains templates, documents, and source code examples referenced on

Table of Contents

  1. Requirements
    1. git-lfs
    2. meson
  2. Structure
  3. Building



This repository requires git-lfs. If you do not have this installed, please visit

If you cloned this repository before installing git-lfs, please run git lfs pull. Otherwise clone will automatically perform a git lfs pull.


This repository builds with meson, which requires Python 3 and Ninja.

On Ubuntu these can be easily installed with the following command:

$ sudo apt-get install python3 python3-pip ninja-build

For OSX, you can use brew:

$ brew install python3 ninja

The best way to get Meson is through pip:

$ pip3 install meson


  • build/
    • Common build scripts and definitions
  • docs
    • Open-source project templates and reference documentation
  • examples/
    • c/
      • C examples for the Embedded Artistry website
    • cpp/
      • C++ examples for the Embedded Artistry website
    • libc/
      • Example libc implementations
    • libcpp/
      • Example libcpp implementations
  • interview/
    • Example interview question implementations
  • manufacturing/
    • Documents & templates that are useful for the manufacturing side of the embedded world.


You can run make from the top level to build all examples. Output will be placed in a folder called buildresults/ at the top level.

You can also use the proper meson syntax:

$ meson buildresults
$ cd buildresults
$ ninja

Targets can be built individually by using the ninja interface in the buildresults/ directory.

$ cd buildresults
$ ninja interview/bad_c

To clean the builds, run make clean from the project root or ninja clean in the buildresults/ directory.

Binaries will be stored under the buildresults/ folder at the same hierarchical level as in the source tree.For example, the bad_c interview demo application will be in buildresults/interview/.

Further Reading

You can’t perform that action at this time.