Embedded Artistry Framework
Embedded Systems C++ Framework
|
Table of Contents
The primary requirements for building the framework are:
For access to the full framework documentation, you will need git-lfs
.
A variety of support tools are used by the framework for testing and static analysis:
To develop for the framework, you will need:
This repository requires git-lfs. If you do not have this installed, please visit the git-lfs web page.
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.
To install on Linux:
To install on OS X:
Meson can be installed through pip3
:
If you want to install Meson globally on Linux, use:
This repository uses Architecture Decision Records. Please install adr-tools
to contribute to architecture decisions.
If you are using OSX, you can install adr-tools
through Homebrew:
If you are using Windows or Linux, please install adr-tools
via GitHub.
TBD
This project uses git-lfs
, so please install it before cloning. If you cloned prior to installing git-lfs
, simply run git lfs pull
after installation.
This project is [hosted on GitHub][8]. You can clone the project directly using this command:
To build all framework components, you can run make
at the project root. All build output will be placed in the buildresults
folder by default.
You can specify another build output folder for use with meson
. You can invoke the build using:
Depending on the target architecture and its supported functionality, some items may need to be disabled. For example, this command disables threading and std::chrono
:
You can enable threading support with an RTOS and the C++ standard library using the libcxx-thread-library
and os-header-path
options. os-header-path
is specified relative to the libcpp
directory.
Once the directory has been created by meson
, you can build all targets with make
:
Individual targets can be built within the buildresults
folder:
Example cross-compilation:
By default, the project is configured to generate release builds. This means that debug symbols are not provided. The default optimization level for the framework is -O2
.
To build a debug variant, you will need to manually configure the meson project and use the --debug
option. You may also optionally set the --optimization
option to g
for an optimized debug build.
To generate the Doxygen documentation, run make docs
at the project root. Documentation will be placed into buildresults/documentation/html
. You can open index.html
to access the document root.
The framework uses Catch for unit testing. Some dependencies use CMocka. If CMocka is not installed on your system, the tests will not be built or run.
To run the framework tests and print the results to console:
To run all the framework unit tests:
Test results for the framework will be output into buildresults/framework_tests.xml
. Module test results will be found in buildresults/test
.
TBD
TBD
TBD
Our meson build can be configured in a variety of the ways through.
By default, the framework is built in release mode. To enable a debug build, you must supply the meson configuration option --debug
.
The optimization level for the framework defaults to -O2
.
To modify the optimization level, you must supply the meson configuration option --optimization
.
Your project may need a vendor SDK, especially for migratory purposes. You can use the vendor-sdk-path
option to provide a path to this SDK:
The vendor SDK path is relative to where the binaries are declared, or where the path is first used. This is not relative to the top level of the framework. This can be confusing.
So if you are at:
And the SDK is at:
And the binary build folder where you use the SDK is at:
Then you need to use this path:
Here's an example invocation using the NRF52 SDK:
This repository enforces formatting using clang-format
.
You can auto-format your code to match the style guidelines by issuing the following command:
Formatting is enforced by the Jenkins build server which runs continuous integration for this project. Your pull request will not be accepted if the formatting check fails.
If you need further assistance or have any questions, please file a GitHub Issue or send us an email using the Embedded Artistry Contact Form.
You can also reach out on Twitter: mbeddedartistry.
The framework is Copyright © 2018 Embedded Artistry LLC.
TBD
A full list of open source modules and their licenses can be found in the Software Inventory.
I would like to thank the following individuals for their direct contributions to this project:
I would like to thank the following individuals for their inspiration on this project:
I would like to thank the following individuals for the open source libraries that have been incorporated into this framework: