![Niklas Hambüchen](/assets/img/avatar_default.png)
And probably many other distributions. Until now, ./configure would fail silently printing a warning ./configure: line 4621: AX_CXX_COMPILE_STDCXX_17: command not found and then continuing, later failing with a C++ #error saying that some C++11 feature isn't supported (it didn't even get to the C++17 features). This is because older distributions don't come with the `AX_CXX_COMPILE_STDCXX_17` m4 macro. This commit vendors that macro accordingly. Now ./configure complains correctly: configure: error: *** A compiler with support for C++17 language features is required. On Ubuntu 16.04, ./configure completes if a newer compiler is used, e.g. with gcc-7 from https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test using: ./bootstrap.sh ./configure CXX=g++-7 --disable-doc-gen --with-boost=$(nix-build --no-link '<nixpkgs>' -A boost.dev)
106 lines
4.7 KiB
XML
106 lines
4.7 KiB
XML
<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>
|