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.
srcdirectory contains a collection of Cabal packages for components of the SMACCMPilot build. There is a
READMEin 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:
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
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.
Generated Code Pitfall
Two of the packages in this repository,
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