# $Id: INSTALL.quagga.txt,v 1.4 2004/11/15 19:43:16 ajs 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.

TODO:
texinfo 4.7-4 is not a version of texinfo, per
http://ftp.gnu.org/gnu/texinfo/.

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.
--------------------------------------------------------------------------
