Mercurial > pidgin.yaz
changeset 22566:375a101c5d7b
A more verbose autogen.sh that Gary and I have been using for Guifications
and the Purple Plugin Pack for a while now. I wanted to give it a try here
because it lets you know at each step what it's doing.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Sun, 30 Mar 2008 17:15:21 +0000 |
parents | 0085d8b80bc4 |
children | 519f5fc80721 |
files | autogen.sh |
diffstat | 1 files changed, 123 insertions(+), 61 deletions(-) [+] |
line wrap: on
line diff
--- a/autogen.sh Sun Mar 30 16:42:12 2008 +0000 +++ b/autogen.sh Sun Mar 30 17:15:21 2008 +0000 @@ -1,73 +1,135 @@ -#!/bin/sh - -CONFIGURE_ARGS="" -if [ -f configure.args ] ; then - . configure.args -fi - -(glib-gettextize --version) < /dev/null > /dev/null 2>&1 || { - echo; - echo "You must have glib-gettextize installed to compile Pidgin."; - echo; - exit 1; -} +#! /bin/sh +# Guifications - The end-all, be-all notification framework +# Copyright (C) 2003-2008 Gary Kramlich <grim@reaperworld.com> +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -(intltoolize --version) < /dev/null > /dev/null 2>&1 || { - echo; - echo "You must have intltool installed to compile Pidgin."; - echo; - exit 1; -} +############################################################################### +# Usage +############################################################################### +# This script uses a config file that can be used to stash common arguments +# passed to configure or environment variables that need to be set before +# configure is called. The configuration file is a simple shell script that +# gets sourced. +# +# By default, the config file that is used is named 'autogen.args'. This can +# be configured below. +# +# Available options that are handled are as follow: +# ACLOCAL_FLAGS - command line arguments to pass to aclocal +# AUTOCONF_FLAGS - command line arguments to pass to autoconf +# AUTOHEADER_FLAGS - command line arguments to pass to autoheader +# AUTOMAKE_FLAGS - command line arguments to pass to automake flags +# CONFIGURE_FLAGS - command line arguments to pass to configure +# INTLTOOLIZE_FLAGS - command line arguments to pass to intltoolize +# LIBTOOLIZE_FLAGS - command line arguments to pass to libtoolize +# +# Other helpfull notes: +# If you're using a different c compiler, you can override the environment +# variable in 'autogen.args'. For example, say you're using distcc, just add +# the following to 'autogen.args': +# +# CC="distcc" +# +# This will work for any influential environment variable to configure. +############################################################################### +PACKAGE="Pidgin" +ARGS_FILE="autogen.args" -(libtoolize --version) < /dev/null > /dev/null 2>&1 || { - echo; - echo "You must have libtool installed to compile Pidgin."; - echo; - exit 1; -} +############################################################################### +# Some helper functions +############################################################################### +check () { + CMD=$1 -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo; - echo "You must have automake installed to compile Pidgin."; - echo; - exit 1; + echo -n "checking for ${CMD}... " + BIN=`which ${CMD}` + + if [ x"${BIN}" = x"" ] ; then + echo "not found." + echo "${CMD} is required to build ${PACKAGE}!" + exit 1; + fi + + echo "${BIN}" } -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo; - echo "You must have autoconf installed to compile Pidgin."; - echo; - exit 1; +run_or_die () { # beotch + CMD=$1 + shift + + echo -n "running ${CMD} ${@}... " + OUTPUT=`${CMD} ${@} 2>&1` + if [ $? != 0 ] ; then + echo "failed." + echo ${OUTPUT} + exit 1 + else + echo "done." + if [ x"${OUTPUT}" != x"" ] ; then + echo ${OUTPUT} + fi + fi } -echo "Generating configuration files for Pidgin, please wait...." -echo; +############################################################################### +# We really start here, yes, very sneaky! +############################################################################### +FIGLET=`which figlet` +if [ x"${FIGLET}" != x"" ] ; then + ${FIGLET} -f small ${PACKAGE} + echo "build system is being generated" +else + echo "autogenerating build system for '${PACKAGE}'" +fi -echo "Running libtoolize, please ignore non-fatal messages...." -echo n | libtoolize --copy --force || exit 1; +############################################################################### +# Look for our args file +############################################################################### +echo -n "checking for ${ARGS_FILE}: " +if [ -f ${ARGS_FILE} ] ; then + echo "found." + echo -n "sourcing ${ARGS_FILE}: " + . autogen.args + echo "done." +else + echo "not found." +fi -# Add other directories to this list if people continue to experience -# brokennesses ... Obviously the real answer is for them to fix it -# themselves, but for Luke's sake we have this. -for dir in "/usr/local/share/aclocal" \ - "/opt/gnome-1.4/share/aclocal" -do - if test -d $dir ; then - ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I $dir" - fi -done +############################################################################### +# Check for our required helpers +############################################################################### +check "libtoolize"; LIBTOOLIZE=${BIN}; +check "intltoolize"; INTLTOOLIZE=${BIN}; +check "aclocal"; ACLOCAL=${BIN}; +check "autoheader"; AUTOHEADER=${BIN}; +check "automake"; AUTOMAKE=${BIN}; +check "autoconf"; AUTOCONF=${BIN}; -libtoolize -c -f --automake -glib-gettextize --force --copy -intltoolize --force --copy -aclocal $ACLOCAL_FLAGS || exit 1; -autoheader || exit 1; -automake --add-missing --copy; -autoconf || exit 1; -automake || exit 1; +############################################################################### +# Run all of our helpers +############################################################################### +run_or_die ${LIBTOOLIZE} -c -f --automake ${LIBTOOLIZE_FLAGS} +run_or_die ${INTLTOOLIZE} -c -f --automake ${INTLTOOLIZE_FLAGS} +run_or_die ${ACLOCAL} -I m4 ${ACLOCAL_FLAGS} +run_or_die ${AUTOHEADER} ${AUTOHEADER_FLAGS} +run_or_die ${AUTOMAKE} -a -c -f --gnu ${AUTOMAKE_FLAGS} +run_or_die ${AUTOCONF} -f ${AUTOCONF_FLAGS} -echo; -echo "Running ./configure ${CONFIGURE_ARGS} $@" -echo; +############################################################################### +# Run configure +############################################################################### +echo "running ./configure ${CONFIGURE_ARGS} $@" ./configure ${CONFIGURE_ARGS} $@ -