<section xmlns="http://docbook.org/ns/docbook"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:xi="http://www.w3.org/2001/XInclude"
      version="5.0"
      xml:id="sec-prerequisites-source">

<title>Prerequisites</title>

<itemizedlist>

  <listitem><para>GNU Make.</para></listitem>
  
  <listitem><para>Bash Shell. The <literal>./configure</literal> script
  relies on bashisms, so Bash is required.</para></listitem>

  <listitem><para>A version of GCC or Clang that supports C++17.</para></listitem>

  <listitem><para><command>pkg-config</command> to locate
  dependencies.  If your distribution does not provide it, you can get
  it from <link
  xlink:href="http://www.freedesktop.org/wiki/Software/pkg-config"
  />.</para></listitem>

  <listitem><para>The OpenSSL library to calculate cryptographic hashes.
  If your distribution does not provide it, you can get it from <link
  xlink:href="https://www.openssl.org"/>.</para></listitem>

  <listitem><para>The <literal>libbrotlienc</literal> and
  <literal>libbrotlidec</literal> libraries to provide implementation
  of the Brotli compression algorithm. They are available for download
  from the official repository <link
  xlink:href="https://github.com/google/brotli" />.</para></listitem>

  <listitem><para>The bzip2 compressor program and the
  <literal>libbz2</literal> library.  Thus you must have bzip2
  installed, including development headers and libraries.  If your
  distribution does not provide these, you can obtain bzip2 from <link
  xlink:href="https://web.archive.org/web/20180624184756/http://www.bzip.org/"
  />.</para></listitem>

  <listitem><para><literal>liblzma</literal>, which is provided by
  XZ Utils. If your distribution does not provide this, you can
  get it from <link xlink:href="https://tukaani.org/xz/"/>.</para></listitem>
  
  <listitem><para>cURL and its library. If your distribution does not
  provide it, you can get it from <link
  xlink:href="https://curl.haxx.se/"/>.</para></listitem>
      
  <listitem><para>The SQLite embedded database library, version 3.6.19
  or higher.  If your distribution does not provide it, please install
  it from <link xlink:href="http://www.sqlite.org/" />.</para></listitem>

  <listitem><para>The <link
  xlink:href="http://www.hboehm.info/gc/">Boehm
  garbage collector</link> to reduce the evaluator’s memory
  consumption (optional).  To enable it, install
  <literal>pkgconfig</literal> and the Boehm garbage collector, and
  pass the flag <option>--enable-gc</option> to
  <command>configure</command>.</para></listitem>

  <listitem><para>The <literal>boost</literal> library of version
  1.66.0 or higher. It can be obtained from the official web site
  <link xlink:href="https://www.boost.org/" />.</para></listitem>

  <listitem><para>The <literal>editline</literal> library of version
  1.14.0 or higher. It can be obtained from the its repository
  <link xlink:href="https://github.com/troglobit/editline" />.</para></listitem>

  <listitem><para>The <command>xmllint</command> and
  <command>xsltproc</command> programs to build this manual and the
  man-pages.  These are part of the <literal>libxml2</literal> and
  <literal>libxslt</literal> packages, respectively.  You also need
  the <link
  xlink:href="http://docbook.sourceforge.net/projects/xsl/">DocBook
  XSL stylesheets</link> and optionally the <link
  xlink:href="http://www.docbook.org/schemas/5x"> DocBook 5.0 RELAX NG
  schemas</link>.  Note that these are only required if you modify the
  manual sources or when you are building from the Git
  repository.</para></listitem>

  <listitem><para>Recent versions of Bison and Flex to build the
  parser.  (This is because Nix needs GLR support in Bison and
  reentrancy support in Flex.)  For Bison, you need version 2.6, which
  can be obtained from the <link
  xlink:href="ftp://alpha.gnu.org/pub/gnu/bison">GNU FTP
  server</link>.  For Flex, you need version 2.5.35, which is
  available on <link
  xlink:href="http://lex.sourceforge.net/">SourceForge</link>.
  Slightly older versions may also work, but ancient versions like the
  ubiquitous 2.5.4a won't.  Note that these are only required if you
  modify the parser or when you are building from the Git
  repository.</para></listitem>

  <listitem><para>The <literal>libseccomp</literal> is used to provide
  syscall filtering on Linux. This is an optional dependency and can
  be disabled passing a <option>--disable-seccomp-sandboxing</option>
  option to the <command>configure</command> script (Not recommended
  unless your system doesn't support
  <literal>libseccomp</literal>). To get the library, visit <link
  xlink:href="https://github.com/seccomp/libseccomp"
  />.</para></listitem>

</itemizedlist>

</section>
