Building fastd
**************


Dependencies
============

* libuecc (>= v6; >= v7 recommended; developed together with fastd)

* libsodium or NaCl (for most crypto methods)

* bison (>= 2.6)

* pkg-config

Optional:

* libcap (if "capabilities" is enabled; Linux only; can be disabled
  if you don't need POSIX capability support)

* libmnl (for L2TP offload support; Linux only)

* libjson-c (if "status_socket" is enabled)

* libssl (if "cipher_aes128-ctr" is enabled)


Building
========

Starting with v20, fastd uses the Meson build system.

   # Get fastd (or use the release tarballs)
   git clone https://github.com/NeoRaider/fastd.git

   # Set up a build dir
   meson setup fastd fastd-build -Dbuildtype=release
   cd fastd-build

   # Build fastd, binary can be found in the src subdir of the build dir
   ninja

   # Install in the system
   ninja install


Build settings
==============

The build can be configured using the command "meson configure";
running it without any additional arguments will show all available
variables. Settings can be passed to "meson setup" or "meson
configure" using "-DVARIABLE=VALUE".

* By default, fastd will build against libsodium. If you want to use
  NaCl instead, add "-Duse_nacl=true"

* If you have a recent enough toolchain (GCC 4.8 or higher
  recommended), you can enable link-time optimization by adding
  "-Db_lto=true"

* Instead of using an installed version of libmnl, it is possible to
  build it as part of fastd itself by setting "-Dlibmnl_builtin=true".
  This is recommended for constrained targets only and not for regular
  Linux distributions.
