-.. Copyright 2005-2022
+.. Copyright 2005-2023
.. _install:
SimGrid should work out of the box on Linux, macOS, FreeBSD, and
-Windows (under Windows, you need to install the Windows Subsystem
-Linux to get more than the Java bindings).
+Windows (with WSL).
Pre-compiled Packages
---------------------
.. code-block:: console
$ apt install libsimgrid-dev # if you want to develop in C or C++
- $ apt install simgrid-java # if you want to develop in Java
$ apt install python3-simgrid # if you want to develop in Python
If you use the Nix_ package manager, the latest SimGrid release is packaged as ``simgrid`` in Nixpkgs_.
.. _simgrid AUR package: https://aur.archlinux.org/packages/simgrid/
.. _AUR official documentation: https://wiki.archlinux.org/title/Arch_User_Repository
-.. _install_java_precompiled:
-
-Stable Java Package
-^^^^^^^^^^^^^^^^^^^
-
-The jar file can be retrieved from the `Release page
-<https://framagit.org/simgrid/simgrid/-/releases>`_. This file is
-self-contained, including the native components for Linux, macOS and
-Windows. Copy it to your project's classpath and you're set.
-
-Nightly built Java Package
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Head to the corresponding `GitHub Action <https://github.com/simgrid/simgrid/actions/workflows/jarfile.yml>`_
-and pick the last green build. At the bottom of the build page, click on the ``jar-final`` artefact.
-Open this zip file to find the jar you need. This jar can be used under Linux, Mac OSX or Windows, as you wish.
-
-Binary Java Troubleshooting
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Here are some error messages that you may get when trying to use the
-binary Java package.
-
-Your architecture is not supported by this jarfile
- If your system is not supported, you should compile your
- own jarfile :ref:`by compiling SimGrid <install_src>` from the source.
-Library not found: boost-context
- You should obviously install the ``boost-context`` library on your
- machine, for example with ``apt``.
-
.. _deprecation_policy:
Version numbering and deprecation
- On CentOS / Fedora: ``dnf install eigen3-devel``
- On macOS with homebrew: ``brew install eigen``
- Use EIGEN3_HINT to specify where it's installed if cmake doesn't find it automatically.
-Java (optional):
- - Debian / Ubuntu: ``apt install default-jdk libgcj18-dev`` (or
- any version of libgcj)
- - macOS or Windows: Grab a `full JDK <http://www.oracle.com/technetwork/java/javase/downloads>`_
For platform-specific details, please see below.
$ tar xf simgrid-3-XX.tar.gz
$ cd simgrid-*
- $ cmake -DCMAKE_INSTALL_PREFIX=/opt/simgrid -GNinja.
+ $ cmake -DCMAKE_INSTALL_PREFIX=/opt/simgrid -GNinja .
$ make
$ make install
files in the tree, you may need to wipe out your complete tree and
start with a fresh one when you install new dependencies.
- Another (better) solution is to :ref:`build out of the source tree
- <install_cmake_outsrc>`.
+ A better solution is to :ref:`build out of the source tree <install_cmake_outsrc>`.
Generic build-time options
""""""""""""""""""""""""""
as easy as it used to be, and you should probably use the online
version for now.
-enable_java (on/OFF)
- Generates the java bindings of SimGrid. You must also enable MSG for
- this to work.
-
-enable_lib_in_jar (ON/off)
- Embeds the native java bindings into the produced jar file.
-
enable_lto (ON/off)
Enables the *Link Time Optimization* in the C++ compiler.
This feature really speeds up the code produced, but it is fragile
simulation speed** even when the model checker is not activated at
run time.
-enable_msg (on/OFF)
- Activates the :ref:`MSG <MSG_doc>` legacy interface.
-
enable_ns3 (on/OFF)
- Activates the ns-3 bindings. See section :ref:`model_ns3`.
+ Activates the ns-3 bindings. See section :ref:`models_ns3`.
enable_smpi (ON/off)
Allows one to run MPI code on top of SimGrid.
minimal-bindings (on/OFF)
Take as few optional dependencies as possible, to get minimal
- library bindings in Java and Python.
+ library bindings in Python.
NS3_HINT (empty by default)
Alternative path into which ns-3 should be searched for.
- **make tests**: Build the tests and examples.
- **make simgrid**: Build only the SimGrid library. Not any example nor the helper tools.
- **make s4u-comm-pingpong**: Build only this example (works for any example)
-- **make java-all**: Build all Java examples and their dependencies
- **make python-bindings**: Build the Python bindings
- **make clean**: Clean the results of a previous compilation
- **make install**: Install the project (doc/ bin/ lib/ include/)
The best solution to get SimGrid working on windows is to install the
Ubuntu subsystem of Windows 10. All of SimGrid (but the model checker)
-works in this setting.
-
-Native builds not very well supported. Have a look to our `appveypor
-configuration file
-<https://framagit.org/simgrid/simgrid/blob/master/.appveyor.yml>`_ to
-see how we manage to use mingw-64 to build the DLL that the Java file
-needs.
-
-The drawback of MinGW-64 is that the produced DLL are not compatible
-with MS Visual C. Some clang-based tools seem promising to fix this,
-but this is of rather low priority for us. It it's important for you
-and if you get it working, please @ref community_contact "tell us".
+works in this setting. Native builds never really worked, and they are
+disabled starting with SimGrid v3.33.
Python-specific instructions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$ pip install simgrid
-Java-specific instructions
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Once you have the `full JDK <http://www.oracle.com/technetwork/java/javase/downloads>`_ installed,
-things should be as simple as:
-
-.. code-block:: console
-
- $ cmake -Denable_java=ON -Dminimal-bindings=ON .
- $ make simgrid-java_jar # Only build the jarfile
-
-After the compilation, the file ```simgrid.jar``` is produced in the
-root directory.
-
-**Troubleshooting Java Builds**
-
-Sometimes, the build system fails to find the JNI headers. First locate them as follows:
-
-.. code-block:: console
-
- $ locate jni.h
- /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h
- /usr/lib/jvm/java-9-openjdk-amd64/include/jni.h
- /usr/lib/jvm/java-10-openjdk-amd64/include/jni.h
-
-
-Then, set the JAVA_INCLUDE_PATH environment variable to the right
-path, and relaunch cmake. If you have several versions of JNI installed
-(as above), pick the one corresponding to the report of
-``javac -version``
-
-.. code-block:: console
-
- $ 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.
-
Linux Multi-Arch specific instructions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^