If you are building from CVS, run the script

./autogen.sh

first, to make sure that you have all the necessary maintainer tools
are installed and to build the actual configuration files.  Then run

./configure --enable-maintainer-mode

followed by the usual make.

If autogen.sh complains about insufficient versions of the required
tools, or the tools are not installed, you may use environment
variables to override the default tool names:

 AUTOMAKE_SUFFIX  is used as a suffix for all tools from the automake
                  package.  For example 
                     AUTOMAKE_SUFFIX="-1.7" ./autogen.sh
                  uses "automake-1.7" and "aclocal-1.7.
 AUTOMAKE_PREFIX  is used as a prefix for all tools from the automake
                  page and may be combined with AUTOMAKE_SUFFIX. e.g.:
                    AUTOMAKE_PREFIX=/usr/foo/bin ./autogen.sh
                  uses "automake" and "aclocal" in the /usr/foo/bin
                  directory.
 AUTOCONF_SUFFIX  is used as a suffix for all tools from the automake
                  package
 AUTOCONF_PREFIX  is used as a prefix for all tools from the automake
                  package
 GETTEXT_SUFFIX   is used as a suffix for all tools from the gettext
                  package
 GETTEXT_PREFIX   is used as a prefix for all tools from the gettext
                  package

It is also possible to use the variable name AUTOMAKE, AUTOCONF,
ACLOCAL, AUTOHEADER, GETTEXT and MSGMERGE to directly specify the name
of the programs to run.  It is however better to use the suffix and
prefix forms as described above because that does not require
knowledge about the actual tools used by autgen.sh.


Please don't use autopoint, libtoolize or autoreconf unless you are
the current maintainer and want to update the standard configuration
files.  All those files should be in the CVS and only updated manually
if the maintainer decides that newer versions are required.  The
maintainer should also make sure that the required version of automake
et al. are properly indicated at the top of configure.ac and take care
to copy the files and not merely use symlinks.




