The SMACCMPilot project is an embedded systems software research project by Galois, Inc. We're building open-source autopilot software for small unmanned aerial vehicles (UAVs) using new high-assurance software methods.
Complete documentation for this repository and related SMACCMPilot work is available at smaccmpilot.org.
Developers are encouraged to join our mailing list for project updates. You can also file issues on Github.
- The
src
directory contains a collection of Cabal packages for components of the SMACCMPilot build. There is aREADME
in each package directory describing the libraries and executables provided.
This repository has several external dependencies which may be burdensome to install. For convenience, we have provided a smaccmpilot-build repository which packages this repository and all of the required dependencies using git submodules. We recommend you clone smaccmpilot-build, or provide the following environment variables pointing to the following repositories:
name | env variable |
---|---|
ivory | IVORY_REPO |
tower | TOWER_REPO |
ivory-tower-stm32 | BSP_REPO |
gidl | GIDL_REPO |
gec | GEC_REPO |
This project requires the Stack build tool, which will automatically download and configure the appropriate Haskell compiler.
This project expects the gcc-arm-embedded toolchain to be present in your
PATH
.
The build system uses recursive makefiles. Individual cabal packages
each have a local Makefile
with targets for building, testing, and
generating Ivory/Tower programs.
Ivory/Tower programs are Haskell programs which generate C sources and an appropriate makefile. We call these makefiles recursively to build binaries from the generated C sources.
Two of the packages in this repository, smaccm-comm-schema-native
and smaccm-comm-schema-tower
, are generated by gidl. If the
generated code for these packages is missing, the default Stack
targets will not work. As a temporary fix, running make smaccm-comm-schema
in the root of this repository should perform the
necessary bootstrapping.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unaccpetable behavior to [email protected].