[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Computed values in AC_INIT, AC_CONFIG_SRCDIR, AC_CONFIG_HEADERS, etc
From: |
Bruce Korb |
Subject: |
Re: Computed values in AC_INIT, AC_CONFIG_SRCDIR, AC_CONFIG_HEADERS, etc. |
Date: |
Sun, 29 Jan 2006 10:41:03 -0800 |
User-agent: |
Mozilla Thunderbird 1.0.7 (X11/20050923) |
Olivier Boudeville wrote:
After having tried this approach, I noticed that at least AC_INIT,
AC_CONFIG_SRCDIR and AC_CONFIG_HEADERS do not seem to allow variable
substitution ($A taken litterally instead of its value, am I wrong ?)
I think to using a template that could be filled with settings read from a file
to generate the expected configure.ac, to ensure one-time assignment and avoid
multiple definition of the same value, which would be error-prone in my opinion.
Yep. That's the way to do it: a pre-autoreconf script.
It is very cute to construct it in a way that both shell
and m4 are happy, but it also adds a stiltedness that
makes things less clear. You may as well construct
several files from the one script. It's cleaner.
You can emit the "version.texi" doc file at the same time, too.
#!/bin/sh
VERSION_FILENAME="version.inc"
USAGE="Usage : "`basename $0`" <major> <minor> <release> : generates a file named
'$VERSION_FILENAME' which can set version numbers both when sourced by a shell script (setting the MAJOR_VERSION,
MINOR_VERSION and RELEASE variables appropriately) and included by a m4 script. This is useful as a workaround to
Autoconf AC_INIT behaviour."
if test "$#" -ne 3 ; then
echo $USAGE 1>&2
exit 1
fi
echo "dnl=\"This rather convoluted file allows to centralize version numbers while
\"" > $VERSION_FILENAME
echo "dnl=\"being able to be both sourced by shell scripts and included by m4.\""
>> $VERSION_FILENAME
echo "dnl=\"It can be generated by the 'generateVersionFile.sh' script.\"" >>
$VERSION_FILENAME
echo "dnl=; MAJOR=$1; MINOR=$2; RELEASE=$3 ; RELEASE_DATE=\""`date '+%A, %B %e, %Y'`"\";
m4_hiding_string=\"\\" >> $VERSION_FILENAME
echo "$1.$2.$3" >> $VERSION_FILENAME
echo "dnl \"" >> $VERSION_FILENAME
echo "'$VERSION_FILENAME' has been generated."
Using a "here doc" is much more comprehensible:
cat > $VERSION_FILENAME <<- _EOF_
dnl="xxx"
dnl=; MAJOR=$1; MINOR=$2; RELEASE=$3; RELEASE_DATE="`date`"
dnl=; m4_hiding_string="
$1.$2.$3
dnl "
_EOF_
Also, as the author of "autogen", I'd suggest calling the thing, "bootstrap" :)
Cheers - Bruce