LibrePilot build environment uses the make utility, it reads the top level Makefile and build the targets specified in command line.
Examples
Some examples of make use :
# Build all revolution firmware
make all_revolution
# Build all firmware and prepare archive to be packed with GCS binary
make fw_resource
# Erase all firmware build
make all_fw_clean
# Build installer package : Output a dmg (OSX), exe (Windows) or Gnu/Linux deb or rpm packages
make package
# Build the GCS software
make gcs
# Erase all previous builds
make all_clean
# Install ccache, build faster
make ccache_install
# Print all available targets
make help
make help, all targets : Click here to expand...
This Makefile is known to work on Linux and Mac in a standard shell environment.
It also works on Windows by following the instructions given on this wiki page:
Windows+Building+and+Packaging
Here is a summary of the available targets:
[Source tree preparation]
prepare - Install GIT commit message template
[Tool Installers]
arm_sdk_install - Install the GNU ARM gcc toolchain
qt_sdk_install - Install the QT development tools
nsis_install - Install the NSIS Unicode (Windows only)
sdl_install - Install the SDL library (Windows only)
mesawin_install - Install the OpenGL32 DLL (Windows only)
openssl_install - Install the OpenSSL libraries (Windows only)
uncrustify_install - Install the Uncrustify source code beautifier
doxygen_install - Install the Doxygen documentation generator
gtest_install - Install the GoogleTest framework
ccache_install - Install ccache
These targets are not updated yet and are probably broken:
openocd_install - Install the OpenOCD JTAG daemon
stm32flash_install - Install the stm32flash tool for unbricking F1-based boards
dfuutil_install - Install the dfu-util tool for unbricking F4-based boards
Install all available tools:
all_sdk_install - Install all of above (platform-dependent)
build_sdk_install - Install only essential for build tools (platform-dependent)
Other tool options are:
<tool>_version - Display <tool> version
<tool>_clean - Remove installed <tool>
<tool>_distclean - Remove downloaded <tool> distribution file(s)
[Big Hammer]
all - Generate UAVObjects, build LibrePilot firmware and gcs
all_flight - Build all firmware, bootloaders and bootloader updaters
all_fw - Build only firmware for all boards
all_bl - Build only bootloaders for all boards
all_bu - Build only bootloader updaters for all boards
all_clean - Remove your build directory (/home/laurent/Modelisme/LibrePilot/LibrePilot_next/build)
all_flight_clean - Remove all firmware, bootloaders and bootloader updaters
all_fw_clean - Remove firmware for all boards
all_bl_clean - Remove bootloaders for all boards
all_bu_clean - Remove bootloader updaters for all boards
all_<board> - Build all available images for <board>
all_<board>_clean - Remove all available images for <board>
all_ut - Build all unit tests
all_ut_tap - Run all unit tests and capture all TAP output to files
all_ut_run - Run all unit tests and dump TAP output to console
[Firmware]
<board> - Build firmware for <board>
Supported boards are (coptercontrol oplinkmini revolution osd revoproto simposix discoveryf4bare gpsplatinum revonano)
fw_<board> - Build firmware for <board>
Supported boards are (coptercontrol oplinkmini revolution osd revoproto simposix discoveryf4bare gpsplatinum revonano)
fw_<board>_clean - Remove firmware for <board>
fw_<board>_program - Use OpenOCD + JTAG to write firmware to <board>
[Bootloader]
bl_<board> - Build bootloader for <board>
Supported boards are (coptercontrol oplinkmini revolution osd revoproto discoveryf4bare gpsplatinum revonano)
bl_<board>_clean - Remove bootloader for <board>
bl_<board>_program - Use OpenOCD + JTAG to write bootloader to <board>
[Entire Flash]
ef_<board> - Build entire flash image for <board>
Supported boards are (coptercontrol oplinkmini revolution osd revoproto discoveryf4bare gpsplatinum revonano)
ef_<board>_clean - Remove entire flash image for <board>
ef_<board>_program - Use OpenOCD + JTAG to write entire flash image to <board>
[Bootloader Updater]
bu_<board> - Build bootloader updater for <board>
Supported boards are (coptercontrol oplinkmini revolution osd revoproto discoveryf4bare revonano)
bu_<board>_clean - Remove bootloader updater for <board>
[Unbrick a board]
unbrick_<board> - Use the STM32's built in boot ROM to write a bootloader to <board>
Supported boards are (coptercontrol oplinkmini revolution osd revoproto discoveryf4bare gpsplatinum revonano)
[Unittests]
ut_<test> - Build unit test <test>
ut_<test>_xml - Run test and capture XML output into a file
ut_<test>_run - Run test and dump output to console
[Simulation]
sim_osx - Build LibrePilot simulation firmware for OSX
sim_osx_clean - Delete all build output for the osx simulation
sim_win32 - Build LibrePilot simulation firmware for Windows
using mingw and msys
sim_win32_clean - Delete all build output for the win32 simulation
[GCS]
gcs - Build the Ground Control System (GCS) application (debug|release)
Compile specific directory: MAKE_DIR=<dir>
Example: make gcs MAKE_DIR=src/plugins/coreplugin
gcs_qmake - Run qmake for the Ground Control System (GCS) application (debug|release)
gcs_clean - Remove the Ground Control System (GCS) application (debug|release)
Supported build configurations: GCS_BUILD_CONF=debug|release (default is release)
[Uploader Tool]
uploader - Build the serial uploader tool (debug|release)
uploader_qmake - Run qmake for the serial uploader tool (debug|release)
uploader_clean - Remove the serial uploader tool (debug|release)
Supported build configurations: GCS_BUILD_CONF=debug|release (default is release)
[UAVObjects]
uavobjects - Generate source files from the UAVObject definition XML files
uavobjects_test - Parse xml-files - check for valid, duplicate ObjId's, ...
uavobjects_<group> - Generate source files from a subset of the UAVObject definition XML files
Supported groups are (gcs flight python matlab java wireshark)
[Packaging]
package - Build and package the platform-dependent package (no clean)
fw_resource - Generate resources to embed firmware binaries into the GCS
dist - Generate source archive for distribution
fw_dist - Generate archive of firmware
install - Install GCS to "DESTDIR" with prefix "prefix" (Linux only)
[Code Formatting]
uncrustify_<source> - Reformat <source> code according to the project's standards
Supported sources are (flight ground)
uncrustify_all - Reformat all source code
[Code Documentation]
docs_<source> - Generate HTML documentation for <source>
Supported sources are (flight ground uavobjects)
docs_all - Generate HTML documentation for all
docs_<source>_clean - Delete generated documentation for <source>
docs_all_clean - Delete all generated documentation
[Configuration]
config_new - Place your make arguments in the config file
config_append - Place your make arguments in the config file but append
config_clean - Removes the config file
Hint: Add V=1 to your command line to see verbose build output.
Notes: All tool distribution files will be downloaded into ./downloads
All tools will be installed into ./tools
All build output will be placed in ./build
Tool download and install directories can be changed using environment variables:
DL_DIR full path to downloads directory [downloads if not set]
TOOLS_DIR full path to installed tools directory [tools if not set]
More info: https://librepilot.atlassian.net/wiki/display/LPDOC/LibrePilot+Build+System+Overview
Parallel builds
If your system has a multicore CPU and supports parallel builds, you can load all cores of your system with command like this:
This means make start and run four tasks at same time.
Wondering how much time your build takes? Try to add the time command before make:
If you need more verbose output while make is running, you can add V=1 to command line:
A typical command line for GCS build and start:
make -j2 fw_resource && make -j2 gcs && ./build/librepilot-gcs_release/bin/librepilot-gcs