build+docs: align minimum requirements with ndn-cxx/NFD

 * Recommend boost >= 1.65.1 and gcc >= 7.4.0
 * Require clang >= 4.0, or Xcode >= 9.0 on macOS
 * Silence an ABI-related diagnostic message from gcc on armv7
 * Update waf to version 2.0.21
 * Make graphviz optional for building documentation
 * Sync sphinx configuration

Change-Id: Ib271da841cd12e7595ae83d75bd0fc681f8c231f
diff --git a/docs/RELEASE-NOTES.rst b/docs/RELEASE-NOTES.rst
index 2a63dae..04e2f84 100644
--- a/docs/RELEASE-NOTES.rst
+++ b/docs/RELEASE-NOTES.rst
@@ -1,4 +1,4 @@
-NLSR Release Notes
-==================
+Release Notes
+=============
 
-.. include:: release-notes-latest.rst
\ No newline at end of file
+.. include:: release-notes-latest.rst
diff --git a/docs/_static/.gitignore b/docs/_static/.gitignore
deleted file mode 100644
index e69de29..0000000
--- a/docs/_static/.gitignore
+++ /dev/null
diff --git a/docs/conf.py b/docs/conf.py
index 050d44c..526b37f 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,10 +1,8 @@
-# -*- coding: utf-8 -*-
-#
 # Configuration file for the Sphinx documentation builder.
 #
 # This file only contains a selection of the most common options. For a full
 # list see the documentation:
-# http://www.sphinx-doc.org/en/master/config
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
 
 # -- Path setup --------------------------------------------------------------
 
@@ -20,13 +18,13 @@
 # -- Project information -----------------------------------------------------
 
 project = u'Named Data Link State Routing Protocol (NLSR)'
-copyright = u'Copyright © 2014-2020 Named Data Networking Project.'
+copyright = u'Copyright © 2014-2021 Named Data Networking Project.'
 author = u'Named Data Networking Project'
 
-# The short X.Y version
+# The short X.Y version.
 #version = ''
 
-# The full version, including alpha/beta/rc tags
+# The full version, including alpha/beta/rc tags.
 #release = ''
 
 # There are two options for replacing |today|: either, you set today to some
@@ -40,7 +38,7 @@
 
 # If your documentation needs a minimal Sphinx version, state it here.
 #
-needs_sphinx = '1.1'
+needs_sphinx = '1.3'
 
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
@@ -87,6 +85,12 @@
 # so a file named "default.css" will overwrite the builtin "default.css".
 html_static_path = ['_static']
 
+html_copy_source = False
+html_show_sourcelink = False
+
+# Disable syntax highlighting of code blocks by default.
+highlight_language = 'none'
+
 
 # -- Options for LaTeX output ------------------------------------------------
 
diff --git a/docs/doxygen.conf.in b/docs/doxygen.conf.in
index 5f041ce..66161f9 100644
--- a/docs/doxygen.conf.in
+++ b/docs/doxygen.conf.in
@@ -220,12 +220,6 @@
 
 ALIASES                =
 
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
 # only. Doxygen will then generate output that is more tailored for C. For
 # instance, some of the names that are used will be different. The list of all
@@ -968,13 +962,6 @@
 
 ALPHABETICAL_INDEX     = YES
 
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
 # In case all classes in a project start with a common prefix, all classes will
 # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
 # can be used to specify a prefix (or a list of prefixes) that should be ignored
@@ -1989,12 +1976,6 @@
 
 EXTERNAL_PAGES         = YES
 
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
 #---------------------------------------------------------------------------
 # Configuration options related to the dot tool
 #---------------------------------------------------------------------------
@@ -2008,15 +1989,6 @@
 
 CLASS_DIAGRAMS         = YES
 
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
 # If set to YES, the inheritance and collaboration graphs will hide inheritance
 # and usage relations if the target is undocumented or is not a class.
 # The default value is: YES.
@@ -2030,7 +2002,7 @@
 # set to NO
 # The default value is: NO.
 
-HAVE_DOT               = YES
+HAVE_DOT               = @HAVE_DOT@
 
 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
 # to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2146,7 +2118,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALL_GRAPH             = YES
+CALL_GRAPH             = NO
 
 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
 # dependency graph for every global function or class method.
@@ -2157,7 +2129,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALLER_GRAPH           = YES
+CALLER_GRAPH           = NO
 
 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
 # hierarchy of all classes instead of a textual one.
diff --git a/docs/index.rst b/docs/index.rst
index aa2102d..6e2a4b4 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -3,7 +3,7 @@
 
 NLSR is a routing protocol in NDN that populates NDN's Routing Information Base. NLSR will
 continue to evolve alongside the Named Data Networking `protocol
-<https://named-data.net/doc/ndn-tlv/>`_.
+<https://named-data.net/doc/NDN-packet-spec/current/>`_.
 
 NLSR is an open and free software package licensed under the GPL 3.0 license and free to
 all Internet users and developers. For more information about the licensing details and
@@ -23,11 +23,11 @@
 the `NLSR Paper`_.
 
 NLSR Documentation
--------------------
+------------------
 
 .. toctree::
    :hidden:
-   :maxdepth: 3
+   :maxdepth: 2
 
    GETTING-STARTED
    INSTALL
diff --git a/docs/manpages.rst b/docs/manpages.rst
index e2e1582..ac08dce 100644
--- a/docs/manpages.rst
+++ b/docs/manpages.rst
@@ -1,10 +1,8 @@
-.. _Manpages:
-
-Manpages
-========
+Man pages
+=========
 
 .. toctree::
-   manpages/nlsr
-   manpages/nlsr.conf
-   manpages/nlsrc
+   :glob:
    :maxdepth: 1
+
+   manpages/*
diff --git a/docs/releases.rst b/docs/releases.rst
index 716d7c9..39b1403 100644
--- a/docs/releases.rst
+++ b/docs/releases.rst
@@ -2,24 +2,12 @@
 +++++++++++++
 
 .. toctree::
+   :glob:
    :hidden:
    :maxdepth: 1
+   :reversed:
 
-   release-notes/release-notes-0.6.0
-   release-notes/release-notes-0.5.2
-   release-notes/release-notes-0.5.1
-   release-notes/release-notes-0.5.0
-   release-notes/release-notes-0.4.3
-   release-notes/release-notes-0.4.2
-   release-notes/release-notes-0.4.1
-   release-notes/release-notes-0.4.0
-   release-notes/release-notes-0.3.2
-   release-notes/release-notes-0.3.1
-   release-notes/release-notes-0.3.0
-   release-notes/release-notes-0.2.2
-   release-notes/release-notes-0.2.1
-   release-notes/release-notes-0.2.0
-   release-notes/release-notes-0.1.0
+   release-notes/*
 
 * **NLSR version 0.6.0**
   (:doc:`Release Notes <release-notes/release-notes-0.6.0>`, `Documentation <https://named-data.net/doc/NLSR/0.6.0/>`__)