Move code from macros/autogen.sh to ./autogen.sh to make it more

obvious what happens. Add checks for all programs that are called,
fixes bug#325721. However in principle the code wasn't changed, only
cleaned up.




git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@12285 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Christian Stimming 2006-01-07 14:51:37 +00:00
parent 48f556c360
commit f86241f0a7
4 changed files with 226 additions and 273 deletions

View File

@ -1,3 +1,10 @@
2006-01-07 Christian Stimming <stimming@tuhh.de>
* autogen.sh: Move code from macros/autogen.sh to here to make it
more obvious what happens. Add checks for all programs that are
called, fixes bug#325721. However in principle the code wasn't
changed, only cleaned up.
2006-01-07 David Hampton <hampton@employees.org>
* src/business/business-gnome/dialog-order.c:

View File

@ -44,7 +44,6 @@ EXTRA_DIST = ChangeLog.1 \
make-gnucash-potfiles.in \
macros/aqbanking.m4 \
macros/as-scrub-include.m4 \
macros/autogen.sh \
macros/compiler-flags.m4 \
macros/g-wrap.m4 \
macros/gnome-guile-checks.m4 \

View File

@ -1,18 +1,226 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
# Set ${srcdir} to .
: ${srcdir=.}
PKG_NAME="gnucash"
DIE=0
(test -f $srcdir/configure.in \
## put other tests here
) || {
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
echo " top-level $PKG_NAME directory"
exit 1
if [ -n "${GNOME2_PATH}" ]; then
for dir in `echo ${GNOME2_PATH} | sed 's/:/ /g'`; do
if test -d "${dir}/share/aclocal"; then
ACLOCAL_FLAGS="${ACLOCAL_FLAGS} -I ${dir}/share/aclocal"
fi;
if test -d "${dir}/bin"; then
PATH="${PATH}:${dir}/bin"
fi;
done;
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 -n 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
}
USE_GNOME2_MACROS=1
. $srcdir/macros/autogen.sh
# 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"
}
############################################################
#
# Store all required programs in variables. All of these variables
# could have been set by the developer beforehand, if he/she needs to
# override the defaults of here.
: ${GLIB_GETTEXTIZE=glib-gettextize}
: ${INTLTOOLIZE=intltoolize}
: ${LIBTOOLIZE=libtoolize}
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"
############################################################
#
# All variables are set. Now check whether these programs are really
# available.
(${GLIB_GETTEXTIZE} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`glib-gettextize' installed to compile GnuCash."
echo "Get the development packages of the glib-2.x library from your distribution."
DIE=1
}
(${INTLTOOLIZE} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`intltoolize' installed to compile GnuCash."
echo "Get the package 'intltool' of your distribution."
DIE=1
}
(${LIBTOOLIZE} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtoolize' 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
}
(${AUTOMAKE} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`automake' 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
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 (older than automake-1.4)."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(${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
}
if test "$DIE" -eq 1; then
exit 1
fi
case $CC in
xlc )
am_opt=--include-deps;;
esac
############################################################
#
# All programs are available. So now actually call them in the
# required order.
dr=${srcdir}
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running ${GLIB_GETTEXTIZE} --force --copy ... "
echo "GnuCash note: Please ignore the output of ${GLIB_GETTEXTIZE} below!"
echo "no" | ${GLIB_GETTEXTIZE} --force --copy
echo "GnuCash note: Please ignore the output of ${GLIB_GETTEXTIZE} above!"
echo
echo "Ensure $dr/aclocal.m4 is writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
echo "Running ${INTLTOOLIZE} --force --copy ..."
${INTLTOOLIZE} --force --copy
echo "Running ${LIBTOOLIZE} --force --copy ..."
${LIBTOOLIZE} --force --copy
aclocalinclude="$ACLOCAL_FLAGS -I macros"
echo "Running ${ACLOCAL} $aclocalinclude ..."
${ACLOCAL} $aclocalinclude
echo "Running ${AUTOHEADER}..."
${AUTOHEADER} || { echo "**Error**: autoheader failed."; exit 1; }
echo "Running ${AUTOMAKE} --add-missing --gnu $am_opt ..."
${AUTOMAKE} --add-missing --gnu $am_opt
echo "Running ${AUTOCONF} ..."
${AUTOCONF}
############################################################
# Done.
conf_flags="--enable-error-on-warning --enable-compile-warnings" # --enable-iso-c
echo You must now run $srcdir/configure $conf_flags "$@" ...

View File

@ -1,261 +0,0 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
DIE=0
: ${GLIB_GETTEXTIZE=glib-gettextize}
: ${INTLTOOLIZE=intltoolize}
: ${LIBTOOLIZE=libtoolize}
if [ -n "$GNOME2_PATH" ]; then
for dir in `echo $GNOME2_PATH | sed 's/:/ /g'`; do
if test -d "${dir}/share/aclocal"; then
ACLOCAL_FLAGS="${ACLOCAL_FLAGS} -I ${dir}/share/aclocal"
fi;
if test -d "${dir}/bin"; then
PATH="${PATH}:${dir}/bin"
fi;
done;
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 -n 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) && {
(${LIBTOOLIZE} --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "**Error**: You must have \`libtoolize' 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
# We don't call configure so we don't need to warn the user here.
#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 "$srcdir/configure.in"
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
macrodirs="$dr/macros"
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
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "(3) Running gettextize... Ignore non-fatal messages."
echo "no" | ${GLIB_GETTEXTIZE} --force --copy
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
echo "Running ${INTLTOOLIZE} ..."
${INTLTOOLIZE} --force --copy
echo "Running ${LIBTOOLIZE}..."
${LIBTOOLIZE} --force --copy
echo "Running ${ACLOCAL} $aclocalinclude ..."
${ACLOCAL} $aclocalinclude
echo "Running ${AUTOHEADER}..."
${AUTOHEADER} || { echo "**Error**: autoheader failed."; exit 1; }
echo "Running ${AUTOMAKE} --gnu $am_opt ..."
${AUTOMAKE} --add-missing --gnu $am_opt
echo "Running ${AUTOCONF} ..."
${AUTOCONF}
)
fi
done
conf_flags="--enable-error-on-warning --enable-compile-warnings" # --enable-iso-c
echo You must now run $srcdir/configure $conf_flags "$@" ...