cvs-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Cvs-dev] Re: [Cvs-cvs] ccvs/windows-NT ChangeLog config.h.in config.h


From: Derek R. Price
Subject: [Cvs-dev] Re: [Cvs-cvs] ccvs/windows-NT ChangeLog config.h.in config.h
Date: Fri, 07 Jul 2006 11:40:24 -0400
User-agent: Thunderbird 1.5.0.4 (Windows/20060516)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jim Hyslop wrote:
> Derek R. Price wrote:
>>> Please don't change the config.h.in files.  They are *both*
>>> autogenerated.  The top level one is generated by autoconf from the
>>> configure.in file.
> 
> Right. Methinks I need to learn more about using autoconf. Any pointers
> to quick-start guides?

The system is rather complex and I don't know if there is a quick start
guide.  `info autoconf' after installing autoconf (and GNU info) should
get the Autoconf manual.  It is also online
<http://www.gnu.org/software/autoconf/manual/autoconf.html>.


In short (you may want to skip to the "To boil this down even more" at
the end):

GNULIB may add macro files to the m4/* directory and we have a few in
there ourselves.

Automake's `aclocal' file builds up an `aclocal.m4' file from various
macros provided by Automake, plus the files installed in m4/.

Autoconf's `autoheader' turns the macros and shell script in
`configure.in' and `aclocal.m4' (remember, including Automake's macros
and m4/*) into config.h.in.

Autoconf's `autoconf' turns `configure.in' into `configure'.

Automake's `automake' then reuses `configure.in' and `aclocal.m4'
(remember, including Automake's macros and m4/*) to turn all the
`Makefile.am' files into `Makefile.in' files.


All these commands should only need be run by maintainers (us), leaving
users on to:

`configure && make' (`configure' turns all `Makefile.in's into
`Makefile's, as well as generating a few other files, as described in
the macros in `configure.in', m4/*, & Automake).


There are ASCII diagrams of much of this in the Automake and Autoconf
manuals if you want a visual.  To boil this down even more:

1.  The only top level build files you should ever edit are
configure.in, any Makefile.am, and m4/* files (for Windows, of course,
there is config.h.in.in, config.h.in.footer, and the MSVC project files,
but I covered those in an earlier email).

2.  If you edit an m4/* file which came from GNULIB (most of them), then
we generally need to push the change upstream to GNULIB (this also goes
for lib/* files from GNULIB, again, most of them).

3.  If you edit any Auto{conf,make} source file(s), then you can attempt
to forget about the whole complex inter-relationships and run Autoconf's
`autoreconf' to regenerate any files that need regenerating.  This
usually works and always works if you `touch configure.in && autoreconf'
(`cvs update' can sometimes munge timestamps inappropriately).
`autoreconf -m' will also reconfigure and `make' when done rebuilding
the Auto* generated build files.

4.  If you `configure --enable-maintainer-mode' (and have Autoconf,
Automake, Perl, and any dependencies installed), then a simple `make'
will also rebuild the Auto* generated build files, assuming things
haven't gotten too out of whack.  When things are so out of whack that
`touch configure.in && make' doesnt't rebuild the Auto* generated files
with maintainer mode enabled, `touch configure.in && autoreconf -m' will
do the trick, assuming that the problem isn't a syntax error or the like
in one of the Auto* source files.

5.  You should never need to `autoreconf' Auto* source files.  You
should never need to enable maintainer mode if you do not either alter
one of the Auto* build files or alter `window-NT/config.h.in.{in,footer}'.


Clear as mud?

Cheers,

Derek
- --
Derek R. Price
CVS Solutions Architect
Get CVS support at Ximbiot <http://ximbiot.com>!
v: +1 248.835.1260
f: +1 248.835.1263
<mailto:address@hidden>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEroBoLD1OTBfyMaQRAlz/AKCxg15NSCfQD1UE2uuMtoiQ6RNnPwCdGV8a
WiduXr647xgkw7uHdDuH7nA=
=ECjk
-----END PGP SIGNATURE-----





reply via email to

[Prev in Thread] Current Thread [Next in Thread]