<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>