Re: Computed values in AC_INIT, AC_CONFIG_SRCDIR, AC_CONFIG_HEADERS, etc.

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

 



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


_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux