Each application contains its sources inside a src/ sub-directory, a Makefile.application that configures the application, and optional 'config.$OS' directories where other per-application configuration files can be found. What these files are may depend on the target OS, such as Zephyr having a prj.conf file to configure the OS itself. Other configuration files can be:
- sol.conf: Override Soletta Kconfig variables
- sol-flow.json: For FBP based applications, configures Flow parameters
All these configuration files may be include the board name targetted too, for example:
- sol_quark_se_devboard.conf
- sol-flow_samr21-xpro.json
- prj_qemux86.conf
Inside a sample directory:
make -C ../BUILD <os> BOARD=board_name [other targets]
Example:
make -C ../BUILD zephyr BOARD=quark_se_devboard flash
make -C ../BUILD riot BOARD=samr21-xpro debug
Supported OSes for the time being:
- zephyr - Zephyr website
- riot - RIOT website
Building for RIOT requires the variable RIOTBASE set to the path where
the RIOT sources can be found, and copying the libsoletta
directory under
RIOT to the pkg/ subdirectory in RIOT itself.
Building for Zephyr requires:
ZEPHYR_BASE
pointing to the Zephyr sourcesSOLETTA_BASE_DIR
pointing to the Soletta sourcesZEPHYR_GCC_VARIANT
set to the toolchain variant to use (usually, "zephyr")ZEPHYR_SDK_INSTALL_DIR
set to the path where Zephyr's SDK is installed
- Make this README more instructive.
- Less Makefiles, more scripts.
- Handle dependencies better, so we don't rebuild things we don't need.
- Add support for applications with custom node types.
- Make plain C applications "configurable", as FBP ones are.
- Try to detect which RIOT modules are needed based on Soletta's configuration, or at least make it per-application too.