Overview

From the 2.22.0 version, Magics is  using CMake for its compilation and installation. This is a first step towards an homogenisation of the installation procedures for all ECMWF packages. 

Binary versions

Before you install from source code you might want to check that already compiled binary versions are available to you. Magics and third-party dependent software packages might be available as binary packages for you platform in form of RPMs or Debian packages. You might find them by going to the software search services, such as for OpenSuSE and SLES at http://software.opensuse.org/search (select "Search options" - "Include users' home projects"). Ubuntu maintains a Magics version in their system default repository.

Requirements to build Magics

The following table lists the dependency Magics requires to be build from source. Please note, if you install this package from source you also might have to install the respective "-devel" packages of dependencies. 

Compilers
C++http://gcc.gnu.org/ 
Fortranhttp://gcc.gnu.org/fortran/If Fortran or BUFR support needed
Utilities

make

http://www.gnu.org/software/make/ 
cmakehttps://cmake.org> v2.8.4
Python Support
pythonhttp://www.python.org/versions 2.7 and 3.x supported
python-numpyhttp://www.numpy.org/pip install numpy
python-jinja2
pip install jinja2
Third party libraries
projhttp://trac.osgeo.org/proj/Proj4 to handle projections
boosthttp://www.boost.org/ (Requires 1.5)used for coastlines
netcdfhttp://www.unidata.ucar.edu/software/netcdf/

if netcdf support needed

Please note: You also need to install the legacy C++ interface and HDF5

pangohttp://www.pango.org/if png/pdf support needed
expathttp://expat.sourceforge.net/for XML parsing
ECMWF libraries
ecCodesecCodesEnables GRIB and BUFR support 
odb-apiODB-API Homeif ODB support needed

Magics specific CMake options

After changing into the build Magics directory, the user  has to run CMake with his/her own options. The command gives feedback on what requirements are fulfilled and what software is still required. Table below gives an overview of the different options of configure. The default (without any options) will compile a share library only and install it in /usr/local/.

cmake optionsdocdefault
ECCODES_PATHwhere to find eccode ( if non-standard installation  ) 
ENABLE_NETCDFenable netcdf supporton
NETCDF_PATHwhere to find netcdf  ( if non-standard installation  ) 
ENABLE_ODBenable odb supportoff
ODB_API_PATHwhere to find odb ( if non-standard installation  ) 
ENABLE_PYTHONenable python interfaceauto
ENABLE_FORTRANenable fortran interfaceon
ENABLE_METVIEWenable metview support(and Qt support)off
ENABLE_CAIROenable Cairo supporton
BOOST_ROOTwhere to find boost ( if non-standard installation  ) 
PROJ4_PATHwhere to find proj4 ( if non-standard installation  ) 

To make sure that a feature is really enabled, you will have to specify with the option ex: -DENABLE_GRIB=ON. In that case CMake will fail if the GRIB support can not be enabled.

Testing your build

The Magics code contains a directory called test in which, in separate sub-directories, tests for the various interfaces of Magics are provided. Test programs in Fortran, C, Python and MagML are compiled and run if MAGPLUS_HOME=$PWD make check is invoked from the root directory. (Note that the MAGPLUS_HOME needs to be set!)

The output of the tests should verified before the library is installed. This setup does not check if the user setup is correct, but the code in test can be used to do so. More examples of source code can be found on the Magics web gallery .