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 b39d8b1..83364b1 100644 (file)
@@ -33,7 +33,7 @@ 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/mquinson/simgrid).
+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.
 
@@ -62,21 +62,35 @@ 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).
   - 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`
-    - 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`
+    - 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 and @ref install_src_32bits
+@ref install_cmake_windows, @ref install_java and @ref install_src_32bits
 
 @subsection install_src_fetch Getting the Sources
 
@@ -110,8 +124,8 @@ to do so. First, you can use environment variables. For example, you can change
 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++ 
@@ -158,7 +172,7 @@ In addition to the classical cmake configuration variables, SimGrid accepts seve
       Jedule external tool.
 
   @li <b>enable_lua</b> (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 <b>enable_lib_in_jar</b> (ON/OFF) to make sure that the native
       java bindings are bundled in the jar file.
@@ -170,11 +184,10 @@ In addition to the classical cmake configuration variables, SimGrid accepts seve
   @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 <b>enable_mallocators</b> (ON/OFF) has to be disabled when tracking memory issues within SimGrid, or the caching 
-      mechanism used internally will fool the debuggers.
+  @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 <b>enable_model-checking</b> (ON/OFF) if you actually plan to
-      use the model-checking feature of SimGrid. This execution mode
+  @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.
@@ -255,6 +268,44 @@ with MS Visual C. <a href="http://clang.llvm.org/docs/MSVCCompatibility.html">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