gnucash/macros/autogen.sh
Derek Atkins 2388ff3158 Build CVS directly with recent gettextize; no AC_OUTPUT errors.
* configure.in: move m4/Makefile to its own line
	* macros/autogen.sh: add code to remove "intl/Makefile po/Makefile"
	  from AC_OUTPUT in configure.in prior to calling gettextize
	  to make sure that you can build from CVS with recent versions
	  of gettextize.  Tested with both RH9 and RH7.3 to make sure
	  it works with both old and new.  Fixes #120206.


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@9871 57a11ea4-9604-0410-9ed3-97b8803252fd
2004-04-01 05:42:58 +00:00

305 lines
9.2 KiB
Bash

#!/bin/sh
# Run this to generate all the initial makefiles, etc.
DIE=0
GETTEXTIZE=${GETTEXTIZE:-gettextize}
INTLTOOLIZE=${INTLTOOLIZE:-intltoolize}
LIBTOOLIZE=${LIBTOOLIZE:-libtoolize}
LIBTOOL=${LIBTOOL:-libtool}
if [ -n "$GNOME2_PATH" ]; then
ACLOCAL_FLAGS="-I $GNOME2_PATH/share/aclocal $ACLOCAL_FLAGS"
PATH="$GNOME2_PATH/bin:$PATH"
export PATH
fi
# usage: test_version program version
# returns 0 if program >= version; returns 1 if not.
test_version()
{
this_prog="$1"
want_vers="$2"
testv=`"$this_prog" --version 2>/dev/null | head -1 | awk '{print $NF}'`
if test -z "$testv" ; then return 1 ; fi
testv_major=`echo "$testv" | sed 's/\([0-9]*\).\([0-9]*\).*$/\1/'`
testv_minor=`echo "$testv" | sed 's/\([0-9]*\).\([0-9]*\).*$/\2/'`
vers_major=`echo "$want_vers" | sed 's/\([0-9]*\).\([0-9]*\).*$/\1/'`
vers_minor=`echo "$want_vers" | sed 's/\([0-9]*\).\([0-9]*\).*$/\2/'`
# if wanted_major > found_major, this isn't good enough
if test $vers_major -gt $testv_major ; then
return 1
# if wanted_major < found_major, then this is fine
elif test $vers_major -lt $testv_major ; then
return 0
# if we get here, then the majors are equal, so test the minor version
# we want found_minor >= want_minor.
# So, if want_minor > found_minor, this is bad.
elif test $vers_minor -gt $testv_minor ; then
return 1
# this is it.
else
return 0
fi
}
# usage: find_program preset program version "<other versions>"
# sets "program" to the name of the program to use.
# if preset is set, then use that regardless,
# otherwise check if "program" is of a good enough version and use that,
# otherwise check if "program-version" is of a good enough version and use that.
# otherwise return an error.
find_program()
{
find="$1"
prog="$2"
vers="$3"
extravers="$4"
if test -n "$find" ; then
test_version "$find" "$vers"
status="$?"
if test "$status" = 0 ; then
program="$find"
return 0
fi
echo "**Error**: cannot use $find"
else
test_version "$prog" "$vers"
status=$?
if test "$status" = 0 ; then
program="$prog"
return 0
fi
for test_vers in $vers $extravers ; do
test_version "$prog-$test_vers" "$vers"
status=$?
if test "$status" = 0 ; then
program="$prog-$test_vers"
return 0
fi
done
fi
echo
echo "**Warning**: Could not find a $prog that identifies itself >= $vers."
echo
program="$prog"
}
find_program "$AUTOCONF" autoconf 2.53
AUTOCONF="$program"
find_program "$AUTOHEADER" autoheader 2.53
AUTOHEADER="$program"
find_program "$AUTOMAKE" automake 1.5 "1.6 1.7"
AUTOMAKE="$program"
find_program "$ACLOCAL" aclocal 1.5 "1.6 1.7"
ACLOCAL="$program"
(${AUTOCONF} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`autoconf' installed to compile GnuCash."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
gettext_version=`gettextize --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $gettext_version in
0.10.*)
;;
*)
INTL="--intl --no-changelog";;
esac
#(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && {
# (${LIBTOOL} --version) < /dev/null > /dev/null 2>&1 || {
# echo
# echo "**Error**: You must have \`libtool' installed to compile GnuCash."
# echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.4.2.tar.gz"
# echo "(or a newer version if it is available)"
# DIE=1
# }
#}
#grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && {
# grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
# (${GETTEXT} --version) < /dev/null > /dev/null 2>&1 || {
# echo
# echo "**Error**: You must have \`gettext' installed to compile GnuCash."
# echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
# echo "(or a newer version if it is available)"
# DIE=1
# }
#}
#grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && {
# grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \
# (${GETTEXT} --version) < /dev/null > /dev/null 2>&1 || {
# echo
# echo "**Error**: You must have \`gettext' installed to compile GnuCash."
# echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz"
# echo "(or a newer version if it is available)"
# DIE=1
# }
#}
(${AUTOMAKE} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`automake' installed to compile GnuCash."
echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.4.tar.gz"
echo "(or a newer version if it is available)"
DIE=1
NO_AUTOMAKE=yes
}
# if no automake, don't bother testing for aclocal
test -n "$NO_AUTOMAKE" || (${ACLOCAL} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: Missing \`aclocal'. The version of \`automake'"
echo "installed doesn't appear recent enough."
echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.4.tar.gz"
echo "(or a newer version if it is available)"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
if test -z "$*"; then
echo "**Warning**: I am going to run \`configure' with no arguments."
echo "If you wish to pass any to it, please specify them on the"
echo \`$0\'" command line."
echo
fi
case $CC in
xlc )
am_opt=--include-deps;;
esac
for coin in `find $srcdir -name configure.in -print`
do
dr=`dirname $coin`
if test -f $dr/NO-AUTO-GEN; then
echo skipping $dr -- flagged as no auto-gen
else
echo processing $dr
macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin`
( cd $dr
macrosdir=`find . -name macros -print`
for i in $macrodirs; do
if test -f $i/gnome-gettext.m4; then
DELETEFILES="$DELETEFILES $i/gnome-gettext.m4"
fi
done
echo "deletefiles is $DELETEFILES"
aclocalinclude="$ACLOCAL_FLAGS"
for k in $aclocalinclude; do
if test -d $k; then
if [ -f $k/gnome.m4 -a "$GNOME_INTERFACE_VERSION" = "1" ]; then
rm -f $DELETEFILES
fi
fi
done
for k in $macrodirs; do
if test -d $k; then
aclocalinclude="$aclocalinclude -I $k"
if [ -f $k/gnome.m4 -a "$GNOME_INTERFACE_VERSION" = "1" ]; then
rm -f $DELETEFILES
fi
fi
done
grep "intl/Makefile" configure.in > /dev/null &&
( sed -e 's#^AC_OUTPUT(.*intl/Makefile po/Makefile.in#AC_OUTPUT(#' \
configure.in >configure.in.new && mv configure.in.new configure.in )
if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then
if grep "sed.*POTFILES" configure.in >/dev/null; then
: do nothing -- we still have an old unmodified configure.in
else
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "(1) Running ${GETTEXTIZE}... Ignore non-fatal messages."
echo "no" | ${GETTEXTIZE} --force --copy $INTL
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
fi
if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "(2) Running ${GETTEXTIZE}... Ignore non-fatal messages."
echo "no" | ${GETTEXTIZE} --force --copy $INTL
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
echo
echo "*** WARNING ***"
echo "*** Ignore any instruction above about running aclocal by hand."
echo "*** I repeat, do not run aclocal by hand. You have been warned....."
echo
case $gettext_version in
0.10.*)
grep "intl/Makefile" configure.in > /dev/null ||
( sed -e 's#^AC_OUTPUT(#AC_OUTPUT( intl/Makefile po/Makefile.in#' \
configure.in >configure.in.new && mv configure.in.new configure.in )
;;
*)
;;
esac
if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then
echo "Running ${INTLTOOLIZE} ..."
${INTLTOOLIZE} --copy --force --automake
fi
# if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then
# if test -z "$NO_LIBTOOLIZE" ; then
# echo "Running ${LIBTOOLIZE}..."
# ${LIBTOOLIZE} --force --copy
# fi
# fi
echo "Running ${ACLOCAL} $aclocalinclude ..."
${ACLOCAL} $aclocalinclude || {
echo
echo "**Error**: aclocal failed. This may mean that you have not"
echo "installed all of the packages you need, or you may need to"
echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\""
echo "for the prefix where you installed the packages whose"
echo "macros were not found"
exit 1
}
if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then
echo "Running ${AUTOHEADER}..."
echo "Note: you can ignore messages about using deprecated aux files"
${AUTOHEADER} || { echo "**Error**: autoheader failed."; exit 1; }
fi
echo "Running ${AUTOMAKE} --gnu $am_opt ..."
${AUTOMAKE} --add-missing --gnu $am_opt ||
{ echo "**Error**: automake failed."; exit 1; }
echo "Running ${AUTOCONF} ..."
${AUTOCONF} || { echo "**Error**: autoconf failed."; exit 1; }
) || exit 1
fi
done
conf_flags="--enable-maintainer-mode --enable-error-on-warning --enable-compile-warnings" # --enable-iso-c
if test x$NOCONFIGURE = x; then
echo Running $srcdir/configure $conf_flags "$@" ...
$srcdir/configure $conf_flags "$@" \
&& echo Now type \`make\' to compile $PKG_NAME || exit 1
else
echo Skipping configure process.
fi