X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6d9c67b14f86e16e2c4fefe44443e18bada3ed1a..b0495c8307575af4cbeee65d7ee708e1da661dcf:/doc/doxygen/install.doc diff --git a/doc/doxygen/install.doc b/doc/doxygen/install.doc index d78e20aaa9..83364b1d24 100644 --- a/doc/doxygen/install.doc +++ b/doc/doxygen/install.doc @@ -1,445 +1,384 @@ -/*! -\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 (download page) +@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 (download page) - \li MinGW (download page) - \li perl (download page) - \li git (download page) +@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 - ns3_path - CMAKE_INSTALL_PREFIX - pipol_user -\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 CMAKE_INSTALL_PREFIX (path): Where to install SimGrid (/opt/simgrid, /usr/local, or elsewhere). - \li enable_maintainer_mode: set to true it remakes some files. + @li enable_compile_optimizations (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 enable_compile_warnings (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 enable_debug (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 enable_documentation (ON/OFF) to generate the documentation pages. - \li enable_model-checking: Enable the model checking when set to true. + @li enable_java (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 enable_jedule (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 enable_lua (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 enable_lib_in_jar (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 enable_lto (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 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_msg_deprecated: Simgrid is compiled with msg deprecated functions. + @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_print_message: When set to true configuration print more debug output. + @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. - \li gtnets_path: Path to gtnets install directory (ex /usr) + @li enable_ns3 (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 enable_smpi (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 enable_smpi_ISP_testsuite (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 enable_smpi_MPICH3_testsuite (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 configure the project for Unix and Mac -cmake -G"MinGW Makefiles" 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. (Go to Cdash site). - -\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, ActiveState +Perl and msys +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. clang-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 -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 (download page) - \li MinGW (download page) - \li perl (download page) - \li git (download page) - -Then download the package SimGrid Installer, -execute it and follow instructions. - -\htmlonly - -\endhtmlonly +If needed, implement @c i686-linux-gnu-gfortran as a script: -Step 1: Accept the license. - -\htmlonly - -\endhtmlonly - -Step 2: Select packets to install. +@verbatim +#!/bin/sh +exec gfortran -m32 "$@" +@endverbatim -\htmlonly - -\endhtmlonly - -Step 3: Choice where to install packets previously selected. Please don't use spaces in path. - -\htmlonly - -\endhtmlonly - -Step 4: Add CLASSPATH to environment variables. - -\htmlonly - -\endhtmlonly - -Step 5: Add PATH to environment variables. - -\htmlonly - -\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" \' -\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" \ -\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 /home/joe/SimGrid/MyFirstScheduler/). - -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 sched.h: 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 sched.c: a C file including sched.h and - implementing the core of the scheduler. Most of these - functions use the MSG functions defined in section \ref - msg_task_usage. -\li masterslave.c: 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 -(masterslave) and of which files it is to be made of -(masterslave.o and sched.o). This makefile assumes -that you have set up correctly your LD_LIBRARY_PATH variable -(look, there is a LDADD = -lm -lsimgrid). If you prefer using -the static version, remove the -lsimgrid and add a -$(INSTALL_PATH)/lib/libsimgrid.a on the next line, right -after the LIBS = . - -More generally, if you have never written a Makefile by yourself, type -in a terminal: info make 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 */