summaryrefslogtreecommitdiff
path: root/macros/mate-autogen
diff options
context:
space:
mode:
Diffstat (limited to 'macros/mate-autogen')
-rw-r--r--macros/mate-autogen163
1 files changed, 63 insertions, 100 deletions
diff --git a/macros/mate-autogen b/macros/mate-autogen
index b231084..cda8d3a 100644
--- a/macros/mate-autogen
+++ b/macros/mate-autogen
@@ -18,23 +18,23 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#name of package
-PKG_NAME=${PKG_NAME:-Package}
-srcdir=${srcdir:-.}
+test "PKG_NAME" || PKG_NAME=Package
+test "$srcdir" || srcdir=.
# default version requirements ...
-REQUIRED_AUTOCONF_VERSION=${REQUIRED_AUTOCONF_VERSION:-2.53}
-REQUIRED_AUTOMAKE_VERSION=${REQUIRED_AUTOMAKE_VERSION:-1.9}
-REQUIRED_LIBTOOL_VERSION=${REQUIRED_LIBTOOL_VERSION:-1.4.3}
-REQUIRED_GETTEXT_VERSION=${REQUIRED_GETTEXT_VERSION:-0.10.40}
-REQUIRED_GLIB_GETTEXT_VERSION=${REQUIRED_GLIB_GETTEXT_VERSION:-2.2.0}
-REQUIRED_INTLTOOL_VERSION=${REQUIRED_INTLTOOL_VERSION:-0.25}
-REQUIRED_PKG_CONFIG_VERSION=${REQUIRED_PKG_CONFIG_VERSION:-0.14.0}
-REQUIRED_GTK_DOC_VERSION=${REQUIRED_GTK_DOC_VERSION:-1.0}
-REQUIRED_DOC_COMMON_VERSION=${REQUIRED_DOC_COMMON_VERSION:-1.1.0}
+test "$REQUIRED_AUTOCONF_VERSION" || REQUIRED_AUTOCONF_VERSION=2.53
+test "$REQUIRED_AUTOMAKE_VERSION" || REQUIRED_AUTOMAKE_VERSION=1.9
+test "$REQUIRED_LIBTOOL_VERSION" || REQUIRED_LIBTOOL_VERSION=1.4.3
+test "$REQUIRED_GETTEXT_VERSION" || REQUIRED_GETTEXT_VERSION=0.10.40
+test "$REQUIRED_GLIB_GETTEXT_VERSION" || REQUIRED_GLIB_GETTEXT_VERSION=2.2.0
+test "$REQUIRED_INTLTOOL_VERSION" || REQUIRED_INTLTOOL_VERSION=0.25
+test "$REQUIRED_PKG_CONFIG_VERSION" || REQUIRED_PKG_CONFIG_VERSION=0.14.0
+test "$REQUIRED_GTK_DOC_VERSION" || REQUIRED_GTK_DOC_VERSION=1.0
+test "$REQUIRED_DOC_COMMON_VERSION" || REQUIRED_DOC_COMMON_VERSION=1.1.0
# a list of required m4 macros. Package can set an initial value
-REQUIRED_M4MACROS=${REQUIRED_M4MACROS:-}
-FORBIDDEN_M4MACROS=${FORBIDDEN_M4MACROS:-}
+test "$REQUIRED_M4MACROS" || REQUIRED_M4MACROS=
+test "$FORBIDDEN_M4MACROS" || FORBIDDEN_M4MACROS=
# Not all echo versions allow -n, so we check what is possible. This test is
# based on the one in autoconf.
@@ -51,8 +51,13 @@ case `echo -n x` in
esac
# some terminal codes ...
-boldface="`tput bold 2>/dev/null`"
-normal="`tput sgr0 2>/dev/null`"
+if tty < /dev/null 1>/dev/null 2>&1; then
+ boldface="`tput bold 2>/dev/null`"
+ normal="`tput sgr0 2>/dev/null`"
+else
+ boldface=
+ normal=
+fi
printbold() {
echo $ECHO_N "$boldface" $ECHO_C
echo "$@"
@@ -183,8 +188,8 @@ check_m4macros() {
# aclocal also searches a version specific dir, eg. /usr/share/aclocal-1.9
# but it contains only Automake's own macros, so we can ignore it.
- # Read the dirlist file, supported by Automake >= 1.7.
- if compare_versions 1.7 $AUTOMAKE_VERSION && [ -s $cm_macrodirs/dirlist ]; then
+ # Read the dirlist file
+ if [ -s $cm_macrodirs/dirlist ]; then
cm_dirlist=`sed 's/[ ]*#.*//;/^$/d' $cm_macrodirs/dirlist`
if [ -n "$cm_dirlist" ] ; then
for cm_dir in $cm_dirlist; do
@@ -274,7 +279,30 @@ want_gtk_doc=false
want_yelp_tools=false
want_maintainer_mode=false
-configure_files="`find $srcdir -name '{arch}' -prune -o -name '_darcs' -prune -o -name '.??*' -prune -o -name configure.ac -print -o -name configure.in -print`"
+#tell Mandrake autoconf wrapper we want autoconf 2.5x, not 2.13
+WANT_AUTOCONF_2_5=1
+export WANT_AUTOCONF_2_5
+version_check autoconf AUTOCONF 'autoconf2.50 autoconf autoconf-2.53' $REQUIRED_AUTOCONF_VERSION \
+ "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-$REQUIRED_AUTOCONF_VERSION.tar.gz"
+AUTOHEADER=`echo $AUTOCONF | sed s/autoconf/autoheader/`
+
+find_configure_files() {
+ configure_ac=
+ if test -f "$1/configure.ac"; then
+ configure_ac="$1/configure.ac"
+ elif test -f "$1/configure.in"; then
+ configure_ac="$1/configure.in"
+ fi
+ if test "x$configure_ac" != x; then
+ echo "$configure_ac"
+ $AUTOCONF -t 'AC_CONFIG_SUBDIRS:$1' "$configure_ac" | while read dir; do
+ find_configure_files "$1/$dir"
+ done
+ fi
+}
+
+configure_files="`find_configure_files .`"
+
for configure_ac in $configure_files; do
dirname=`dirname $configure_ac`
if [ -f $dirname/NO-AUTO-GEN ]; then
@@ -320,15 +348,11 @@ for configure_ac in $configure_files; do
grep "^MATE_CXX_WARNINGS" $configure_ac >/dev/null; then
require_m4macro mate-compiler-flags.m4
fi
+ if grep "^MATE_CODE_COVERAGE" $configure_ac >/dev/null; then
+ require_m4macro mate-code-coverage.m4
+ fi
done
-#tell Mandrake autoconf wrapper we want autoconf 2.5x, not 2.13
-WANT_AUTOCONF_2_5=1
-export WANT_AUTOCONF_2_5
-version_check autoconf AUTOCONF 'autoconf2.50 autoconf autoconf-2.53' $REQUIRED_AUTOCONF_VERSION \
- "http://ftp.gnu.org/pub/gnu/autoconf/autoconf-$REQUIRED_AUTOCONF_VERSION.tar.gz"
-AUTOHEADER=`echo $AUTOCONF | sed s/autoconf/autoheader/`
-
case $REQUIRED_AUTOMAKE_VERSION in
1.4*) automake_progs="automake-1.4" ;;
1.5*) automake_progs="automake-1.14 automake-1.13 automake-1.12 automake-1.11 automake-1.10 automake-1.9 automake-1.8 automake-1.7 automake-1.6 automake-1.5" ;;
@@ -347,7 +371,7 @@ version_check automake AUTOMAKE "$automake_progs" $REQUIRED_AUTOMAKE_VERSION \
ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/`
if $want_libtool; then
- version_check libtool LIBTOOLIZE libtoolize $REQUIRED_LIBTOOL_VERSION \
+ version_check libtool LIBTOOLIZE "libtoolize glibtoolize" $REQUIRED_LIBTOOL_VERSION \
"http://ftp.gnu.org/pub/gnu/libtool/libtool-$REQUIRED_LIBTOOL_VERSION.tar.gz"
require_m4macro libtool.m4
fi
@@ -412,35 +436,14 @@ for configure_ac in $configure_files; do
printbold "Processing $configure_ac"
cd $dirname
- # Note that the order these tools are called should match what
- # autoconf's "autoupdate" package does. See bug 138584 for
- # details.
-
- # programs that might install new macros get run before aclocal
- if grep "^A[CM]_PROG_LIBTOOL" $basename >/dev/null ||
- grep "^LT_INIT" $basename >/dev/null; then
- printbold "Running $LIBTOOLIZE..."
- $LIBTOOLIZE --force --copy || exit 1
- fi
-
- if grep "^AM_GLIB_GNU_GETTEXT" $basename >/dev/null; then
- printbold "Running $GLIB_GETTEXTIZE... Ignore non-fatal messages."
- echo "no" | $GLIB_GETTEXTIZE --force --copy || exit 1
- elif grep "^AM_GNU_GETTEXT" $basename >/dev/null; then
- if grep "^AM_GNU_GETTEXT_VERSION" $basename > /dev/null; then
- printbold "Running autopoint..."
- autopoint --force || exit 1
- else
- printbold "Running $GETTEXTIZE... Ignore non-fatal messages."
- echo "no" | $GETTEXTIZE --force --copy || exit 1
- fi
+ # if the AC_CONFIG_MACRO_DIR() macro is used, create that directory
+ # This is a automake bug fixed in automake 1.13.2
+ # See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13514
+ m4dir=`autoconf --trace 'AC_CONFIG_MACRO_DIR:$1'`
+ if [ -n "$m4dir" ]; then
+ mkdir -p $m4dir
fi
- if grep "^AC_PROG_INTLTOOL" $basename >/dev/null ||
- grep "^IT_PROG_INTLTOOL" $basename >/dev/null; then
- printbold "Running $INTLTOOLIZE..."
- $INTLTOOLIZE --force --copy --automake || exit 1
- fi
if grep "^GTK_DOC_CHECK" $basename >/dev/null; then
printbold "Running $GTKDOCIZE..."
$GTKDOCIZE --copy || exit 1
@@ -451,54 +454,14 @@ for configure_ac in $configure_files; do
mate-doc-common --copy || exit 1
fi
- # Now run aclocal to pull in any additional macros needed
-
- # if the AC_CONFIG_MACRO_DIR() macro is used, pass that
- # directory to aclocal.
- m4dir=`cat "$basename" | grep '^AC_CONFIG_MACRO_DIR' | sed -n -e 's/AC_CONFIG_MACRO_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
- if [ -n "$m4dir" ]; then
- m4dir="-I $m4dir"
- fi
- printbold "Running $ACLOCAL..."
- $ACLOCAL $m4dir $ACLOCAL_FLAGS || exit 1
-
- if grep "MATE_AUTOGEN_OBSOLETE" aclocal.m4 >/dev/null; then
- printerr "*** obsolete mate macros were used in $configure_ac"
- fi
-
- # Now that all the macros are sorted, run autoconf and autoheader ...
- printbold "Running $AUTOCONF..."
- $AUTOCONF || exit 1
- if grep "^A[CM]_CONFIG_HEADER" $basename >/dev/null; then
- printbold "Running $AUTOHEADER..."
- $AUTOHEADER || exit 1
- # this prevents automake from thinking config.h.in is out of
- # date, since autoheader doesn't touch the file if it doesn't
- # change.
- test -f config.h.in && touch config.h.in
- fi
-
- # Finally, run automake to create the makefiles ...
- printbold "Running $AUTOMAKE..."
- if [ -f COPYING ]; then
- cp -pf COPYING COPYING.autogen_bak
- fi
- if [ -f INSTALL ]; then
- cp -pf INSTALL INSTALL.autogen_bak
- fi
- if [ $REQUIRED_AUTOMAKE_VERSION != 1.4 ]; then
- $AUTOMAKE --gnu --add-missing --force --copy -Wno-portability || exit 1
- else
- $AUTOMAKE --gnu --add-missing --copy || exit 1
+ if grep "^AC_PROG_INTLTOOL" $basename >/dev/null ||
+ grep "^IT_PROG_INTLTOOL" $basename >/dev/null; then
+ printbold "Running $INTLTOOLIZE..."
+ $INTLTOOLIZE --force --copy --automake || exit 1
fi
- if [ -f COPYING.autogen_bak ]; then
- cmp COPYING COPYING.autogen_bak > /dev/null || cp -pf COPYING.autogen_bak COPYING
- rm -f COPYING.autogen_bak
- fi
- if [ -f INSTALL.autogen_bak ]; then
- cmp INSTALL INSTALL.autogen_bak > /dev/null || cp -pf INSTALL.autogen_bak INSTALL
- rm -f INSTALL.autogen_bak
- fi
+ # Now that all the macros are sorted, run autoreconf ...
+ printbold "Running autoreconf..."
+ autoreconf --verbose --force --install -Wno-portability || exit 1
cd "$topdir"
fi