| <!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 — 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> »</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 'Installing the Source Packages' 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"><package-filename></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">'*.proto'</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">'2i option cc_enable_arenas = true;'</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">"MSYS Makefiles"</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">"MSYS Makefiles"</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">"<path/to>/fmi-library-2.0.3-fixes.patch"</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"><</span> <span class="s2">"<path/to>/fmi-library-2.0.3-fixes.patch"</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>© 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> |