diff options
Diffstat (limited to 'macros/mate-autogen')
-rw-r--r-- | macros/mate-autogen | 163 |
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 |