Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
better documentation of the lua dependencies for install
[simgrid.git] / doc / doxygen / install.doc
index d78e20a..83364b1 100644 (file)
-/*! 
-\page install Installing Simgrid
-
-\section install_cmake Installing the SimGrid library
+/*! @page install Installing Simgrid
+
+@tableofcontents
+
+SimGrid should work out of the box on Linux, Mac OSX, FreeBSD, and Windows (under windows, only the Java interfaces are
+available at the moment).
+
+The easiest way to install SimGrid is to go for a @ref install_binary "binary package". Under Debian or Ubuntu, this is 
+very easy as SimGrid is directly integrated to the official repositories. For other Linux variants, you probably want 
+to go for a @ref install_src "source install". Please contact us if you want to contribute the build scripts for your 
+preferred distribution. If you just want to use @ref install_binary_java "Java", simply copy the jar file on your disk 
+and you're set.
+
+@section install_binary Pre-compiled Packages
+
+@subsection install_binary_linux Binaries for Linux
+
+Most of us use a Debian or Ubuntu system, so the packages for these
+systems are well integrated and up-to-date. To get these packages, simply type:
+
+@verbatim
+apt-get install simgrid
+@endverbatim
+
+@subsection install_binary_java Stable Java Package 
+
+For the SimGrid Java bindings, grab the jar file from the [download
+page](https://gforge.inria.fr/frs/?group_id=12) and copy it in your
+classpath (typically, your source code root directory). This
+self-contained version even includes the SimGrid native components for
+the following architectures: Linux (Amd64, x86, Arm), Mac OS X 64
+bits, Windows 64 bits, FreeBSD (64 bits).
+
+@subsection install_binary_java_builder Nightly built Java Package
+
+For Windows, head to [AppVeyor](https://ci.appveyor.com/project/simgrid/simgrid).
+Click on the artefact link on the right, and grab your file. If the latest build failed, there will be no artefact. Then
+you will need to first click on "History" on the top and search for the last successful build.
+
+For non-Windows systems (Linux, Mac or FreeBSD), head to [Jenkins](https://ci.inria.fr/simgrid/job/SimGrid-Multi).
+In the build history, pick the last green (or at least yellow) build that is not blinking (i.e., not currently under 
+build). In the list, pick a system that is close to yours, and click on the ball in the Debug row. The build artefact 
+will appear on the top of the resulting page.
+
+@subsection install_binary_java_troubleshooting Binary Java Troubleshooting
+
+ - **Your architecture is not supported by this jarfile**. \n
+   If your system is in the list of the supported architectures (see
+   @ref install_binary_java "above"), then this is probably a bug that 
+   @ref contributing_bugs "you should report".\n
+   If your system is actually not supported, you should compile your
+   own jarfile @ref install_src "by compiling SimGrid" on your
+   machine. If you feel so, @ref community_contact "contact us" so that we add
+   your architecture to the list.
+
+ - **Library not found: boost-context**.\n 
+   You should obviously install the @c boost-context library on your
+   machine, for example with @c apt-get.
+
+@section install_src Source Installs
+
+@subsection install_src_deps Getting the Dependencies
+
+Recompiling an official archive is not much more complex. SimGrid only uses very standard tools:
+  - C compiler, C++ compiler, make and friends. SimGrid is rather
+    demanding on the compiler. We use the C++11 standard, and older
+    compilers tend to fail on us. It seems that g++ 5.0 or higher is
+    required nowadays (because of boost).
+  - perl (but you may try to go without it)
+  - We use cmake to configure our compilation
+      ([download page](http://www.cmake.org/cmake/resources/software.html)).
+      You need cmake version 2.8.8 or higher. You may want to use ccmake
+      for a graphical interface over cmake.
+  - boost:
+    - Debian / Ubuntu: `apt-get install libboost-dev libboost-context-dev`
+    - Max OS X: with [fink](http://www.finkproject.org/): `fink install boost1.53.nopython`,
+      or with homebrew: `brew install boost`
+  - Java (if you want to build the Java bindings): 
+    - Debian / Ubuntu: `apt-get install default-jdk`
+    - Mac OS X or Windows: Grab a [full JDK](http://www.oracle.com/technetwork/java/javase/downloads)
+  - Lua (if you want to build with lua enabled):
+    - Debian / Ubuntu: `apt-get install liblua5.3-dev lua5.3`
+    - Windows: choco install lua53
+    - From the source: you need to patch the sources to build dynamic libraries 
+      - [Download lua 5.3](http://www.lua.org/download.html). SimGrid
+        won't work with lua 5.2 as lua breaks the compatibility.
+      - Open the archive: `tar xvfz lua-5.3.*.tar.gz`
+      - Enter the directory: `cd lua-5.3*`
+      - Patch the sources: `patch -p1 < /path/to/simgrid/...../tools/lualib.patch`
+      - Build and install lua: `make linux && sudo make install`
+
+For platform-specific details, please see  @ref install_cmake_mac,
+@ref install_cmake_windows, @ref install_java and @ref install_src_32bits
+
+@subsection install_src_fetch Getting the Sources
+
+You can download the *@SimGridRelease.tar.gz* archive from the 
+[download page](https://gforge.inria.fr/frs/?group_id=12).
+Then, recompiling the archive should be done in a few lines:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.sh}
+tar xf @SimGridRelease.tar.gz
+cd @SimGridRelease
+cmake -DCMAKE_INSTALL_PREFIX=/opt/simgrid .
+make
+make install
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-\subsection install_installing_cmake Installing cmake
+If you want to stay on the bleeding edge, you should get the latest git version, and recompile it as you would do for 
+an official archive. Depending on the files you change in the source tree, some extra tools may be needed.
 
-You must have cmake in order to compile SimGrid. If you cannot find a
-binary package of cmake for your system, you'll need to recompile it.
-In turn, cmake has a few dependencies:
+@verbatim
+git clone git://scm.gforge.inria.fr/simgrid/simgrid.git simgrid
+@endverbatim
 
-For Unix and MacOS:
-  \li make
-  \li perl and libpcre
-  \li c and c++ compiler
-  \li ccmake for graphical used of CMake
-  \li cmake <a href="http://www.cmake.org/cmake/resources/software.html">(download page)</a>
+@subsection install_src_config Build Configuration
 
-On MacOSX some users reported that it is still possible to build with clang, provided that you
-use at least clang3.0 installed with macport or with xcode. If it fails on you, try to
- use gcc47.
-\verbatim
-port install clang-3.0
-port install gcc47
-\endverbatim
+Note that compile-time options are very different from @ref options "run-time options".
 
-For Windows:
-  \li cmake 2.8 <a href="http://www.cmake.org/cmake/resources/software.html">(download page)</a>
-  \li MinGW <a href="http://sourceforge.net/projects/mingw/files/MinGW/">(download page)</a>
-  \li perl <a href="http://www.activestate.com/activeperl/downloads">(download page)</a>
-  \li git <a href="http://msysgit.googlecode.com/files/Git-1.7.4-preview20110204.exe">(download page)</a>
+@subsubsection install_cmake_howto Compilation Options
 
-Note that if you want change the compiler, you can simply specify the environment variables CC and CXX.
-\verbatim
-       export CC=gcc-4.4
-       export CXX=g++-4.4
-       export CC=clang
-       export CXX=clang++
-\endverbatim
+The default configuration should be fine for most usages, but if you need to change something, there are several ways 
+to do so. First, you can use environment variables. For example, you can change the compilers used by issuing these 
+commands before launching cmake:
 
-\subsubsection install_cmakeoption1 SimGrid configuration options
+@verbatim
+export CC=gcc-5.1
+export CXX=g++-5.1
+@endverbatim
 
-\verbatim
-"cmake -D[name]=[value] ... ./"
+Note that other variables are available, such as CFLAGS and CXXFLAGS to add options respectively for the C and C++ 
+compilers.
 
-[name]         enable_gtnets           [value] ON/OFF or TRUE/FALSE or 1/0
-       enable_ns3                      ON/OFF or TRUE/FALSE or 1/0
-       enable_lua                      ON/OFF or TRUE/FALSE or 1/0
-       enable_compile_optimizations    ON/OFF or TRUE/FALSE or 1/0
-       enable_compile_warnings         ON/OFF or TRUE/FALSE or 1/0
-       enable_smpi                     ON/OFF or TRUE/FALSE or 1/0
-       enable_maintainer_mode          ON/OFF or TRUE/FALSE or 1/0
-       enable_tracing                  ON/OFF or TRUE/FALSE or 1/0
-       enable_coverage                 ON/OFF or TRUE/FALSE or 1/0
-       enable_memcheck                 ON/OFF or TRUE/FALSE or 1/0
-       enable_model-checking           ON/OFF or TRUE/FALSE or 1/0
-       enable_debug                    ON/OFF or TRUE/FALSE or 1/0
-       enable_jedule                   ON/OFF or TRUE/FALSE or 1/0
-       enable_latency_bound_tracking   ON/OFF or TRUE/FALSE or 1/0
-       enable_lib_static               ON/OFF or TRUE/FALSE or 1/0
-       enable_supernovae               ON/OFF or TRUE/FALSE or 1/0
-       enable_msg_deprecated           ON/OFF or TRUE/FALSE or 1/0
-       enable_print_message            ON/OFF or TRUE/FALSE or 1/0
-       gtnets_path                     <path_to_gtnets_directory>
-       ns3_path                        <path_to_ns3_directory>
-       CMAKE_INSTALL_PREFIX            <path_to_install_directory>
-       pipol_user                      <pipol_username>
-\endverbatim
+Another way to do so is to use the -D argument of cmake as follows.
+Note that the ending dot is mandatory (see @ref install_cmake_outsrc).
 
-  \li enable_gtnets: set to true implies that user wants to use gtnets.
+@verbatim
+cmake -DCC=clang -DCXX=clang++ .
+@endverbatim
 
-  \li enable_ns3: set to true implies that user wants to use ns3.
+Finally, you can use the ccmake graphical interface to change these settings. 
 
-  \li enable_lua: set to true implies that user wants to add lua language into simgrid compilation.
+@verbatim
+ccmake .
+@endverbatim
 
-  \li enable_compile_optimizations: add flags "-O3 -finline-functions -funroll-loops -fno-strict-aliasing"
+@subsubsection install_cmake_list SimGrid compilation options
 
-  \li enable_compile_warnings: add flags "-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror"
+In addition to the classical cmake configuration variables, SimGrid accepts several options, as listed below.
 
-  \li enable_smpi: Set to true if you want to use smpi lib. Actually on simgrid v3.4.1 Mac doesn't support lib smpi.
+  @li <b>CMAKE_INSTALL_PREFIX</b> (path): Where to install SimGrid (/opt/simgrid, /usr/local, or elsewhere).
 
-  \li enable_maintainer_mode: set to true it remakes some files.
+  @li <b>enable_compile_optimizations</b> (ON/OFF) to request the compiler to produce efficient code. You want to 
+      activate it, unless you plan to debug SimGrid itself. Indeed, efficient code may be appear mangled to debuggers.
 
-  \li enable_tracing: To enable the generation of simulation traces for visualization.
+  @li <b>enable_compile_warnings</b> (ON/OFF) to request the compiler to issue error messages whenever the source code
+      is not perfectly clean. If you are a SimGrid developer, you have to activate this option to enforce the code 
+      quality. As a regular user, this option will bring you nothing.
 
-  \li enable_coverage: When set to true this option enable code coverage by setting -fprofile-arcs -ftest-coverage flags.
+  @li <b>enable_debug</b> (ON/OFF). Disable this option toto discard
+      all log messages of gravity debug or below at compile time (see
+      @ref XBT_log). The resulting code is faster than if you
+      discarding these messages at runtime. However, it obviously
+      becomes impossible to get any debug info from SimGrid if
+      something goes wrong.
 
-  \li enable_memcheck: When set to true this option enable tests for memcheck.
+  @li <b>enable_documentation</b> (ON/OFF) to generate the documentation pages.
 
-  \li enable_model-checking: Enable the model checking when set to true.
+  @li <b>enable_java</b> (ON/OFF) to enjoy the java bindings of SimGrid.
 
-  \li enable_debug: If enable_debug is set to 'off' Simgrid compile flag has '-DNDEBUG' option.
+  @li <b>enable_jedule</b> (ON/OFF) to get SimDag producing execution traces that can then be visualized with the 
+      Jedule external tool.
 
-  \li enable_jedule: To enable jedule mode, which creates visualizations of task schedules with Simdag.
+  @li <b>enable_lua</b> (ON/OFF) to enjoy the lua bindings to the
+      SimGrid internals (this require the liblua5.3-dev and lua-5.3 packages or equivalent).
 
-  \li enable_latency_bound_tracking: Set to on if you want to be warned when communications are limited by round trip time.
+  @li <b>enable_lib_in_jar</b> (ON/OFF) to make sure that the native
+      java bindings are bundled in the jar file.
 
-  \li enable_lib_static: Enable generated Simgrid and smpi static libraries.
+  @li <b>enable_lto</b> (ON/OFF) to enable the Link Time Optimization
+      of the C compiler. This feature really speeds up the produced
+      code, but it is fragile with some versions of GCC.
 
-  \li enable_supernovae: Set to true make one file for each lib and compile with those generated files.
+  @li <b>enable_maintainer_mode</b> (ON/OFF) is only needed if you plan to modify very specific parts of SimGrid
+      (e.g., the XML parsers and other related elements). Moreover, this adds an extra dependency on flex and flexml.
 
-  \li enable_msg_deprecated: Simgrid is compiled with msg deprecated functions.
+  @li <b>enable_mallocators</b> (ON/OFF) has to be disabled when tracking memory issues within SimGrid, 
+      or our internal memory caching mechanism will fool the debuggers.
 
-  \li enable_print_message: When set to true configuration print more debug output.
+  @li <b>enable_model-checking</b> (ON/OFF) This execution gear
+      is very usable now, but enabling this option at compile time
+      will **hinder simulation speed** even when the model-checker is
+      not activated at run time.
 
-  \li gtnets_path: Path to gtnets install directory (ex /usr)
+  @li <b>enable_ns3</b> (ON/OFF) if you want to use ns-3. See section @ref pls_ns3.
 
-  \li ns3_path: Path to ns3 install directory (ex /usr)
+  @li <b>enable_smpi</b> (ON/OFF) to run MPI code on top of SimGrid.
 
-  \li CMAKE_INSTALL_PREFIX: Path where are installed lib/ doc/ and include/ directories (ex /usr/local)
+  @li <b>enable_smpi_ISP_testsuite</b> (ON/OFF) to add many extra
+      tests for the model-checker module.
 
-  \li pipol_user: specify your pipol username if you want to use the pipol-remote command.
+  @li <b>enable_smpi_MPICH3_testsuite</b> (ON/OFF) to add many extra
+      tests for the MPI module.
 
-\subsubsection install_cmakeoption3 Initialization
+@subsubsection install_cmake_reset Reset the build configuration
 
-Those options are initialized the first time you launch "cmake ." without specified option.
+To empty the cmake cache (either when you add a new library or when
+things go seriously wrong), simply delete your @c CMakeCache.txt. You
+may also want to directly edit this file in some circumstances.
 
-\verbatim
-enable_gtnets                  on
-enable_lua                     on
-enable_smpi                    on
-enable_tracing                 on
-enable_compile_optimizations   on
-enable_debug                   on
-enable_compile_warnings                off
-enable_maintainer_mode         off
-enable_coverage                off
-enable_memcheck                off
-enable_model-checking          off
-enable_jedule                  off
-enable_latency_bound_tracking  off
-enable_lib_static              off
-CMAKE_INSTALL_PREFIX           /usr/local
-gtnets_path                    null
-pipol_user                     null
-\endverbatim
+@subsubsection install_cmake_outsrc Out of Tree Compilation
 
-\subsubsection install_cmakeoption4 How to reset the cache of options
+By default, the files produced during the compilation are placed in
+the source directory. It is however often better to put them all in a
+separate directory: cleaning the tree becomes as easy as removing this
+directory, and you can have several such directories to test several
+parameter sets or architectures.
 
-When options have been set they are keep into a cache file named "CMakeCache.txt". So if you want
-reset values you just delete this file located to the project directory.
+For that, go to the directory where the files should be produced, and
+invoke cmake (or ccmake) with the full path to the SimGrid source as
+last argument.
 
-\subsection install_cmakecompilation Cmake compilation
+@verbatim
+mkdir build
+cd build
+cmake [options] ..
+make
+@endverbatim
 
-\subsubsection install_cmakecompilation1 With command line.
+@subsubsection install_cmake_mac Mac OS X Builds
 
-On Unix or Mac platform:
+SimGrid compiles like a charm with clang (version 3.0 or higher) on Mac OS X:
 
-\verbatim
-cmake -D[name]=[value] ... ./
+@verbatim
+cmake -DCMAKE_C_COMPILER=/path/to/clang -DCMAKE_CXX_COMPILER=/path/to/clang++ .
 make
-\endverbatim
-
-On Windows platform:
-
-\verbatim
-cmake -G"MinGW Makefiles" -D[name]=[value] ... ./
-mingw32-make
-\endverbatim
-
-\subsubsection install_cmakecompilation2 With ccmake tool.
-
-\verbatim
-"ccmake ./"
-\endverbatim
-Then follow instructions.
-
-\subsubsection install_cmakecompilation2bis Build out of source.
-
-As cmake generate many files used for compilation, we recommend to make a build directory.
-For examples you can make:
-
-\verbatim
-"navarrop@caraja:~/Developments$ cd simgrid/"
-"navarrop@caraja:~/Developments/simgrid$ mkdir build_directory"
-"navarrop@caraja:~/Developments/simgrid$ cd build_directory/"
-"navarrop@caraja:~/Developments/simgrid/build_directory$ cmake ../"
-"navarrop@caraja:~/Developments/simgrid/build_directory$ make"
-\endverbatim
-
-Or completely out of sources:
-
-\verbatim
-"navarrop@caraja:~/Developments$ mkdir build_dir"
-"navarrop@caraja:~/Developments$ cd build_dir/"
-"navarrop@caraja:~/Developments/build_dir$ cmake ../simgrid/"
-"navarrop@caraja:~/Developments/build_dir$ make"
-\endverbatim
-
-Those two kinds of compilation allow to delete files created by compilation more easily.
-
-\subsubsection install_cmakecompilation3 Resume of command line
-
- \li CMake
-\verbatim
-cmake <path>                   configure the project for Unix and Mac
-cmake -G"MinGW Makefiles" <path>       configure the project for Windows
-make                           build all targets for Unix and Mac
-ming32-make                            build all targets for windows
-(g)make VERBOSE=1              build all targets and print build command lines
-make check                     test all targets and summarize
-make dist                      make the distrib
-make distcheck                 check the dist (make + make dist + make check)
-(g)make install                install the project (doc/ bin/ lib/ include/)
-(g)make uninstall              uninstall the project (doc/ bin/ lib/ include/)
-(g)make clean                  clean all targets
-make simgrid_documentation     Create simgrid documentation
-\endverbatim
-
-When the project have been successfully compiling and build you can make tests.
-
- \li CTest
-\verbatim
-ctest                  launch only tests
-ctest -D Continuous
-ctest -D Continuous(Start|Update|Configure|Build)
-ctest -D Continuous(Test|Coverage|MemCheck|Submit)
-ctest -D Experimental
-ctest -D Experimental(Start|Update|Configure|Build)
-ctest -D Experimental(Test|Coverage|MemCheck|Submit)
-ctest -D Nightly
-ctest -D Nightly(Start|Update|Configure|Build)
-ctest -D Nightly(Test|Coverage|MemCheck|Submit)
-ctest -D NightlyMemoryCheck
-\endverbatim
-
-If you want to test before make a commit you can simply make "ctest -D Experimental" and then you can visualize results submitted into Cdash. <a href="http://cdash.inria.fr/CDash/index.php?project=Simgrid">(Go to Cdash site)</a>.
-
-\subsection install_cmakeinstall How to install with cmake?
-
-\subsubsection install_cmakeinstall1 From Git.
-
-\verbatim
-git clone git://scm.gforge.inria.fr/simgrid/simgrid.git simgrid
-cd simgrid
-cmake -Denable_maintainer_mode=on -DCMAKE_INSTALL_PREFIX=/home/navarrop/Bureau/install_simgrid ./
+@endverbatim
+
+With the XCode version of clang 4.1, you may get the following error message:
+@verbatim
+CMake Error: Parse error in cache file build_dir/CMakeCache.txt. Offending entry: /SDKs/MacOSX10.8.sdk
+@endverbatim
+
+In that case, edit the CMakeCache.txt file directly, so that the
+CMAKE_OSX_SYSROOT is similar to the following. Don't worry about the
+warning that the "-pthread" argument is not used, if it appears.
+@verbatim
+CMAKE_OSX_SYSROOT:PATH=/Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer
+@endverbatim
+
+In the El Capitan version of Max OS X, Apple decided that users don't
+need no /usr/include directory anymore. If you are hit by this pure
+madness, just run the following command to restore that classical
+UNIX directory: `xcode-select -install`
+
+@subsubsection install_cmake_windows Windows Builds
+
+Building SimGrid on Windows may be something of an adventure:
+We only manage to  do so ourselves with MinGW-64, <a
+href="http://www.activestate.com/activeperl/downloads">ActiveState</a>
+Perl and <a href="http://msysgit.googlecode.com/files/Git-1.7.4-preview20110204.exe">msys</a>
+git). Have a look at out configuration scripts in @c appveyor.yml, but
+don't expect too much  from us: we are really not fluent with Windows.
+Actually your help is welcome.
+
+The drawback of MinGW-64 is that the produced DLL are not compatible
+with MS Visual C. <a href="http://clang.llvm.org/docs/MSVCCompatibility.html">clang-cl</a>
+sounds promising to fix this. If you get something working, please
+@ref community_contact "tell us".
+
+@subsubsection install_java Build the Java bindings
+
+Once you have the [full JDK](http://www.oracle.com/technetwork/java/javase/downloads) installed
+(on Debian/Ubuntu, grab the package ```default-jdk``` for that), things should be as simple as:
+
+~~~~{.sh}
+cmake -Denable_java=ON .
+make 
+~~~~
+
+After the compilation, the file ```simgrid.jar``` is produced in the
+root directory. If you only want to build the jarfile and its
+dependencies, type ```make simgrid-java_jar```. It will save you the
+time of building every C examples and other things that you don't need
+for Java.
+
+** **Error: jni could not be found**. Sometimes, the build system fails
+to find the JNI headers. In this case, you need to first locate them as follows:
+
+~~~~{.sh}
+$ locate jni.h
+/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h
+~~~~
+
+Then, set the JAVA_INCLUDE_PATH environment variable to the right
+path, and relaunch cmake. If you have several version of jni installed
+(as above), use the right one (check the java version you use with
+```javac -version```).
+
+~~~~{.sh}
+export JAVA_INCLUDE_PATH=/usr/lib/jvm/java-8-openjdk-amd64/include/
+cmake -Denable_java=ON .
 make
-make install
-\endverbatim
+~~~~
 
-\subsubsection install_cmakeinstall2 From a distrib
+Note that the filename ```jni.h``` was removed from the path.
 
-\verbatim
-wget https://gforge.inria.fr/frs/download.php/28674/simgrid-3.6.1.tar.gz
-tar xf simgrid-3.6.1.tar.gz
-cd simgrid-3.6.1
-cmake -DCMAKE_INSTALL_PREFIX=/home/navarrop/Bureau/install_simgrid ./
-make
-make install
-\endverbatim
+@subsubsection install_src_32bits 32 bits Builds on Multi-arch Linux
 
-\section install_Win Installing the SimGrid framework on Windows
+On a multiarch x86_64 Linux, it should be possible to compile a 32 bit
+version of SimGrid with something like:
 
-\subsection install_Win_install Installing SimGrid with the automatic installer
+@verbatim
+CFLAGS=-m32 \
+CXXFLAGS=-m32 \
+PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig/ \
+cmake . \
+-DCMAKE_SYSTEM_PROCESSOR=i386 \
+-DCMAKE_Fortran_COMPILER=/some/path/to/i686-linux-gnu-gfortran \
+-DGFORTRAN_EXE=/some/path/to/i686-linux-gnu-gfortran \
+-DCMAKE_Fortran_FLAGS=-m32
+@endverbatim
 
-Before start the installation, you need to be sure to have the following dependencies:
-  \li cmake 2.8 <a href="http://www.cmake.org/cmake/resources/software.html">(download page)</a>
-  \li MinGW <a href="http://sourceforge.net/projects/mingw/files/MinGW/">(download page)</a>
-  \li perl <a href="http://www.activestate.com/activeperl/downloads">(download page)</a>
-  \li git <a href="http://msysgit.googlecode.com/files/Git-1.7.4-preview20110204.exe">(download page)</a>
-
-Then download the package <a href="https://gforge.inria.fr/frs/?group_id=12">SimGrid Installer</a>,
-execute it and follow instructions.
-
-\htmlonly
-<a href="win_install_01.png" border=0><img src="win_install_01.png" border=0></a>
-\endhtmlonly
+If needed, implement @c i686-linux-gnu-gfortran as a script:
 
-Step 1: Accept the license.
-
-\htmlonly
-<a href="win_install_02.png" border=0><img src="win_install_02.png" border=0></a>
-\endhtmlonly
-
-Step 2: Select packets to install.
+@verbatim
+#!/bin/sh
+exec gfortran -m32 "$@"
+@endverbatim
 
-\htmlonly
-<a href="win_install_03.png" border=0><img src="win_install_03.png" border=0></a>
-\endhtmlonly
-
-Step 3: Choice where to install packets previously selected. Please don't use spaces in path.
-
-\htmlonly
-<a href="win_install_04.png" border=0><img src="win_install_04.png" border=0></a>
-\endhtmlonly
-
-Step 4: Add CLASSPATH to environment variables.
-
-\htmlonly
-<a href="win_install_05.png" border=0><img src="win_install_05.png" border=0></a>
-\endhtmlonly
-
-Step 5: Add PATH to environment variables.
-
-\htmlonly
-<a href="win_install_06.png" border=0><img src="win_install_06.png" border=0></a>
-\endhtmlonly
-
-Step 6: Restart your computer to take in consideration environment variables.
-
-\subsection install_Win_compile1 Compile a project "HelloWorld"
-
-In the SimGrid install directory you should have an HelloWorld project to explain you how to start
-compiling a source file. There are:
-\verbatim
-- HelloWorld.c         The example source file.
-- CMakeLists.txt       It allows to configure the project.
-- FindPCRE.cmake       This finds and links to the pcre library (Normally included
-                        into Simgrid directory "GnuWin32").
-- README               This explaination.
-\endverbatim
-
-Now let's compile this example:
-\li Run windows shell "cmd".
-\li Open HelloWorld Directory ('cd' command line).
-\li Create a build directory and change directory. (optional)
-\li Type 'cmake -G"MinGW Makefiles" \<path_to_HelloWorld_project\>'
-\li Run mingw32-make
-\li You should obtain a runnable example ("HelloWorld.exe").
-
-For compiling your own code you can simply copy the HelloWorld project and rename source name. It will
-create a target with the same name of the source.
-
-\subsection install_Win_compile2 How to add and compile a new example
-
-\li Put your source file into the helloWord directory.
-\li Edit CMakeLists.txt by removing the Find Targets section and add those two lines into this section
-\verbatim
-################
-# FIND TARGETS #
-################
-#It creates a target called 'TARGET_NAME.exe' with the sources 'SOURCES'
-add_executable(TARGET_NAME SOURCES)
-#Links TARGET_NAME with simgrid and pcre
-target_link_libraries(TARGET_NAME simgrid pcre)
-\endverbatim
-\li To initialize and build your project, you'll need to run
-\verbatim
-cmake -G"MinGW Makefiles" \<path_to_HelloWorld_project\>
-\endverbatim
-\li Run "mingw32-make"
-\li You should obtain "TARGET_NAME.exe".
-
-\subsection install_Win_ruby Setup a virtualbox to use SimGrid-Ruby on windows
-
-Allan Espinosa made these set of Vagrant rules available so that you
-can use the SimGrid Ruby bindings in a virtual machine using
-VirtualBox. Thanks to him for that. You can find his project here:
-https://github.com/aespinosa/simgrid-vagrant
-
-\section install_mac Installing the SimGrid framework on Mac OS X
-
-The Mac OS X system is part of the UNIX family, but it exhibits some
-specificities that complicate a bit the build of SimGrid. Current
-versions of SimGrid (3.7.x) can only be build with the GCC Compiler,
-but recent OS X version provide only an ancient version of that tool
-in the hope to see the users switch to the LLVM compiler family. The
-problem is that SimGrid uses internal libraries of GCC, for stack
-manipulation for example. We are working on removing this dependency
-onto gcc to ease the build process, but this is still ongoing.
-
-For the time being, you need to get a recent version of GCC on your
-system to build SimGrid. Version 3.7.1  was successfully built on Mac
-Lion 10.7.4 using a GCC compiler retrieved from macport. The package
-used were gcc47, and the binary in the package were gcc-mp-4.7.
-
-\section install_setting_MSG Setting up your own MSG code
-
-Do not build your simulator by modifying the SimGrid examples.  Go
-outside the SimGrid source tree and create your own working directory
-(say <tt>/home/joe/SimGrid/MyFirstScheduler/</tt>).
-
-Suppose your simulation has the following structure (remember it is
-just an example to illustrate a possible way to compile everything;
-feel free to organize it as you want).
-
-\li <tt>sched.h</tt>: a description of the core of the
-    scheduler (i.e. which functions are can be used by the
-    agents). For example we could find the following functions
-    (master, forwarder, slave).
-\li <tt>sched.c</tt>: a C file including <tt>sched.h</tt> and
-    implementing the core of the scheduler. Most of these
-    functions use the MSG functions defined in section \ref
-    msg_task_usage.
-\li <tt>masterslave.c</tt>: a C file with the main function, i.e.
-    the MSG initialization (MSG_init()), the platform
-    creation (e.g. with MSG_create_environment()), the
-    deployment phase (e.g. with MSG_function_register() and
-    MSG_launch_application()) and the call to MSG_main()).
-
-To compile such a program, we suggest to use the following
-Makefile. It is a generic Makefile that we have used many times with
-our students when we teach the C language.
-
-\verbatim
-all: masterslave
-masterslave: masterslave.o sched.o
-
-INSTALL_PATH = $$HOME
-CC = gcc
-PEDANTIC_PARANOID_FREAK =       -O0 -Wshadow -Wcast-align \
-                               -Waggregate-return -Wmissing-prototypes -Wmissing-declarations \
-                               -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \
-                               -Wmissing-noreturn -Wredundant-decls -Wnested-externs \
-                               -Wpointer-arith -Wwrite-strings -finline-functions
-REASONABLY_CAREFUL_DUDE =      -Wall
-NO_PRAYER_FOR_THE_WICKED =     -w -O2
-WARNINGS =                     $(REASONABLY_CAREFUL_DUDE)
-CFLAGS = -g $(WARNINGS)
-
-INCLUDES = -I$(INSTALL_PATH)/include
-DEFS = -L$(INSTALL_PATH)/lib/
-LDADD = -lm -lsimgrid
-LIBS =
-
-%: %.o
-       $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS) $(LDADD) -o $@
-
-%.o: %.c
-       $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) -c -o $@ $<
-
-clean:
-       rm -f $(BIN_FILES) *.o *~
-.SUFFIXES:
-.PHONY: clean
-
-\endverbatim
-
-The first two lines indicates what should be build when typing make
-(<tt>masterslave</tt>) and of which files it is to be made of
-(<tt>masterslave.o</tt> and <tt>sched.o</tt>). This makefile assumes
-that you have set up correctly your <tt>LD_LIBRARY_PATH</tt> variable
-(look, there is a <tt>LDADD = -lm -lsimgrid</tt>). If you prefer using
-the static version, remove the <tt>-lsimgrid</tt> and add a
-<tt>$(INSTALL_PATH)/lib/libsimgrid.a</tt> on the next line, right
-after the <tt>LIBS = </tt>.
-
-More generally, if you have never written a Makefile by yourself, type
-in a terminal: <tt>info make</tt> and read the introduction. The
-previous example should be enough for a first try but you may want to
-perform some more complex compilations...
+@subsection install_src_compil Existing Compilation Targets
 
+In most cases, compiling and installing SimGrid is enough:
 
+@verbatim
+make
+make install # try "sudo make install" if you don't have the permission to write
+@endverbatim
+
+In addition, several compilation targets are provided in SimGrid. If
+your system is well configured, the full list of targets is available
+for completion when using the Tab key. Note that some of the existing
+targets are not really for public consumption so don't worry if some
+stuff doesn't work for you.
+
+@verbatim
+make simgrid                   Build only the SimGrid library and not any example
+make app-masterworker          Build only this example (works for any example)
+make clean                     Clean the results of a previous compilation
+make install                   Install the project (doc/ bin/ lib/ include/)
+make uninstall                 Uninstall the project (doc/ bin/ lib/ include/)
+make dist                      Build a distribution archive (tgz)
+make distcheck                 Check the dist (make + make dist + tests on the distribution)
+make documentation             Create SimGrid documentation
+@endverbatim
+
+If you want to see what is really happening, try adding VERBOSE=1 to
+your compilation requests:
+
+@verbatim
+make VERBOSE=1
+@endverbatim
+
+@subsection install_src_test Testing your build
+
+Once everything is built, you may want to test the result. SimGrid
+comes with an extensive set of regression tests (as described in the
+@ref inside_tests "insider manual"). The tests are run with @c ctest, that comes with CMake.
+We run them every commit and the results are on [our
+Jenkins](https://ci.inria.fr/simgrid/).
+
+@verbatim
+ctest                    # Launch all tests
+ctest -R msg              # Launch only the tests which name match the string "msg"
+ctest -j4                 # Launch all tests in parallel, at most 4 at the same time
+ctest --verbose           # Display all details on what's going on
+ctest --output-on-failure # Only get verbose for the tests that fail
+
+ctest -R msg- -j5 --output-on-failure # You changed MSG and want to check that you didn't break anything, huh?
+                                      # That's fine, I do so all the time myself.
+@endverbatim
 
 */