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 makefileconfiguration/include/autoconf.h contains the setting suitable for inclusion in a C/C++-sourceconfiguration/include/autoconf.tex contains the setting suitable for inclusion in a TeX-sourceconfiguration/include/auto.conf.cmd contains depencies for a makefileconfiguration/include/auto.conf contains the same information as configuration/.config, but states as comment which options were not setTypical usage see make help
Naming Convention:
CONFIG_ as prefix to all optionsLINUX for the linux runtime system)LATEX, since this is reserved for future options to control the creation of the documentationThe 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
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.
Up to now there is a script prl which includes
compiler/prl_cc.incruntime/cc_bin.inc, which includesruntime/linux/bin.inclpc1768/cc_bin.incThe 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
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.
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