Building OTAWA is a long and tedious task as there are a lot of dependencies. The description below gives information to build the core of OTAWA. Next section shows how to build the extensions.
OTAWA uses the Git source manager. To get a module composing OTAWA (called MODULE in the commands below), you have to type:
A simpler option to build and keep sources of OTAWA is use otawa-install.py with the option -B PATH. The sources will be downloaded in PATH, built and installed but the sources won’t be removed at end.
The following tools are required to build OTAWA:
- GNU C++,
- GNU make,
- libxml2 (development version),
- libxslt (development version),
Building the core
The main assumption is that all OTAWA dependencies sources have been unpacked in a directory at the same level as the sources of OTAWA. We call this directory BUILD_DIR and call the installation directory INSTALL_DIR.
So in the same directory, you have to get and build gel, elm and otawa with the following commands:
$ git clone https://git.renater.fr/anonscm/git/otawa/gel.git
$ cd gel
$ cmake . -DCMAKE_INSTALL_PREFIX=INSTALL_DIR
$ make install
$ cdBUILD_DIR $ git clone https://git.renater.fr/anonscm/git/otawa/gelpp.git $ cd gelpp $ cmake . -DCMAKE_INSTALL_PREFIX=INSTALL_DIR $ make install
$ cd.. $ git clone https://git.renater.fr/anonscm/git/elm/elm.git $ cd elm $ cmake . -DCMAKE_INSTALL_PREFIX=INSTALL_DIR $ make install
$ cd ..
$ git clone https://git.renater.fr/anonscm/git/otawa/otawa.git
$ cd otawa
$ cmake . -DCMAKE_INSTALL_PREFIX=INSTALL_DIR
$ make install
After that, executables and libraries can be found, respectively, in INSTALL_DIR/bin and INSTALL_DIR/lib.
Important To get a full version of ELM (required by OTAWA), the header files of libxml2 and libxslt must be available. On most Linux distributions, these libraries are delivered under two packages, the run-time and the development which is not automatically installed.
To build optional modules (loader, micro-architecture, ILP solvers, etc), it is good idea to have otawa-config on your path. This configuration will depends on your OS:
[Linux + SH] export PATH=$PATH:INSTALL_DIR/bin
[Linux + CSH] set path = ($path INSTALL_DIR/bin)
[Windows] Refer to this page. Add the path to INSTALL_DIR/bin.
[Mac] Refer to this page. Add the path to INSTALL_DIR/bin.
An alternate solution is to pass the path to otawa-config when cmake is invoked with the option
Building a micro-architecture
Most micro-architecture support in OTAWA are build in the same way. For a micro-architecture named MICRO available at MICRO_URL (usually
https://git.renater.fr/anonscm/git/otawa/MICRO.git), you have to type:
$ git clone MICRO_URL $ cd MICRO $ cmake . $ make install
The micro-architecture is then usually accessible by owcet with a script a script named MICRO but this depend on the micro-architecture itself (look to the README).
Current micro-architectures includes:
- lpc2138 (ARM)
- tc275 (TriCore) — to come.
- mpc5554 (PowerPC) — to come.
Building a loader
A loader provides to OTAWA the ability to handle an instruction set. There are loaders for ARM, PowerPC, RISC-V, etc. Basically, loader are built from the libraries generated by GLISS, an ISS generator. So (a) GLISS must be available and (b) the corresponding instruction set, GLISS_ARCH, must also be downloaded. If the loader is named ARCH and its address is ARCH_REF (usually
https://git.renater.fr/anonscm/git/otawa/otawa-ARCH), the following commands must be performed:
$ git clone https://git.renater.fr/anonscm/git/gliss2/gliss2.git $ cd gliss2 $ make $ cd .. $ git clone https://git.renater.fr/anonscm/git/gliss2/GLISS_ARCH.git $ cd GLISS_ARCH $ make WITH_DYNLIB=1 $ cd .. $ git clone https://git.renater.fr/anonscm/git/otawa/otawa-ARCH.git $ cd ARCH $ cmake . $ make install
Existing loaders encompass:
- arm (armv7t)
- sparc (to come)
Building a plug-in
OTAWA plug-ins provides extensions like new static analyses, ILP solvers, etc. To install a plug-in named PLUGIN available at PLUGIN_REF (usually
https://git.renater.fr/anonscm/git/otawa/PLUGIN), the following actions has to be performed:
$ git clone https://git.renater.fr/anonscm/git/otawa/PLUGIN.git $ cd PLUGIN $ cmake . $ make install
Current plug-ins includes:
- otawa-clp (data flow analysis by Circular Linerar Progressive values)
- otawa-cplex (ILP solver based on CPlex, see below)
- otawa-icat (instruction cache analysis by categories)
- otawa-dcache (instruction cache analysis by categories)
- otawa-lp_solve5 (ILP solver based on LP-Solve V5, see below)
- otawa-xdd (new BB time analysis based on eXecution Decision Diagrams)
Building special plug-ins
In order to compile this plug-in you have our special version of lp_solve5:
$ wget http://tracesgroup.net/otawa/packages/1.0/lp_solve5.tar.gz $ tar xvf lp_solve5.tar.gz $ cd lp_solve5/lpsolve55 $ sh ccc.linux
Then you can install lp_solve5 plug-in as usual:
$ git clone https://git.renater.fr/anonscm/git/otawa/otawa-lp_solve5.git $ cd otawa-lp_solve5 $ cmake . $ make install
CPlex is a famous ILP server but it is not freely distributed. Depending on your situation, there are different ways to get a working version but OTAWA cannot automatically get it for you. Once you got a version of CPlex, you can apply the following commands (considering the root directory of CPlex being CPLEX_PATH):
$ git clone https://git.renater.fr/anonscm/git/otawa/otawa-cplex.git $ cd otawa-cplex $ cmake -DCPLEX_ROOT=CPLEX_PATH $ make install
OTAWA comes with several tools that make easier the computation of WCET. The building process is very close to the rest of OTAWA stuff:
$ git clone https://git.renater.fr/anonscm/git/otawa/TOOL.git $ cd TOOL $ cmake . $ make install
TOOL may be one of :
- obviews — to visualize in details the program structure and the WCET statistics.
- orange — to compute automatically loop bounds from C sources.
The sources of oRange are a bit particular, so you to follow the process below:
$ git clone https://git.renater.fr/anonscm/git/orange/Frontc.git $ cd frontc $ make $ cd .. $ git clone https://git.renater.fr/anonscm/git/orange/orange.git $ cd orange $ make install ONLY_APP=1 PREFIX=INSTALL_DIR
Where INSTALL_DIR is the installation directory of OTAWA core.