blob: f563f56bcc9a4d7c45c975039414f447e8176044 [file] [log] [blame] [view]
ndn-cxx: NDN C++ library with eXperimental eXtensions
=====================================================
Supported platforms
-------------------
ndn-cxx uses continuous integration testing and has been tested on the following platforms:
* Ubuntu 12.04 (64 bit and 32 bit)
* Ubuntu 13.10 (64 bit and 32 bit)
* Mac OS X 10.8
* Mac OS X 10.9
Prerequisites
-------------
### Required:
* `python` >= 2.6
* `libcrypto`
* `libsqlite3`
* `libcrypto++`
* `pkg-config`
* Boost libraries >= 1.48
* OSX Security framework (on OSX platform only)
Following are the detailed steps for each platform to install the prerequisites.
* Mac OS X
Install Xcode.
In Xcode Preferences > Downloads, install "Command Line Tools".
If using macports, dependencies can be installed using the following commands:
sudo port install pkgconfig boost sqlite3 libcryptopp
* Ubuntu 12.04, Ubuntu 13.10
In a terminal, enter:
sudo apt-get install build-essential
sudo apt-get install libssl-dev libsqlite3-dev libcrypto++-dev
# For Ubuntu 12.04
sudo apt-get install libboost1.48-all-dev
# For Ubuntu 13.10
sudo apt-get install libboost-all-dev
### Optional:
To build tutorials, manpages, and API documentation the following
dependencies need to be installed:
* `doxygen`
* `graphviz`
* `python-sphinx`
The following lists steps for common platforms to install these prerequisites:
* On OS X 10.8 and 10.9 with macports:
sudo port install doxygen graphviz py27-sphinx sphinx_select
sudo port select sphinx py27-sphinx
* On Ubuntu >= 12.04:
sudo apt-get install doxygen graphviz python-sphinx
Build
-----
(These are instructions to build ndn-cxx. To do development of ndn-cxx
code and update the build system, see Development.)
To build in a terminal, change directory to the ndn-cxx root. Enter:
./waf configure
./waf
sudo ./waf install
This builds and installs the following items:
* `<LIBPATH>/libndn-cxx.a`: static NDN C++ library
* `<LIBPATH>/pkgconfig/libndn-cxx.pc`: pkgconfig file storing all neccessary flags
to build against the library. For example, if pkgconfig or pkgconf package is
installed and `PKG_CONFIG_PATH` is configured properly (or `<LIBPATH>/pkgconfig` is a
default path), `pkgconfig --libs --clflags libndn-cxx` will return all necessary
compile and link flags for the library.
* `<BINPATH>/tlvdump`: a simple tool to dump contents of TLV-formatted data
* `<BINPATH>/ndncatchunks3`: a simplified equivalent to ndncatchunks2 in NDNx package
* `<BINPATH>/ndnputchunks3`: a simplified equivalent to ndnputchunks2 in NDNx package
* `<BINPATH>/ndnsec`: tool to manage NDN keys and certificates
* `<BINPATH>/ndnsec-*`: convenience scripts for `ndnsec` tools
If configured with tests: `./waf configure --with-tests`), the above commands will
also produce:
* `build/unit-tests`: A unit test binary for the library
Documentation
-------------
ndn-cxx 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 doxgyen
Manpages are automatically created and installed during the normal build process
(e.g., during `./waf` and `./waf install`), if `python-sphinx` module is detected during
`./waf configure` stage. By default, manpages are installed into `${PREFIX}/share/man`
(where default value for `PREFIX` is `/usr/local`). This location can be changed during
`./waf configure` stage using `--prefix`, `--datarootdir`, or `--mandir` options.
For more details, refer to `./waf --help`.
Development Build
-----------------
The following is the suggested configure commands for development build.
./waf configure --debug --with-tests
./waf
sudo ./waf install
In the development build all compiler optimizations are disabled by default and all
warnings are treated as error. The default behavior can be overridden by setting `CXXFLAGS`
environment variable before running `./waf configure`:
CXXFLAGS="-O1 -g3" ./waf configure --debug --with-tests
...