[tex-k] Autoconf-2.13 vs. 2.59

Peter Breitenlohner peb at mppmu.mpg.de
Fri Feb 18 09:14:26 CET 2005

On Mon, 31 Jan 2005, Karl Berry wrote:

>    > .........  The final alternative is to replicate these makefile
>    > bits in all the texk/*/Makefile.in, and maintain the result in all of
>    > these files, instead of one place.
>    What a nightmare for the maintainer(s).
> It could be automated (even if the fragments are physically present in
> all the files).  E.g.,
> ### ac_included foo begins here
> ... foo content here ...
> ### ac_included foo ends here
> And a script could check/replace what's between the ### lines with the
> content of the foo master file.
> But it's certainly something to avoid if possible.  Your splitting the
> Makefile seems clean in comparison :).

Hi everybody,

meanwhile it occured to me, that the present autoconf-2.59 provides
everything we need for ac_include without any need to split the Makefiles.
And no need to argue with the autoconf people about new features.

Attached is a foo-1.0.tar.gz tarball demonstrating most things. Unpack it,
cd to foo-1.0, and run 'autoreconf -vf' (of course with V2.5x). Then
configure with or without VPATH and run make.

This should create a Makefile and two shell scripts foo and bar, where foo
and Makefile use ac_include substitutions.

You can then touch one or the other source files, rerun make, and look if
all dependencies are right (I sincerely hope they are).


BTW: I have renamed ac_include into kpse_include, I think we should stop
stepping onto the autotools namespaces.

The basic idea is the following:

The last three lines of configure.ac

KPSE_CONFIG_FILES([foo Makefile], [chmod a+x foo])
AC_CONFIG_FILES([bar], [chmod a+x bar])

say that foo and Makefile are built with ac_include substitutions from
foo.in and Makefile.in respectively, and after creating them "chmod a+x foo"
is to be executed. On the other hand bar is built from bar.in without
ac_include substitutions, just the usual ones.

The definition of KPSE_CONFIG_FILES translates the first line above into
something like

AC_CONFIG_FILES([foo.aux:kpse_empty], [do_the substitutions(foo.aux,foo.in)])
AC_CONFIG_FILES([foo:foo.aux], [chmod a+x foo])

and the same for Makefile.

There is an empty file kpse_empty created by configure, and in a first step
config.status performs the ususal substitutions to create a fake foo.aux.
This foo.aux is then discarded, it's only purpose is to trigger the
execution of "do_the substitutions(foo.aux,foo.in)". Using essentially the
commands from the autoconf-2.13 version of ac_include this then converts
foo.in into the real foo.aux.

In a second step config.status performs the ususal substitutions in foo.aux
to create foo, and finally does "chmod a+x foo".


The makefile fragments make/xxx.mk and make/yyy.mk in the example are
modelled after texk/web2c/*texdir/*tex.mk, supplying dependencies such that
texk/web2c/Makefile is regenerated when they have changed. This may or may
not work for other makefile fragments, since they might be included with
different relative paths.


All this is still rather preliminary, just to see your reactions.

regards		Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: foo-1.0.tar.gz
Type: application/octet-stream
Size: 3171 bytes
Url : http://tug.org/pipermail/tex-k/attachments/20050218/0ff1eae7/foo-1.0.tar.obj

More information about the tex-k mailing list