Skip to content

Build Process

George Morgan edited this page Mar 12, 2018 · 1 revision

This Wiki entry describes the somewhat complex build process that happens when you run make in the root of the project repository.

Flipper targets three disparate targets, each of which have unique toolchains. These platforms are as follows.

  1. arm-
    • The embedded operating system.
  2. avr-
    • The co-processor firmware image.
  3. x86_64-
    • The platform library and tools.

Building the Embedded Operating System

The first component to be build is the embedded operating system for the device. The embedded operating system must be built first because the output file is needed to build the platform library. More on that later.

Building the Platform Library

The libflipper library contains all of the API needed for applications to interact with Flipper hardware. This library is built after the embedded operating system because the API included in this library is coupled with the API exposed by the device's firmware.

fdwarf

The fdwarf tool analyzes the firmware image that is produced by step 1 of the build process. This tool then generates bindings for all of the modules declared in the firmware.

These module bindings are then compiled against the libflipper source to produce libflipper.so, a dynamically linked library. When API calls are made to functions that are exposed in the devices firmware image, libflipper performs a remote procedure call to the corresponding function on the hardware.

Clone this wiki locally