The Build System
RIOT uses GNU make as build system. The simplest way to compile and link an application with RIOT, is to set up a Makefile providing at least the following variables:
APPLICATION
: should contain the (unique) name of your applicationBOARD
: specifies the platform the application should be built for by defaultRIOTBASE
: specifies the path to your copy of the RIOT repository (note, that you may want to use$(CURDIR)
here, to give a relative path)
Additionally it has to include the Makefile.include
, located in RIOT’s root
directory:
APPLICATION = mini-makefileBOARD ?= nativeRIOTBASE ?= $(CURDIR)/../RIOT
include $(RIOTBASE)/Makefile.include
You can use Make’s ?=
operator in order to allow overwriting
variables from the command line. For example, you can easily specify the target
platform, using the sample Makefile, by invoking make like this:
make BOARD=iotlab-m3
Besides typical targets like clean
, all
, or doc
, RIOT provides the
special targets flash
and term
to invoke the configured flashing and
terminal tools for the specified platform. These targets use the variable
PORT
for the serial communication to the device. Neither this variable nor
the targets flash
and term
are mandatory for the native port.
For the native port, PORT
has a special meaning: it is used to identify the
tap interface if the netdev_tap
module is used. The target debug
can be
used to invoke a debugger on some platforms. For the native port the additional
targets such as all-valgrind
and valgrind
exist. Refer to
cpu/native/README.md
for additional information
Some RIOT directories contain special Makefiles like Makefile.base
,
Makefile.include
or Makefile.dep
. The first one can be included into other
Makefiles to define some standard targets. The files called Makefile.include
are used in boards
and cpu
to append target specific information to
variables like INCLUDES
, setting the include paths. Makefile.dep
serves to
define dependencies.
Unless specified otherwise, make will create an elf-file as well as an Intel
hex file in the bin
folder of your application directory.
Learn more about the build system in the Wiki