Downloading, installation and compiling of SIFEL

First, the user have to download source files of SIFEL from the SVN system. Then it is necessary to load the SIFEL project into the corresponding development environment of the selected compiler and compile the required modules.

Downloading of SIFEL version

The SIFEL source files are managed by SVN system in one branch on the following link:

SVN - SIFEL

The actual revision number is displayed after visiting the SIFEL reference in the SVN system. There is also possible to view log of revision history and see comments for each revision. The folder structure of SIFEL is placed in trunk/SIFEL. The user is required to select a version in the SVN and the corresponding package can be downloaded in the following link:

SIFEL revision download

There is required to enter revision number and security code and afterwards, the link to the created revision package is displayed.

Other possibility represent versions referenced in the Czech research projects that can be downloaded here. There are references to packages of individual module versions however, these versions are released once a year and they may not be so actual as the ones form SVN.

Installation

Following sections describe installation steps in Linux operating system. In Windows, the similar steps should be followed but with corresponding Windows commands. The main difference is in the compilation of source files where the steps in Windows may differ significantly.

Unpacking files

Copy the downloaded file from SVN to your destination folder and unpack it by command:

tar -xzvf 420.tar.gz

Optionally, the SVN folders branches, tags can be deleted and content of the folder trunk/SIFEL can be shifted up to obtain a better folder structure. Resulting folder structure may look like in the following figure:

Image
Figure 1. - SIFEL folder structure.

Additional required libraries

Generally, there are no additional third party libraries for sequential versions that must be downloaded. The standard C++ library shipped with every C++ compiler is required only. In Linux however, it is recommended to install binutils-dev package which is contained almost in every Linux distribution. With this package installed, the SIFEL allows for the better runtime error handling.

Parallel versions of SIFEL modules require installation of MPI library. The mpicxx command is used for the compilation of source codes of parallel versions in case of Linux

Compilation in Linux OS

In Linux, the gcc/g++ compilers should be installed. The compilation process is controlled by the GNU make system which is the primary compilation tool in SIFEL and only Makefiles are actualized in SVN system. Each folder with source files has the corresponding Makefile which contains receipts for the source file compilation and there are also solved dependencies of the individual parts of code. The code dependencies are depicted in the following figure:

Image
Figure 2. - SIFEL modules dependencies.

For example, it can be observed in figure that in case of MEFEL module, the whole GEFEL library structure must be compiled, MEFEL library sources are compiled and both are linked to obtain MEFEL executable file. There is also file Makefile.in in the root of SIFEL folder structure which contains the common setup of compilation used in all modules. Usually, the source files of modules can be found in the SRC or PREP subfolders where the make command should be invoked.

Compilation is done by the command:

make {    | deb | opt | optdeb}

where the option used determine the switching on/off optimizations of the produced code and debugging symbols. It also determines the output folder for the compiled files.

  • no option given - compile without optimizations, the resulting code will contain debugging symbols, output will be in _DBG folder
  • deb - compiles without optimizations, the resulting code will contain debugging symbols, output will be in _DBG folder, strict compile error detection
  • opt - compiles with optimizations and no debugging symbols, output will be in _OPT folder
  • optdeb - compiles with optimizations and code will contain debugging symbols, output will be in _OPTDBG folder
Cleaning of compiled files of the current module can be made with help of the following command:

make {clean | cleandeb | cleanopt | cleanoptdeb}

where the option used determine which output folder of the given module will be deleted.
  • clean - compiled files in _DBG folder will be deleted
  • cleandeb - compiled files in _DBG folder will be deleted
  • cleanopt - compiled files in _OPT folder will be deleted
  • cleanoptdeb - compiled files in _OPTDBG folder will be deleted
Cleaning of compiled files of the current module and its dependent modules can be made with help of the following command:

make {cleandep | cleandebdep | cleanoptdep | cleanoptdebdep}

where the option used determine which output folder of the given module will be deleted.
  • cleandep - compiled files in _DBG, _OPT and _OPTDBG folders will be deleted and the folders will be removed
  • cleandebdep - compiled files in _DBG folders will be deleted and the folders will be removed
  • cleanoptdep - compiled files in _OPT folders will be deleted and the folders will be removed
  • cleanoptdebdep - compiled files in _OPTDBG folders will be deleted and the folders will be removed

Compilation in Windows OS

SIFEL is based on the GNU make system which is kept actualized in the SVN system. It is possible to obtain the similar functionality under the Windows OS with help of minGW system but should be noted that the 32-bit minGW produces relatively slow code. Another possibility is to import the SIFEL project into some of commercial/free C++ compiler. We have tested the compilation on the following compilers successfully:

All these compilers involve integrated development environment (IDE) where the new project/solution should be created. Inside the project/solution, one static library and one executable project/target should be established for each module of SIFEL except of GEFEL an PARGEF which result in the static library only. In these projects/targets, list of links to the compiled source files of modules should be provided according to the corresponding module Makefile. In make files, the list of compiled source files are defined with help of variable SRCS. If not done automatically by IDE, the dependencies must be defined according to Figure 2. Additionally, it is also necessary to set include file directories for each module target/project in IDE according the corresponding module Makefile. The include file directories are defined in make files with help of variable INCLUDES.

MS Visual Studio C++ 2010 Express - SIFEL project template created from the sequential version 529.


Image