.. _NDNS Installation Instructions:

NDNS Installation Instructions
==============================

Prerequisites
-------------

Install the `ndn-cxx library <https://named-data.net/doc/ndn-cxx/current/INSTALL.html>`_
and its prerequisites.

Optionally, to build manpages and API documentation the following additional dependencies
need to be installed:

-  doxygen
-  graphviz
-  sphinx
-  sphinxcontrib-doxylink

Build
-----

The following basic commands should be used to build NDNS on Ubuntu::

    ./waf configure
    ./waf
    sudo ./waf install

Refer to ``./waf --help`` for more options that can be used during the ``configure`` stage.

Debug symbols
+++++++++++++

The default compiler flags include debug symbols in binaries. This should provide
more meaningful debugging information if NDNS or other tools happen to crash.

If this is undesirable, the default flags can be overridden to disable debug symbols.
The following example shows how to completely disable debug symbols and configure
NDNS to be installed into ``/usr`` with configuration in the ``/etc`` directory.

::

    CXXFLAGS="-O2" ./waf configure --prefix=/usr --sysconfdir=/etc
    ./waf
    sudo ./waf install

Building documentation
----------------------

NDNS tutorials and API documentation can be built using the following commands::

    # Full set of documentation (tutorials + API) in build/docs
    ./waf docs

    # Only tutorials in build/docs
    ./waf sphinx

    # Only API docs in build/docs/doxygen
    ./waf doxygen

If ``sphinx-build`` is detected during ``./waf configure``, manpages will automatically
be built and installed during the normal build process (i.e., during ``./waf`` and
``./waf install``). By default, manpages will be installed into ``${PREFIX}/share/man``
(the default value for ``PREFIX`` is ``/usr/local``). This location can be changed
during the ``./waf configure`` stage using the ``--prefix``, ``--datarootdir``, or
``--mandir`` options.

For further details, please refer to ``./waf --help``.
