@node Build-instructions
@cindex building
@section Build instructions

Make sure that Go is installed. For example to install it from packages:

@table @asis
@item FreeBSD
    @verb{|pkg install go|}
@item Debian, Ubuntu
    @verb{|apt install golang|}
@end table

@example
$ [fetch|wget] http://www.nncpgo.org/download/nncp-@value{VERSION}.tar.xz
$ [fetch|wget] http://www.nncpgo.org/download/nncp-@value{VERSION}.tar.xz.@{asc,sig@}
[verify signature]
$ xz -d < nncp-@value{VERSION}.tar.xz | tar xf -
$ cd nncp-@value{VERSION}
[optionally edit config]
$ bin/build
@end example

@pindex info
After that you should get various @command{bin/nncp-*} binaries and
@command{bin/hjson-cli} command (only for your convenience, not
necessary installation). For example, documentation for
@command{nncp-bundle} command can be get with
@command{info doc/nncp.info -n nncp-bundle}.

@vindex PREFIX
@vindex DESTDIR
@vindex GO
@vindex MAKEINFO
@vindex PLANTUML
@vindex PREFIX
@vindex SENDMAIL
@vindex CFGPATH
@vindex SPOOLPATH
@vindex LOGPATH
@vindex BINDIR
@vindex INFODIR
@vindex DOCDIR
@file{config} file contains some environment variables that are
respected during installation:
@env{$PREFIX},
@env{$DESTDIR},
@env{$GO},
@env{$MAKEINFO},
@env{$PLANTUML},
@env{$PREFIX},
@env{$SENDMAIL},
@env{$CFGPATH},
@env{$SPOOLPATH},
@env{$LOGPATH},
@env{$BINDIR},
@env{$INFODIR},
@env{$DOCDIR}.

There is @command{install} script for binaries and info-documentation
installation:

@example
# PREFIX=/usr/local ./install
@end example

@vindex nofsnotify
@cindex kqueue
@cindex epoll
@vindex GO_CFLAGS
NNCP depends on @code{github.com/fsnotify/fsnotify} library, that solely
relies on OS-specific mechanisms. There is possibility that you have
either broken or unsupported ones. You can still build NNCP with
@code{-tags nofsnotify} build option, to skip @code{fsnotify} library
usage at all:

@example
$ GO_CFLAGS="-tags nofsnotify" bin/build
@end example

@vindex noyggdrasil
You can also disable Yggdrasil support with @code{-tags noyggdrasil}.
