blob: 04b9b937ce0a5bdd96f412f58c233f4f80417959 [file] [log] [blame]
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Installing Prerequisites &mdash; OpenPASS Documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../_static/tabs.css" type="text/css" />
<link rel="shortcut icon" href="../_static/openPASS.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/tabs.js"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Installing OpenPASS" href="30_install_openpass.html" />
<link rel="prev" title="Getting Started" href="10_getting_started.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> openPASS
<img src="../_static/openPASS.png" class="logo" alt="Logo"/>
</a>
<div class="version">
0.9.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Installation Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="10_getting_started.html">Getting Started</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installing Prerequisites</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#installing-the-build-environment">Installing the Build Environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="#installing-the-binary-packages">Installing the Binary Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="#installing-the-source-packages">Installing the Source Packages</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#location-of-installed-source-packages">Location Of Installed Source Packages</a></li>
<li class="toctree-l3"><a class="reference internal" href="#build-and-install-protobuf">Build and Install Protobuf</a></li>
<li class="toctree-l3"><a class="reference internal" href="#build-and-install-osi">Build and Install OSI</a></li>
<li class="toctree-l3"><a class="reference internal" href="#build-and-install-fmil">Build and Install FMIL</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="30_install_openpass.html">Installing OpenPASS</a></li>
<li class="toctree-l1"><a class="reference internal" href="50_further_guidance.html">Further Guidance</a></li>
<li class="toctree-l1"><a class="reference internal" href="60_conan.html">Building with Conan</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">User Guides</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/10_overview.html">Overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/20_tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/30_gui_plugins.html">GUI Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/40_configs_in_depth.html">Configs in Depth</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/50_outputs_in_depth.html">Outputs in Depth</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/60_scenario_simulation.html">Simulator</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Advanced topics</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../advanced_topics/20_simulator_advanced.html">Simulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../advanced_topics/30_testing.html">EndToEnd Test Framework</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Developer Information</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../developer_information/10_ide_support.html">IDE Support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../developer_information/20_documentation.html">Documentation Concept</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Other Information</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../other_information/10_external_dependencies.html">External Dependencies</a></li>
<li class="toctree-l1"><a class="reference internal" href="../other_information/20_glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../other_information/30_license.html">License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">openPASS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>Installing Prerequisites</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/installation_guide/20_install_prerequisites.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="installing-prerequisites">
<span id="prerequisites"></span><h1>Installing Prerequisites<a class="headerlink" href="#installing-prerequisites" title="Permalink to this headline"></a></h1>
<p>Before being able to compile and run <strong>openPASS</strong>, make sure to have all dependencies installed.
The third party software dependency of <strong>openPASS</strong> can be divided into:</p>
<ul class="simple">
<li><p><strong>Build environment</strong>, which manages third party software and is used to compile and install <strong>openPASS</strong></p></li>
<li><p><strong>Binary packages</strong>, which can be easily installed via a package manager of the respective build environment</p></li>
<li><p><strong>Source packages</strong>, which need to be built from source code</p></li>
</ul>
<p>This section gives detailed information about the prerequisites and tested version.</p>
<section id="installing-the-build-environment">
<span id="building-under-windows"></span><h2>Installing the Build Environment<a class="headerlink" href="#installing-the-build-environment" title="Permalink to this headline"></a></h2>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0"><ol class="arabic">
<li><p>MSYS2</p>
<p>On Windows, the build environment of choice are <a class="reference internal" href="../other_information/20_glossary.html#term-MSYS2"><span class="xref std std-term">MSYS2</span></a> programming tools.
<a class="reference internal" href="../other_information/20_glossary.html#term-MSYS2"><span class="xref std std-term">MSYS2</span></a> is used to install some third-party software on which <strong>openPASS</strong> depends.
Also, the unix-like shell simplifies c++ compilation on Windows.
For details, see <a class="reference external" href="https://www.msys2.org/">MSYS2 website</a>.</p>
</li>
<li id="msys2"><p>Download MSYS2</p>
<p>The latest 64-bit packages are located at <a class="reference external" href="https://repo.msys2.org/distrib/x86_64/">https://repo.msys2.org/distrib/x86_64/</a>.
Download a non-base package, i.e. <a class="reference external" href="https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20200903.exe">msys2-x86_64-20200903.exe</a></p>
</li>
<li id="msys2-installation"><p>Install MSYS2</p>
<p>Run the downloaded executable and adjust suggested settings to your needs (defaults are fine).
In the following, it is assumed that MSYS2 is installed under <code class="docutils literal notranslate"><span class="pre">C:\msys64</span></code>.</p>
</li>
<li><p>Understand the Build Environment</p>
<p>MSYS2 provides three different environments, located in the MSYS2 installation directory:</p>
<figure class="align-center" id="fig-msys2-environments">
<img alt="MSYS2 Apps" src="../_images/msys2.png" />
</figure>
<p>MSYS2 Environments</p>
<ul class="simple">
<li><p>MSYS2 MSYS: Common environment, i.e. for package management</p></li>
<li><p>MSYS2 MinGW 32-bit: A MinGW 32-bit environment</p></li>
<li><p>MSYS2 MinGW 64-bit: A MinGW 64-bit environment</p></li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<div class="line-block">
<div class="line">MSYS2 MinGW 64-bit is <strong>the</strong> <strong>openPASS</strong> development environment and will be referred to as <code class="docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">64-bit</span></code> shell.</div>
</div>
</div>
</li>
</ol>
</div><div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0">
<span id="building-under-linux"></span><p>On Linux, no special build environment is needed. <strong>OpenPASS</strong> is developed under Debian 64-Bit,
which means that developing under a recent Ubuntu distribution will also work.
Debian Bullseye or Ubuntu 20.10 is recommended. Debian uses <code class="docutils literal notranslate"><span class="pre">apt</span></code> (or <code class="docutils literal notranslate"><span class="pre">apt-get</span></code>) as package managing system.
Details will be given in <a class="reference internal" href="#binary-packages"><span class="std std-ref">Installing the Binary Packages</span></a> and <a class="reference internal" href="#building-prerequisites"><span class="std std-ref">Installing the Source Packages</span></a>.</p>
</div></div>
</section>
<section id="installing-the-binary-packages">
<span id="binary-packages"></span><h2>Installing the Binary Packages<a class="headerlink" href="#installing-the-binary-packages" title="Permalink to this headline"></a></h2>
<p>The first set of dependencies we need to install in order to successfully compile <strong>openPASS</strong> are the binary packages. These can be installed via appropiate package manager.</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-1-1-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-1-1-0" name="1-0" role="tab" tabindex="0">Windows (MSYS2)</button><button aria-controls="panel-1-1-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-1-1-1" name="1-1" role="tab" tabindex="-1">Linux (Debian Bullseye)</button></div><div aria-labelledby="tab-1-1-0" class="sphinx-tabs-panel" id="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0"><ol class="arabic">
<li><p>Open <code class="docutils literal notranslate"><span class="pre">MSYS2</span> <span class="pre">MSYS</span></code> and execute the following package manager <code class="docutils literal notranslate"><span class="pre">pacman</span></code> commands to update the package repository and upgrade system packages:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">Syuu</span>
</pre></div>
</div>
<p>If the upgrade requires a restart of MSYS2, resume the upgrade by re-opening the shell and call:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">Suu</span>
</pre></div>
</div>
</li>
<li><p>Required packages (can be specified in single command line if desired):</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># for simulator</span>
pacman -S mingw-w64-x86_64-boost <span class="c1">#Tested with 1.75.0-2</span>
pacman -S mingw-w64-x86_64-ccache <span class="c1">#Tested with 3.7.9-1</span>
pacman -S mingw-w64-x86_64-cmake <span class="c1">#Tested with 3.19.2-1</span>
pacman -S mingw-w64-x86_64-doxygen <span class="c1">#Tested with 1.8.20-1</span>
pacman -S mingw-w64-x86_64-gcc <span class="c1">#Tested with 10.2.0-6</span>
pacman -S mingw-w64-x86_64-gdb <span class="c1">#Tested with 10.1-2</span>
pacman -S mingw-w64-x86_64-graphviz <span class="c1">#Tested with 2.44.1-3</span>
pacman -S mingw-w64-x86_64-gtest <span class="c1">#Tested with 1.11.0-4</span>
<span class="c1">#pacman -S mingw-w64-x86_64-protobuf # currently uses custom build (3.17.3). See &#39;Installing the Source Packages&#39; below.</span>
pacman -S mingw-w64-x86_64-qt5 <span class="c1">#Tested with 5.15.2-5</span>
pacman -S make <span class="c1">#Tested with 4.3-1</span>
<span class="c1"># for documentation</span>
pacman -S mingw-w64-x86_64-python <span class="c1">#Tested with 3.9.6.2</span>
pacman -S mingw-w64-x86_64-python-pip <span class="c1">#Tested with 21.1.3-2</span>
pacman -S mingw-w64-x86_64-python-lxml <span class="c1">#Tested with 4.6.2-2</span>
<span class="c1"># get necessary latex style (assuming default paths for MSYS2)</span>
wget -P /mingw64/share/texmf-dist/tex/latex/anyfontsize <span class="se">\</span>
http://mirrors.ctan.org/macros/latex/contrib/anyfontsize/anyfontsize.sty
<span class="c1"># fonts (picks up anyfontsize) and equation rendering in the documentation</span>
pacman -S mingw-w64-x86_64-zziplib <span class="c1">#Tested with 0.13.72-3</span>
pacman -S mingw-w64-x86_64-texlive-bin <span class="c1">#Tested with 2021.20210424-5</span>
pacman -S mingw-w64-x86_64-texlive-core <span class="c1">#Tested with 2021.20210519-2</span>
pacman -S mingw-w64-x86_64-texlive-font-utils <span class="c1">#Tested with 2021.20210519-1</span>
<span class="c1"># for sphinx/exhale</span>
pacman -S libxslt-devel
<span class="c1"># additional python packages for documentation (open MINGW64 console and execute the pip3 command)</span>
pip3 install sphinx sphinx-rtd-theme sphinx-tabs breathe exhale sphinxcontrib-spelling
</pre></div>
</div>
<div class="admonition-versions admonition">
<p class="admonition-title">Versions</p>
<div class="line-block">
<div class="line">MSYS2 provides rolling release versions, so some packages might be too “up-to-date”.</div>
<div class="line">Tested packages - ate time of writing - have been listed above as comment.</div>
<div class="line">If in doubt, download the package in the right version from the <a class="reference external" href="http://repo.msys2.org/mingw/x86_64/">MSYS2 package repository</a>.</div>
<div class="line">Install with <code class="docutils literal notranslate"><span class="pre">pacman</span> <span class="pre">-U</span> <span class="pre">&lt;package-filename&gt;</span></code></div>
</div>
</div>
</li>
<li><p>Optional Packages</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">git</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">diffutils</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">patch</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">dos2unix</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">mingw</span><span class="o">-</span><span class="n">w64</span><span class="o">-</span><span class="n">x86_64</span><span class="o">-</span><span class="n">ag</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">mingw</span><span class="o">-</span><span class="n">w64</span><span class="o">-</span><span class="n">x86_64</span><span class="o">-</span><span class="n">qt5</span><span class="o">-</span><span class="n">debug</span>
<span class="n">pacman</span> <span class="o">-</span><span class="n">S</span> <span class="n">zlib</span><span class="o">-</span><span class="n">devel</span>
</pre></div>
</div>
</li>
</ol>
<div class="admonition-git-ssh admonition">
<p class="admonition-title">GIT/SSH</p>
<p>The <code class="docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">64-bit</span></code> shell does not access an already existing git installation or available SSH keys.
Make sure, to update/copy your configuration and credentials within the <code class="docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">64-bit</span></code> shell before working with git.</p>
</div>
</div><div aria-labelledby="tab-1-1-1" class="sphinx-tabs-panel" hidden="true" id="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0"><ol class="arabic">
<li><p>Update the package database on the system</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">apt</span> <span class="n">update</span>
</pre></div>
</div>
</li>
<li><p>Upgrade existing software to latest version</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">apt</span> <span class="n">upgrade</span>
</pre></div>
</div>
</li>
<li><p>Install required binary packages</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># for simulator</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">ccache</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">cmake</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">doxygen</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">googletest</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">gcc</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">g</span><span class="o">++</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">graphviz</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">libqt5xmlpatterns5</span><span class="o">-</span><span class="n">dev</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">qt5</span><span class="o">-</span><span class="n">default</span>
<span class="n">apt</span> <span class="n">install</span> <span class="n">zlib1g</span><span class="o">-</span><span class="n">dev</span>
<span class="c1"># for documentation</span>
<span class="n">sudo</span> <span class="n">apt</span> <span class="n">install</span> <span class="n">doxygen</span> <span class="n">python3</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span> <span class="n">libenchant</span><span class="o">-</span><span class="mi">2</span><span class="o">-</span><span class="mi">2</span> <span class="n">dvipng</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">sphinx</span> <span class="n">sphinx</span><span class="o">-</span><span class="n">rtd</span><span class="o">-</span><span class="n">theme</span> <span class="n">sphinx</span><span class="o">-</span><span class="n">tabs</span> <span class="n">breathe</span> <span class="n">exhale</span> <span class="n">sphinxcontrib</span><span class="o">-</span><span class="n">spelling</span>
</pre></div>
</div>
<p>Under Linux, it is deliberate that the googletest package only installs the header files to the system,
but not the static and dynamic libraries. The missing libraries can be build and installed to <code class="docutils literal notranslate"><span class="pre">/usr/lib</span></code> via</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">googletest</span>
<span class="n">cmake</span> <span class="o">.</span>
<span class="n">make</span>
<span class="n">make</span> <span class="n">install</span>
</pre></div>
</div>
</li>
</ol>
</div></div>
<p><strong>EndToEnd Test Framework</strong></p>
<p>If the <a class="reference internal" href="../advanced_topics/30_testing.html#testing-endtoend"><span class="std std-ref">EndToEnd Test Framework</span></a> shall be used, additional requirements have to be considered.</p>
<p>The test framework is based on Python and some additional Python modules.
Installation of the required modules can be accomplished using <code class="docutils literal notranslate"><span class="pre">pip</span></code>.
Please refer to the file <code class="docutils literal notranslate"><span class="pre">requirements.txt</span></code> located in <code class="docutils literal notranslate"><span class="pre">sim/tests/endToEndTests/pyOpenPASS</span></code> for a list of dependencies.</p>
<p>The requirements file can be directly passed to <code class="docutils literal notranslate"><span class="pre">pip</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span>
</pre></div>
</div>
<p>(executed from <code class="docutils literal notranslate"><span class="pre">sim/src/tests/endToEndTests/pyOpenPASS</span></code>)</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p><img alt="win_only" src="../_images/win_only.png" />
<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span></code> will try to fetch precompiled packages by default.
If it is unable to locate a binary package for the current environment, packages will be compiled from source.
This step fails for the <code class="docutils literal notranslate"><span class="pre">numpy</span></code> package when being built from the MSYS2 environment.
Thus, it is recommended to set up a native Windows Python environment and perform the installation there.
To force the usage of a specific Python environment, the variable <code class="docutils literal notranslate"><span class="pre">Python3_EXECUTABLE</span></code> can be set to the indended Python interpreter executable during cmake configuration (see <a class="reference internal" href="30_install_openpass.html#download-and-install-openpass"><span class="std std-ref">Installing OpenPASS</span></a>).</p>
</div>
<p>Please refer to <a class="reference internal" href="../advanced_topics/30_testing.html#testing-endtoend"><span class="std std-ref">EndToEnd Test Framework</span></a> for more details for using the framework.</p>
</section>
<section id="installing-the-source-packages">
<span id="building-prerequisites"></span><h2>Installing the Source Packages<a class="headerlink" href="#installing-the-source-packages" title="Permalink to this headline"></a></h2>
<p>This section describes how to compile prerequisites of <strong>openPASS</strong> using source packages.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you are unfamiliar to <code class="docutils literal notranslate"><span class="pre">CMake</span></code> or working within a <code class="docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">64-bit</span></code> shell, Section <a class="reference internal" href="further_guidance/10_cmake.html#cmake"><span class="std std-ref">CMake Variables and Options</span></a> and <a class="reference internal" href="#msys2"><span class="std std-ref">MSYS2</span></a> might give you a short introduction on these topics in the scope of building <strong>openPASS</strong> itself.</p>
</div>
<section id="location-of-installed-source-packages">
<h3>Location Of Installed Source Packages<a class="headerlink" href="#location-of-installed-source-packages" title="Permalink to this headline"></a></h3>
<p>The goal of this section is to download necessary source packages and install
them into a suitable directory. This directory will later on be copied into the <strong>openPASS</strong> repository in order to resolve third party dependency.
The following directory tree shows the folder structure, which will be created by following the recommendations of this guide.</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-2-2-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-2-2-0" name="2-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-2-2-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-2-2-1" name="2-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-2-2-0" class="sphinx-tabs-panel" id="panel-2-2-0" name="2-0" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span>C:\OpenPASS\thirdParty
├── FMILibrary
│ ├── include
│ └── lib
├── osi
│ ├── include
│ └── lib
├── protobuf
│ ├── bin
│ ├── include
│ └── lib
└── protobuf-shared
├── bin
├── include
└── lib
</pre></div>
</div>
<p>In the folder structure above:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">C:\OpenPASS\thirdParty</span></code> refers to a temporary directory used to built the prerequisites from source, <strong>not</strong> the <code class="docutils literal notranslate"><span class="pre">simopenpass</span></code> repository</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">FMILibrary</span></code> is the install directory of the <a class="reference internal" href="../other_information/20_glossary.html#term-FMI"><span class="xref std std-term">Functional Mock-up Interface (FMI)</span></a> when build from source</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">osi</span></code> is the install directory of the <a class="reference internal" href="../other_information/20_glossary.html#term-OSI"><span class="xref std std-term">Open Simulation Interface (OSI)</span></a> when build from source.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">protobuf</span></code> and <code class="docutils literal notranslate"><span class="pre">protobuf-shared</span></code> are the install directories of <code class="docutils literal notranslate"><span class="pre">Google</span> <span class="pre">Protocol</span> <span class="pre">Buffers</span></code> for shared and static builds, respectively.</p></li>
</ul>
</div><div aria-labelledby="tab-2-2-1" class="sphinx-tabs-panel" hidden="true" id="panel-2-2-1" name="2-1" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span>~/OpenPASS/thirdParty
├── FMILibrary
│ ├── include
│ └── lib
├── osi
│ ├── include
│ └── lib
├── protobuf
│ ├── bin
│ ├── include
│ └── lib
└── protobuf-shared
├── bin
├── include
└── lib
</pre></div>
</div>
<p>In the folder structure above:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">~/OpenPASS/thirdParty</span></code> refers to a temporary directory used to built the prerequisites from source, <strong>not</strong> the <code class="docutils literal notranslate"><span class="pre">simopenpass</span></code> repository</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">FMILibrary</span></code> is the install directory of the <a class="reference internal" href="../other_information/20_glossary.html#term-FMI"><span class="xref std std-term">Functional Mock-up Interface (FMI)</span></a> when build from source</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">osi</span></code> is the install directory of the <a class="reference internal" href="../other_information/20_glossary.html#term-OSI"><span class="xref std std-term">Open Simulation Interface (OSI)</span></a> when build from source.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">protobuf</span></code> and <code class="docutils literal notranslate"><span class="pre">protobuf-shared</span></code> are the install directories of <code class="docutils literal notranslate"><span class="pre">Google</span> <span class="pre">Protocol</span> <span class="pre">Buffers</span></code> for shared and static builds, respectively.</p></li>
</ul>
</div></div>
<p>On the basis of this structure, we will explain further steps.</p>
</section>
<section id="build-and-install-protobuf">
<h3>Build and Install Protobuf<a class="headerlink" href="#build-and-install-protobuf" title="Permalink to this headline"></a></h3>
<p>Google Protocol Buffers provide the foundation of <a class="reference internal" href="../other_information/20_glossary.html#term-OSI"><span class="xref std std-term">OSI</span></a> (see also <a class="reference internal" href="#building-osi"><span class="std std-ref">Build and Install OSI</span></a>).
Due to the usage of OSI different situations (<strong>OpenPASS</strong> executables, libraries, tests, <a class="reference internal" href="../other_information/20_glossary.html#term-FMU"><span class="xref std std-term">FMUs</span></a>, etc.) static and shared libraries of protobuf have to be provided.
Please refer to <a class="reference internal" href="further_guidance/40_custom_proto.html#building-protobuf"><span class="std std-ref">Custom Protobuf Build</span></a> for detailed instructions.</p>
</section>
<section id="build-and-install-osi">
<span id="building-osi"></span><h3>Build and Install OSI<a class="headerlink" href="#build-and-install-osi" title="Permalink to this headline"></a></h3>
<p>As can be looked up in <a class="reference internal" href="../other_information/10_external_dependencies.html#prerequisites-osi"><span class="std std-ref">Open Simulation Interface (OSI)</span></a>, the core component <code class="docutils literal notranslate"><span class="pre">World_OSI</span></code> uses <a class="reference internal" href="../other_information/20_glossary.html#term-OSI"><span class="xref std std-term">OSI</span></a> as backend storage.
OSI itself uses <code class="docutils literal notranslate"><span class="pre">protobuf</span></code> to describe data structures in a platform independent way by means of <cite>*.proto</cite> files.
When building OSI, these files are converted into C++ headers and sources, using the protobuf compiler <code class="docutils literal notranslate"><span class="pre">protoc</span></code>.
Finally, the sources are then compiled into a library.
<strong>OpenPASS</strong> finally uses the library and the generated headers to interface the library.</p>
<ol class="arabic">
<li><p>Open and create directory structure</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-3-3-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-3-3-0" name="3-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-3-3-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-3-3-1" name="3-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-3-3-0" class="sphinx-tabs-panel" id="panel-3-3-0" name="3-0" role="tabpanel" tabindex="0"><p>Start <code class="docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">64-bit</span></code> shell</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">C</span><span class="o">/</span>
<span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">sources</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-3-3-1" class="sphinx-tabs-panel" hidden="true" id="panel-3-3-1" name="3-1" role="tabpanel" tabindex="0"><p>Start <code class="docutils literal notranslate"><span class="pre">Bash</span></code> shell</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">~</span>
<span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">sources</span>
</pre></div>
</div>
</div></div>
</li>
<li><p>Download release 3.2.0 from <a class="reference external" href="https://github.com/OpenSimulationInterface/open-simulation-interface">https://github.com/OpenSimulationInterface/open-simulation-interface</a></p></li>
<li><p>Extract</p>
<ul class="simple">
<li><p>for Windows to <code class="docutils literal notranslate"><span class="pre">C:\OpenPASS\thirdParty\sources\open-simulation-interface-3.2.0</span></code></p></li>
<li><p>for Linux to <code class="docutils literal notranslate"><span class="pre">~/OpenPASS/thirdParty/sources/open-simulation-interface-3.2.0</span></code></p></li>
</ul>
</li>
<li><p>Navigate to the extracted folder</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-4-4-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-4-4-0" name="4-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-4-4-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-4-4-1" name="4-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-4-4-0" class="sphinx-tabs-panel" id="panel-4-4-0" name="4-0" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">C</span><span class="o">/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">sources</span><span class="o">/</span><span class="nb">open</span><span class="o">-</span><span class="n">simulation</span><span class="o">-</span><span class="n">interface</span><span class="o">-</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-4-4-1" class="sphinx-tabs-panel" hidden="true" id="panel-4-4-1" name="4-1" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">~/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">sources</span><span class="o">/</span><span class="nb">open</span><span class="o">-</span><span class="n">simulation</span><span class="o">-</span><span class="n">interface</span><span class="o">-</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span>
</pre></div>
</div>
</div></div>
</li>
<li><p>Optional: Enable Arenas</p>
<p>For better performance, <strong>openPASS</strong> supports protobuf Arenas allocation (<a class="reference external" href="https://developers.google.com/protocol-buffers/docs/reference/arenas">https://developers.google.com/protocol-buffers/docs/reference/arenas</a>).
To use this feature, OSI and <strong>openPASS</strong> needs to be compiled with Arenas support.
See <a class="reference internal" href="further_guidance/10_cmake.html#cmake-protobuf-arenas"><span class="std std-ref">WITH_EXTENDED_OSI</span></a> how this feature is enabled in <strong>openPASS</strong>.</p>
<p>To enable Arenas support for OSI, the line <code class="docutils literal notranslate"><span class="pre">option</span> <span class="pre">cc_enable_arenas</span> <span class="pre">=</span> <span class="pre">true;</span></code> needs to be added <strong>manually</strong> to all OSI proto files before compilation.</p>
<p>This can be achieved in two ways. Either the line <code class="docutils literal notranslate"><span class="pre">option</span> <span class="pre">cc_enable_arenas</span> <span class="pre">=</span> <span class="pre">true;</span></code> gets added manually <strong>after the second line</strong> of each PROTO file</p>
<ul class="simple">
<li><p>for Windows in <code class="docutils literal notranslate"><span class="pre">C:\OpenPASS\thirdParty\sources\open-simulation-interface</span></code></p></li>
<li><p>for Linux in <code class="docutils literal notranslate"><span class="pre">~/OpenPASS/thirdParty/sources/open-simulation-interface</span></code></p></li>
</ul>
<p>by using a text editor or one makes use of the stream editor in the shell:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">find</span> <span class="o">.</span> <span class="o">-</span><span class="n">maxdepth</span> <span class="mi">1</span> <span class="o">-</span><span class="n">name</span> <span class="s1">&#39;*.proto&#39;</span> <span class="o">-</span><span class="n">exec</span> <span class="n">sed</span> <span class="o">-</span><span class="n">i</span> <span class="s1">&#39;2i option cc_enable_arenas = true;&#39;</span> <span class="p">{}</span> \<span class="p">;</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The first line of each OSI proto file specifies the protobuf syntax used.
If Arenas support is added before the syntax specification, errors occur.</p>
</div>
</li>
<li><p>Create build directory</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mkdir</span> <span class="n">build</span>
<span class="n">cd</span> <span class="n">build</span>
</pre></div>
</div>
</li>
<li><p>Run Cmake</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-5-5-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-5-5-0" name="5-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-5-5-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-5-5-1" name="5-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-5-5-0" class="sphinx-tabs-panel" id="panel-5-5-0" name="5-0" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cmake</span> <span class="o">-</span><span class="n">G</span> <span class="s2">&quot;MSYS Makefiles&quot;</span> \
<span class="o">-</span><span class="n">DCMAKE_BUILD_TYPE</span><span class="o">=</span><span class="n">Release</span> \
<span class="o">-</span><span class="n">DCMAKE_INSTALL_PREFIX</span><span class="o">=</span><span class="n">C</span><span class="p">:</span><span class="o">/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">osi</span> \
<span class="o">..</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-5-5-1" class="sphinx-tabs-panel" hidden="true" id="panel-5-5-1" name="5-1" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cmake</span> <span class="o">-</span><span class="n">DCMAKE_BUILD_TYPE</span><span class="o">=</span><span class="n">Release</span> \
<span class="o">-</span><span class="n">DCMAKE_INSTALL_PREFIX</span><span class="o">=~/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">osi</span> \
<span class="o">..</span>
</pre></div>
</div>
</div></div>
</li>
<li><p>Compile</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="o">-</span><span class="n">j3</span>
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>If <code class="docutils literal notranslate"><span class="pre">protobuf</span></code> compiler complains, do</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">protoc</span> <span class="o">--</span><span class="n">version</span>
</pre></div>
</div>
<p>and check if correct protobuf version is used.</p>
</div>
</li>
<li><p>Install</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">install</span>
</pre></div>
</div>
<div class="admonition-documentation admonition">
<p class="admonition-title">Documentation</p>
<p>The OSI class documentation is part of the source code and can be compiled using Doxygen.
Instructions are located in the OSI <code class="docutils literal notranslate"><span class="pre">Readme.md</span></code>. A pre-compiled version is located <a class="reference external" href="https://opensimulationinterface.github.io/open-simulation-interface/index.html">here</a>.</p>
<p>So far, the documentation does not include the extensions from the openpass-trafficAgents branch.</p>
</div>
</li>
</ol>
</section>
<section id="build-and-install-fmil">
<span id="building-fmil"></span><h3>Build and Install FMIL<a class="headerlink" href="#build-and-install-fmil" title="Permalink to this headline"></a></h3>
<ol class="arabic">
<li><p>Download release 2.0.3 from <a class="reference external" href="https://github.com/modelon-community/fmi-library">https://github.com/modelon-community/fmi-library</a></p></li>
<li><p>Extract</p>
<ul class="simple">
<li><p>for Windows to <code class="docutils literal notranslate"><span class="pre">C:\OpenPASS\thirdParty\sources\fmi-library-2.0.3</span></code></p></li>
<li><p>for Linux to <code class="docutils literal notranslate"><span class="pre">~/OpenPASS/thirdParty/sources/fmi-library-2.0.3</span></code></p></li>
</ul>
</li>
<li><p>Navigate to the extracted folder</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-6-6-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-6-6-0" name="6-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-6-6-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-6-6-1" name="6-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-6-6-0" class="sphinx-tabs-panel" id="panel-6-6-0" name="6-0" role="tabpanel" tabindex="0"><p>Start <code class="docutils literal notranslate"><span class="pre">MinGW</span> <span class="pre">64-bit</span></code> shell</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">C</span><span class="o">/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">sources</span><span class="o">/</span><span class="n">fmi</span><span class="o">-</span><span class="n">library</span><span class="o">-</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">3</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-6-6-1" class="sphinx-tabs-panel" hidden="true" id="panel-6-6-1" name="6-1" role="tabpanel" tabindex="0"><p>Start <code class="docutils literal notranslate"><span class="pre">Bash</span></code> shell</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">~/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">sources</span><span class="o">/</span><span class="n">fmi</span><span class="o">-</span><span class="n">library</span><span class="o">-</span><span class="mf">2.0</span><span class="o">.</span><span class="mi">3</span>
</pre></div>
</div>
</div></div>
</li>
<li><p>Create build directory</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">mkdir</span> <span class="n">build</span>
<span class="n">cd</span> <span class="n">build</span>
</pre></div>
</div>
</li>
<li><p>Run Cmake</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-7-7-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-7-7-0" name="7-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-7-7-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-7-7-1" name="7-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-7-7-0" class="sphinx-tabs-panel" id="panel-7-7-0" name="7-0" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cmake</span> <span class="o">-</span><span class="n">G</span> <span class="s2">&quot;MSYS Makefiles&quot;</span> \
<span class="o">-</span><span class="n">DFMILIB_INSTALL_PREFIX</span><span class="o">=</span><span class="n">C</span><span class="p">:</span><span class="o">/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">FMILibrary</span> \
<span class="o">-</span><span class="n">DCMAKE_BUILD_TYPE</span><span class="o">=</span><span class="n">Release</span> \
<span class="o">-</span><span class="n">DFMILIB_BUILD_STATIC_LIB</span><span class="o">=</span><span class="n">OFF</span> \
<span class="o">-</span><span class="n">DFMILIB_BUILD_SHARED_LIB</span><span class="o">=</span><span class="n">ON</span> \
<span class="o">..</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-7-7-1" class="sphinx-tabs-panel" hidden="true" id="panel-7-7-1" name="7-1" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cmake</span> <span class="o">-</span><span class="n">DFMILIB_INSTALL_PREFIX</span><span class="o">=~/</span><span class="n">OpenPASS</span><span class="o">/</span><span class="n">thirdParty</span><span class="o">/</span><span class="n">FMILibrary</span> \
<span class="o">-</span><span class="n">DCMAKE_BUILD_TYPE</span><span class="o">=</span><span class="n">Release</span> \
<span class="o">-</span><span class="n">DFMILIB_BUILD_STATIC_LIB</span><span class="o">=</span><span class="n">OFF</span> \
<span class="o">-</span><span class="n">DFMILIB_BUILD_SHARED_LIB</span><span class="o">=</span><span class="n">ON</span> \
<span class="o">..</span>
</pre></div>
</div>
</div></div>
</li>
<li><p>Leave build directory</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">..</span>
</pre></div>
</div>
</li>
<li><p>Apply Patch</p>
<p>As FMIL and the internally used <a class="reference external" href="https://github.com/modelica-tools/FMUComplianceChecker">FMU Compliance Checker</a> has issues with loading and private entry points, the following patch needs to be applied:</p>
<ul class="simple">
<li><p><a class="reference download internal" download="" href="../_downloads/d1dbc0ee423132666374fa73f6c0f165/fmi-library-2.0.3-fixes.patch"><code class="xref download docutils literal notranslate"><span class="pre">Windows/Linux</span> <span class="pre">Patch</span></code></a></p></li>
</ul>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-8-8-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-8-8-0" name="8-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-8-8-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-8-8-1" name="8-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-8-8-0" class="sphinx-tabs-panel" id="panel-8-8-0" name="8-0" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">patch</span> <span class="o">-</span><span class="n">l</span> <span class="o">-</span><span class="n">p1</span> <span class="s2">&quot;&lt;path/to&gt;/fmi-library-2.0.3-fixes.patch&quot;</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-8-8-1" class="sphinx-tabs-panel" hidden="true" id="panel-8-8-1" name="8-1" role="tabpanel" tabindex="0"><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">dos2unix</span> <span class="n">src</span><span class="o">/</span><span class="n">Import</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">FMI1</span><span class="o">/</span><span class="n">fmi1_import_capi</span><span class="o">.</span><span class="n">c</span> <span class="n">src</span><span class="o">/</span><span class="n">Import</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">FMI2</span><span class="o">/</span><span class="n">fmi2_import_capi</span><span class="o">.</span><span class="n">c</span> <span class="n">src</span><span class="o">/</span><span class="n">Util</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">JM</span><span class="o">/</span><span class="n">jm_portability</span><span class="o">.</span><span class="n">h</span>
<span class="n">patch</span> <span class="o">-</span><span class="n">l</span> <span class="o">-</span><span class="n">p1</span> <span class="o">&lt;</span> <span class="s2">&quot;&lt;path/to&gt;/fmi-library-2.0.3-fixes.patch&quot;</span>
</pre></div>
</div>
</div></div>
</li>
<li><p>Enter build directory</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">build</span>
</pre></div>
</div>
</li>
<li><p>Compile</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="o">-</span><span class="n">j3</span>
</pre></div>
</div>
</li>
<li><p>Install</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">install</span>
</pre></div>
</div>
</li>
</ol>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="10_getting_started.html" class="btn btn-neutral float-left" title="Getting Started" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="30_install_openpass.html" class="btn btn-neutral float-right" title="Installing OpenPASS" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2022 OpenPASS Working Group.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>