Menu

Build System

Rainer Müller

Configuration

The build system is based on the great work of the linux kernel people. The configuation tool menuconfig is used to define ans select features for the target system(s). The files are located in the top level directory configuration.

The features are structured corresponding to the system packages (compiler.fm runtime.fm, linux.fm, ...) in the subdirectory fm. The structure is flat!

The top level ,Makefile delegates the jobs to sub-Makefiles in various directories. The usual targets like all, help, install, clean are supported.

The generated features for a given configuration are located as follows:

  • configuration/.config contains the settings of the configuration suitable for inclusion in a makefile
  • configuration/include/autoconf.h contains the setting suitable for inclusion in a C/C++-source
  • configuration/include/autoconf.tex contains the setting suitable for inclusion in a TeX-source
  • configuration/include/auto.conf.cmd contains depencies for a makefile
  • configuration/include/auto.conf contains the same information as configuration/.config, but states as comment which options were not set

Typical usage see make help

Naming Convention:

  • the tool adds the stringCONFIG_ as prefix to all options
  • start each option region with a good identifier (e.g. LINUX for the linux runtime system)
  • avoid the identifier LATEX, since this is reserved for future options to control the creation of the documentation

Concept of the OpenPEARL Build System

The configuration part suppilies the build system with all required parameters.
The architecture of the OpenPEARL system with compiler and runtime system is refelcted in the build architecture. Each component is responsible to work according the configuration setting - eg. CONFIG_INSTALL_Target, which defines the installation directory.
The Makefile delegates the individual jobs to the subsystems, which wil do ether the job completly, or prepares the completion by a superior level Makefile, e.g. for the install. process

Specialities in Building the Runtime System

The compilation of the contribuing files is done directly in the individual directory if the source file. This leads to the problem that different target architectur objects files may be present in a directory. To get rid of this problem, the make install ist delegates by the runtime part to e.g linux as (cd linux; make -B install;), which rebuilds all elements not regarding the date.

Generation of the 'prl' Command

Up to now there is a script prl which includes

  • compiler/prl_cc.inc
  • runtime/cc_bin.inc, which includes
    • runtime/linux/bin.inc
    • lpc1768/cc_bin.inc

The processing of the #include statements is done by the includeComposer tool from the runtime system.

All included scripts are called with the filename of the source without extension in the variable fn.
For details of the prl tool check prl -h

Start of the created Application

To start the created executable there is nothing special to do in linux. You can just invoke the build binary. To start the application on the MCU, the prl tool provides the option -r (prl x -r)which downloads the binary code to the target system. Details about the required setup for the download are described in the MCU specific part of the wiki.

Continuous Integration

There is a jenkins server installed, which builds the system and may run test applications to verify the system configuration. To do this job, the file configuration/jenkins.config ist used.
If configuration items are added, the jenkins-configuration must be updated manually.

*** Not all features of the build process are tested yet. ***
*** No automatic tests are configured ***

If you need access to jenkins or ant receive the result mails, please contact r. mueller


MongoDB Logo MongoDB