X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ce3b234c639f0d20b4fc60704294b0cb32d4b2cb..52fd53c1927b271828348841b782281f64b7bef8:/doc/doxygen/install.doc
diff --git a/doc/doxygen/install.doc b/doc/doxygen/install.doc
index b257156a11..88d880eaec 100644
--- a/doc/doxygen/install.doc
+++ b/doc/doxygen/install.doc
@@ -62,21 +62,42 @@ will appear on the top of the resulting page.
@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.
+ - 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).
+ SimGrid compiles well with `clang` too.
- 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.
+ You need cmake version 2.8.8 or higher.
+ `ccmake` provides a nicer graphical interface compared to `cmake`.
+ Press `t` in `ccmake` if you need to see absolutely all
+ configuration options (e.g., if your python installation is not standard).
- 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`
- - Debian / Ubuntu: `apt-get install libboost-dev libboost-context-dev`
- - Java (if you want to build the Java bindings): Grab a
- [full JDK](http://www.oracle.com/technetwork/java/javase/downloads)
+ - Java (if you want to build the Java bindings):
+ - Debian / Ubuntu: `apt-get install default-jdk libgcj17-dev` (any
+ version of libgcj will do it; you can use libgcj16-dev or libgcj18-dev
+ instead, depending on your version of Debian/Ubuntu)
+ - 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): Your version of Lua
+ must be 5.3. SimGrid won't work with Lua 5.2 nor with 5.1, and
+ probably not with Lua 5.4 either.
+ - 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 and @ref install_src_32bits
+@ref install_cmake_windows, @ref install_java and @ref install_src_32bits
@subsection install_src_fetch Getting the Sources
@@ -101,38 +122,51 @@ git clone git://scm.gforge.inria.fr/simgrid/simgrid.git simgrid
@subsection install_src_config Build Configuration
-Note that compile-time options are very different from @ref options "run-time options".
-
-@subsubsection install_cmake_howto Compilation Options
-
-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:
+This section is about *compile-time options*, that are very different
+from @ref options "run-time options". Compile-time options fall into
+two categories. @ref install_cmake_list "SimGrid-specific options"
+define which part of the framework to compile while
+@ref install_cmake_howto "generic options" are provided by cmake
+itself.
+
+@subsubsection install_cmake_howto Generic build-time options
+
+These options specify for example the path to various system elements
+(Python path, compiler to use, etc). In most case, cmake automatically
+discovers the right value for these ones, but you can set them
+manually on need. Notable such variables include @c CC and @c CXX,
+defining respectively the C and C++ compiler executables, @c CFLAGS
+and @c CXXFLAGS respectively specifying extra options to pass to the C
+and C++ compilers, or @c PYTHON_EXECUTABLE specifying the path to the
+python executable. The best way to discover the exact name of the
+option that you need to change is to press 't' in the ccmake graphical
+interface, as all options are shown (and documented) in the advanced
+mode.
+
+Once you know their name, there is several ways to change the value of
+build-time options. You can naturally use the ccmake graphical
+interface for that, or you can use environment variables, or you can
+prefer the @c -D flag of @c cmake.
+
+For example, you can change the compilers with environment variables
+by issuing these commands before launching cmake:
@verbatim
-export CC=gcc-4.7
-export CXX=g++-4.7
+export CC=gcc-5.1
+export CXX=g++-5.1
@endverbatim
-Note that other variables are available, such as CFLAGS and CXXFLAGS to add options respectively for the C and C++
-compilers.
-
-Another way to do so is to use the -D argument of cmake as follows.
+The same can be done by passing @c -D parameters to cmake, as follows.
Note that the ending dot is mandatory (see @ref install_cmake_outsrc).
@verbatim
cmake -DCC=clang -DCXX=clang++ .
@endverbatim
-Finally, you can use the ccmake graphical interface to change these settings.
-
-@verbatim
-ccmake .
-@endverbatim
-
@subsubsection install_cmake_list SimGrid compilation options
-In addition to the classical cmake configuration variables, SimGrid accepts several options, as listed below.
+Here is the list of SimGrid-specific @ref install_src_config
+"build-time options".
@li CMAKE_INSTALL_PREFIX (path): Where to install SimGrid (/opt/simgrid, /usr/local, or elsewhere).
@@ -158,7 +192,7 @@ In addition to the classical cmake configuration variables, SimGrid accepts seve
Jedule external tool.
@li enable_lua (ON/OFF) to enjoy the lua bindings to the
- SimGrid internals.
+ SimGrid internals (this require the liblua5.3-dev and lua-5.3 packages or equivalent).
@li enable_lib_in_jar (ON/OFF) to make sure that the native
java bindings are bundled in the jar file.
@@ -170,11 +204,10 @@ In addition to the classical cmake configuration variables, SimGrid accepts seve
@li enable_maintainer_mode (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_mallocators (ON/OFF) has to be disabled when tracking memory issues within SimGrid, or the caching
- mechanism used internally will fool the debuggers.
+ @li enable_mallocators (ON/OFF) has to be disabled when tracking memory issues within SimGrid,
+ or our internal memory caching mechanism will fool the debuggers.
- @li enable_model-checking (ON/OFF) if you actually plan to
- use the model-checking feature of SimGrid. This execution mode
+ @li enable_model-checking (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.
@@ -255,6 +288,44 @@ with MS Visual C. cl
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
+~~~~
+
+Note that the filename ```jni.h``` was removed from the path.
+
@subsubsection install_src_32bits 32 bits Builds on Multi-arch Linux
On a multiarch x86_64 Linux, it should be possible to compile a 32 bit
@@ -274,7 +345,7 @@ cmake . \
If needed, implement @c i686-linux-gnu-gfortran as a script:
@verbatim
-#!/bin/sh
+#!/usr/bin/env sh
exec gfortran -m32 "$@"
@endverbatim