# $Id: INSTALL.quagga.txt,v 1.9 2005/04/02 17:13:33 paul Exp $

--------------------------------------------------------------------------
Building and Installing Quagga from releases or snapshots:

The 'INSTALL' file contains generic instructions on how to use 'configure'
scripts.

Quagga requires a C compiler supporting the C99 standard.

Quagga can be compiled with either BSD make or GNU make.
GNU make 3.80 is known to work.
The following system makes are known to work
  NetBSD 1.6.2
  NetBSD 2.0

For further Quagga specific information on 'configure' and build-time
configuration of the software, please read the Quagga info documentation,
(doc/quagga.info). To read the info page included with the Quagga sources
without first installing Quagga:

	cd doc/
	pinfo -r quagga.info

Assuming you have the user-friendly 'pinfo' info browser installed.

You can also the standard GNU 'info' browser, if you prefer this browser you
have no doubt already spent a lot of time reading its documentation and dont
need to be told how to specify an info file by filename. ;)

The Quagga website should also have recent versions of documentation
available online.

--------------------------------------------------------------------------
Building Quagga from CVS checkouts:

In order to build from CVS, you will need recent versions of several GNU
tools, particularly autoconf, automake, libtool and texinfo.  Note that the
CVS snapshots on the Quagga website do not require these tools; everything
is already setup ready to run 'configure'.  If you have trouble building
from CVS checkout it is recommended that you try a CVS snapshot instead.

If you are building from plain CVS checkouts, the versions which
should work at least with:

	automake:	1.8.5
	autoconf:	2.59
	libtool:	1.5.6
	texinfo:	4.7

Texinfo is not actually required since quagga.info is checked in.
When texinfo 4.7 is widespread, it will be removed and texinfo will
become required again.  (4.7 has figure support, needed for the route
server docs, which is why 4.6 doesn't work.)

In order to create PostScript or PDF versions of the Texinfo documentation,
you will need the convert utility, from the ImageMagick toolset installed,
and epstopdf from the TeTeX suite.

To create the required autotools files (Makefile.in, configure, etc.),
run either the 'update-autotools' script provided, or else the
'autoreconf -i' command supplied with your autoconf package.  After this
you may run configure.  GNU texinfo is required in order to build
doc/quagga.info, which is not supplied in CVS, but is supplied in the
CVS snapshots on the Quagga website.   quagga.info is created via
makeinfo during the build.

Please refer to "Building and Installing Quagga" above for further
instructions.

--------------------------------------------------------------------------
Notes on required versions:

The general goal is to use a modern baseline of tools, while not
imposing pain on those tracking stable distributions.  The notes below
explain what versions are present in various environments.

NetBSD 1.6.2 and 2.0 provide texinfo 4.6.
NetBSD pkgsrc provides automake 1.9.1 autoconf 2.59 libtool 1.5.6
NetBSD pgksrc provides texinfo 4.7 (devel/gtexinfo)

OpenBSD 3.6 provides texinfo 4.2.
OpenBSD [3.6] ports provides automake 1.4-p6 autoconf 2.5.9 libtool 1.5.8

--------------------------------------------------------------------------
