mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
* 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
305 lines
9.2 KiB
Bash
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
|