-PowerDNS is copyright Ⓒ 2002-2016 by PowerDNS.COM BV and lots of
+PowerDNS is copyright © 2002-2017 by PowerDNS.COM BV and lots of
contributors, using the GNU GPLv2 license (see NOTICE for the
exact license and exception used).
SOURCE CODE / GIT
-----------------
-
Source code is available on GitHub:
- $ git clone https://github.com/PowerDNS/pdns.git
-
-This repository contains the sources both for the PowerDNS Recursor and for PowerDNS Authoritative Server,
-and both can be built from this repository. Both are released separately as .tar.bz2, .deb and .rpm however!
+```
+$ git clone https://github.com/PowerDNS/pdns.git
+```
+
+This repository contains the sources for the PowerDNS Recursor, the PowerDNS
+Authoritative Server, and dnsdist (a powerful DNS loadbalancer). All three can
+be built from this repository. However, all three released separately as .tar.bz2,
+.deb and .rpm.
COMPILING Authoritative Server
------------------------------
-PowerDNS Authoritative Server 3.0 and beyond depend on Boost.
-
-On Debian 7.0, the following is useful:
+The PowerDNS Authoritative Server depends on Boost, OpenSSL and requires a
+compiler with C++-2011 support.
- apt-get install autoconf automake bison flex g++ git libboost-all-dev libtool make pkg-config ragel libmysqlclient-dev
+On Debian 8.0, the following is useful:
-If you build from git, first build configure:
+```
+$ apt-get install g++ libboost-all-dev libtool make pkg-config libmysqlclient-dev libssl-dev
+```
- $ ./bootstrap
+When building from git, the following packages are also required: autoconf, automake,
+ragel, bison and flex, then generate the configure file:
-(You may need to do that twice. You also need libtool-1.4, 1.3 won't work.
-Autoconf 2.61 or newer and Automake 1.11 or newer are required, too.)
+```
+$ ./bootstrap
+```
To compile a very clean version, use:
- $ ./configure --with-modules="" --without-lua
- $ make
- # make install
+```
+$ ./configure --with-modules="" --without-lua
+$ make
+# make install
+```
This generates a PowerDNS Authoritative Server binary with no modules built in.
To add multiple modules, try:
- $ ./configure --with-modules="bind gmysql gpgsql"
+```
+$ ./configure --with-modules="bind gmysql gpgsql"
+```
+
+Note that you will need the development headers for PostgreSQL as well in this case.
+
+See https://doc.powerdns.com/md/appendix/compiling-powerdns/ for more details.
-See http://doc.powerdns.com/compiling-powerdns.html for more details.
+If you run into C++11-related symbol trouble, please try passing `CPPFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0` (or 1) to `./configure` to make sure you are compatible with the installed dependencies.
COMPILING THE RECURSOR
----------------------
-The portable, and supported, way to build the recursor is:
+See the README in pdns/recursordist.
- $ cd pdns/recursordist
- $ ./bootstrap
- $ ./configure
- $ make
- # make install
-
-You need `autoconf`, `libtool` and `automake` installed to bootstrap it.
-Furthermore, when building from git `boost`, `pandoc`, `ragel` and `zip` are build dependencies.
+COMPILING DNSDIST
+----------------------
+See the README in pdns/dnsdistdist.
SOLARIS NOTES
-------------
-------------
You need to compile using gmake - regular make only appears to work, but doesn't in fact. Use gmake, not make.
+The clang compiler installed through FreeBSD's package manager does not expose all of the C++11 features needed under `std=gnuc++11`. Force the compiler to use `std=c++11` mode instead.
+
+ export CXXFLAGS=-std=c++11
+
MAC OS X NOTES
--------------
PowerDNS Authoritative Server is available through Homebrew:
- $ brew install pdns
+```
+$ brew install pdns
+```
If you want to compile yourself, the dependencies can be installed using
Homebrew:
- $ brew install boost lua pkg-config ragel
+```
+$ brew install boost lua pkg-config ragel
+```
For PostgreSQL support:
- $ brew install postgresql
+```
+$ brew install postgresql
+```
For MySQL support:
- $ brew install mariadb
+```
+$ brew install mariadb
+```
LINUX NOTES
-----------