# $Id: INSTALL.quagga.txt,v 1.5 2004/11/17 06:58:31 paul Exp $

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

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

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

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 pkgsrc provides automake 1.9.1 autoconf 2.59 libtool 1.5.6
NetBSD 1.6.2 and 2.0 provide texinfo 4.6.
--------------------------------------------------------------------------
