+If you are using one of the "big" operating systems or Linux distributions,
+you can use the following commands to install all the required packages to
+build the sources including all optional features and to run the test suite:
+
+* RedHat / Fedora based distributions:
+
+ yum install \
+ autoconf automake expect gcc glibc-devel gnutls-devel \
+ libident-devel make pam-devel tcp_wrappers-devel telnet zlib-devel
+
+* Debian / Ubuntu based distributions:
+
+ apt-get install \
+ autoconf automake build-essential expect libgnutls-dev \
+ libident-dev libpam-dev libwrap0-dev libz-dev telnet
+
+
+1): "autogen.sh"
+
+The first step, autogen.sh, is only necessary if the configure-script isn't
+already generated. This never happens in official ("stable") releases in
+tar.gz-archives, but when using GIT.
+
+This step is therefore only interesting for developers.
+
+autogen.sh produces the Makefile.in's, which are necessary for the configure
+script itself, and some more files for make. To run autogen.sh you'll need
+GNU autoconf and GNU automake: at least autoconf 2.61 and automake 1.10 are
+requird, newer is better. But don't use automake 1.12 or newer for creating
+distribution archives: it will work but lack "de-ANSI-fication" support in the
+generated Makefile's! Stick with automake 1.11.x for this purpose ...
+So automake 1.11.x and autoconf 2.67+ is recommended.
+
+Again: "end users" do not need this step and neither need GNU autoconf nor GNU
+automake at all!
+
+
+2): "./configure"
+
+The configure-script is used to detect local system dependencies.
+
+In the perfect case, configure should recognize all needed libraries, header
+files and so on. If this shouldn't work, "./configure --help" shows all
+possible options.
+
+In addition, you can pass some command line options to "configure" to enable
+and/or disable some features of ngIRCd. All these options are shown using
+"./configure --help", too.
+
+Compiling a static binary will avoid you the hassle of feeding a chroot dir
+(if you want use the chroot feature). Just do something like:
+ CFLAGS=-static ./configure [--your-options ...]
+Then you can use a void directory as ChrootDir (like OpenSSH's /var/empty).
+
+
+3): "make"
+
+The make command uses the Makefiles produced by configure and compiles the
+ngIRCd daemon.
+
+
+4): "make install"
+
+Use "make install" to install the server and a sample configuration file on
+the local system. Normally, root privileges are necessary to complete this
+step. If there is already an older configuration file present, it won't be
+overwritten.
+
+These files and folders will be installed by default:
+
+- /usr/local/sbin/ngircd: executable server
+- /usr/local/etc/ngircd.conf: sample configuration (if not already present)
+- /usr/local/share/doc/ngircd/: documentation
+- /usr/local/share/man/: manual pages
+
+
+III. Additional features
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+The following optional features can be compiled into the daemon by passing
+options to the "configure" script. Most options can handle a <path> argument
+which will be used to search for the required libraries and header files in
+the given paths ("<path>/lib/...", "<path>/include/...") in addition to the
+standard locations.
+
+* Syslog Logging (autodetected by default):
+ --with-syslog[=<path>] / --without-syslog
+
+ Enable (disable) support for logging to "syslog", which should be
+ available on most modern UNIX-like operating systems by default.
+
+* ZLib Compression (autodetected by default):
+ --with-zlib[=<path>] / --without-zlib
+
+ Enable (disable) support for compressed server-server links.
+ The Z compression library ("libz") is required for this option.
+
+* IO Backend (autodetected by default):
+ --with-select[=<path>] / --without-select
+ --with-poll[=<path>] / --without-poll
+ --with-devpoll[=<path>] / --without-devpoll
+ --with-epoll[=<path>] / --without-epoll
+ --with-kqueue[=<path>] / --without-kqueue
+
+ ngIRCd can use different IO "backends": the "old school" select() and poll()
+ API which should be supported by most UNIX-like operating systems, or the
+ more efficient and flexible epoll() (Linux >=2.6), kqueue() (BSD) and
+ /dev/poll APIs.
+ By default the IO backend is autodetected, but you can use "--without-xxx"
+ to disable a more enhanced API.
+ When using the epoll() API, support for select() is compiled in as well by
+ default to enable the binary to run on older Linux kernels (<2.6), too.
+
+* IDENT-Support:
+ --with-ident[=<path>]
+
+ Include support for IDENT ("AUTH") lookups. The "ident" library is
+ required for this option.
+
+* TCP-Wrappers:
+ --with-tcp-wrappers[=<path>]
+
+ Include support for Wietse Venemas "TCP Wrappers" to limit client access
+ to the daemon, for example by using "/etc/hosts.{allow|deny}".
+ The "libwrap" is required for this option.
+
+* PAM:
+ --with-pam[=<path>]
+
+ Enable support for PAM, the Pluggable Authentication Modules library.
+ See doc/PAM.txt for details.
+
+* SSL:
+ --with-openssl[=<path>]
+ --with-gnutls[=<path>]
+
+ Enable support for SSL/TLS using OpenSSL or gnutls libraries.
+ See doc/SSL.txt for details.
+
+* IPv6:
+ --enable-ipv6
+
+ Adds support for version 6 of the Internet Protocol.
+
+
+IV. Useful make-targets
+~~~~~~~~~~~~~~~~~~~~~~~
+
+The Makefile produced by the configure-script contains always these useful
+targets:
+
+ - clean: delete every product from the compiler/linker
+ next step: -> make
+
+ - distclean: the above plus erase all generated Makefiles
+ next step: -> ./configure
+
+ - maintainer-clean: erase all automatic generated files
+ next step: -> ./autogen.sh
+
+
+V. Sample configuration file ngircd.conf
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In the sample configuration file, there are comments beginning with "#" OR
+";" -- this is only for the better understanding of the file.
+
+The file is separated in five blocks: [Global], [Features], [Operator],
+[Server], and [Channel].
+
+In the [Global] section, there is the main configuration like the server
+name and the ports, on which the server should be listening. Options in
+the [Features] section enable or disable functionality in the daemon.
+IRC operators of this server are defined in [Operator] blocks, remote
+servers are configured in [Server] sections, and [Channel] blocks are
+used to configure pre-defined ("persistent") IRC channels.
+
+The meaning of the variables in the configuration file is explained in the
+"doc/sample-ngircd.conf", which is used as sample configuration file in
+/usr/local/etc after running "make install" (if you don't already have one)
+and in the ngircd.conf(5) manual page.
+
+
+VI. Command line options
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+These parameters could be passed to the ngIRCd:
+
+-f, --config <file>
+ The daemon uses the file <file> as configuration file rather than
+ the standard configuration /usr/local/etc/ngircd.conf.
+
+-n, --nodaemon
+ ngIRCd should be running as a foreground process.
+
+-p, --passive
+ Server-links won't be automatically established.
+
+-t, --configtest
+ Reads, validates and dumps the configuration file as interpreted
+ by the server. Then exits.
+
+Use "--help" to see a short help text describing all available parameters
+the server understands, with "--version" the ngIRCd shows its version
+number. In both cases the server exits after the output.
+
+Please see the ngircd(8) manual page for complete details!