Readme file for the Contiki build system
This commit is contained in:
parent
b0b7afb802
commit
1ccc537a99
1 changed files with 86 additions and 0 deletions
86
README-BUILDING
Normal file
86
README-BUILDING
Normal file
|
@ -0,0 +1,86 @@
|
|||
The Contiki build system
|
||||
|
||||
The Contiki build system is designed to make it easy to compile
|
||||
Contiki applications for either to a hardware platform or into a
|
||||
simulation platform by simply supplying different parameters to the
|
||||
make command, without having to edit makefiles or modify the
|
||||
application code.
|
||||
|
||||
The file example project in examples/hello-world/ shows how the
|
||||
Contiki build system works. The hello-world.c application can be built
|
||||
into a complete Contiki system by running make in the
|
||||
examples/hello-world/ directory. Running make without parameters will
|
||||
build a Contiki system using the native target. The native target is a
|
||||
special Contiki platform that builds an entire Contiki system as a
|
||||
program that runs on the development system. After compiling the
|
||||
application for the native target it is possible to run the Contiki
|
||||
system with the application by running the file hello-world.native. To
|
||||
compile the application and a Contiki system for the ESB platform" the
|
||||
command make TARGET=esb is used. This produces a hello-world.esb file
|
||||
that can be loaded into an ESB board.
|
||||
|
||||
To compile the hello-world application into a stand-alone executable
|
||||
that can be loaded into a running Contiki system, the command make
|
||||
hello-world.ce is used. To build an executable file for the ESB
|
||||
platform, make TARGET=esb hello-world.ce is run.
|
||||
|
||||
To avoid having to type TARGET= every time make is run, it is possible
|
||||
to run make TARGET=esb savetarget to save the selected target as the
|
||||
default target platform for subsequent invocations of make. A file
|
||||
called Makefile.target containing the currently saved target is saved
|
||||
in the project's directory. Makefiles used in the Contiki build
|
||||
system The Contiki build system is composed of a number of
|
||||
Makefiles. These are:
|
||||
|
||||
* Makefile: the project's makefile, located in the project directory.
|
||||
|
||||
* Makefile.include: the system-wide Contiki makefile, located in
|
||||
the root of the Contiki source tree.
|
||||
|
||||
* Makefile.$(TARGET) (where $(TARGET) is the name of the platform
|
||||
that is currently being built): rules for the specific platform,
|
||||
located in the platform's subdirectory in the platform/
|
||||
directory.
|
||||
|
||||
* Makefile.$(CPU) (where $(CPU) is the name of the CPU or
|
||||
microcontroller architecture used on the platform for which
|
||||
Contiki is built): rules for the CPU architecture, located in
|
||||
the CPU architecture's subdirectory in the cpu/ directory.
|
||||
|
||||
* Makefile.$(APP) (where $(APP) is the name of an application in
|
||||
the apps/ directory): rules for applications in the apps/
|
||||
directories. Each application has its own makefile.
|
||||
|
||||
The Makefile in the project's directory is intentionally simple. It
|
||||
specifies where the Contiki source code resides in the system and
|
||||
includes the system-wide Makefile, Makefile.include. The project's
|
||||
makefile can also define in the APPS variable a list of applications
|
||||
from the apps/ directory that should be included in the Contiki
|
||||
system. The Makefile used in the hello-world example project looks
|
||||
like this:
|
||||
|
||||
CONTIKI = ../..
|
||||
all: hello-world
|
||||
include $(CONTIKI)/Makefile.include
|
||||
|
||||
First, the location of the Contiki source code tree is given by
|
||||
defining the CONTIKI variable. Next, the name of the application is
|
||||
defined. Finally, the system-wide Makefile.include is included.
|
||||
|
||||
The Makefile.include contains definitions of the C files of the core
|
||||
Contiki system. Makefile.include always reside in the root of the
|
||||
Contiki source tree. When make is run, Makefile.include includes the
|
||||
Makefile.$(TARGET) as well as all makefiles for the applications in
|
||||
the APPS list (which is specified by the project's Makefile).
|
||||
|
||||
Makefile.$(TARGET), which is located in the platform/$(TARGET)/
|
||||
directory, contains the list of C files that the platform adds to the
|
||||
Contiki system. This list is defined by the CONTIKI_TARGET_SOURCEFILES
|
||||
variable. The Makefile.$(TARGET) also includes the Makefile.$(CPU)
|
||||
from the cpu/$(CPU)/ directory.
|
||||
|
||||
The Makefile.$(CPU) typically contains definitions for the C compiler
|
||||
used for the particular CPU. If multiple C compilers are used, the
|
||||
Makefile.$(CPU) can either contain a conditional expression that
|
||||
allows different C compilers to be defined, or it can be completely
|
||||
overridden by the platform specific makefile Makefile.$(TARGET).
|
Loading…
Reference in a new issue