merge of 'efe4fb3772ade214c04fa3fba2b27f825a0b70e8'
[pidgin-git.git] / autogen.sh
blob60b3cd84521bfbbc762b013fb6d4da0f9577019e
1 #! /bin/sh
2 # Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
3 # Copyright (C) 2003-2008 Gary Kramlich <grim@reaperworld.com>
5 # This program is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by the Free
7 # Software Foundation; either version 2 of the License, or (at your option)
8 # any later version.
10 # This program is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 # more details.
15 # You should have received a copy of the GNU General Public License along with
16 # this program; if not, write to the Free Software Foundation, Inc., 51
17 # Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 ###############################################################################
20 # Usage
21 ###############################################################################
22 # This script uses a config file that can be used to stash common arguments
23 # passed to configure or environment variables that need to be set before
24 # configure is called. The configuration file is a simple shell script that
25 # gets sourced.
27 # By default, the config file that is used is named 'autogen.args'. This can
28 # be configured below.
30 # Available options that are handled are as follow:
31 # ACLOCAL_FLAGS - command line arguments to pass to aclocal
32 # AUTOCONF_FLAGS - command line arguments to pass to autoconf
33 # AUTOHEADER_FLAGS - command line arguments to pass to autoheader
34 # AUTOMAKE_FLAGS - command line arguments to pass to automake flags
35 # CONFIGURE_FLAGS - command line arguments to pass to configure
36 # GLIB_GETTEXTIZE_FLAGS - command line arguments to pass to glib-gettextize
37 # INTLTOOLIZE_FLAGS - command line arguments to pass to intltoolize
38 # LIBTOOLIZE_FLAGS - command line arguments to pass to libtoolize
40 # Other helpful notes:
41 # If you're using a different c compiler, you can override the environment
42 # variable in 'autogen.args'. For example, say you're using distcc, just add
43 # the following to 'autogen.args':
45 # CC="distcc"
47 # This will work for any influential environment variable to configure.
48 ###############################################################################
49 PACKAGE="Pidgin"
50 ARGS_FILE="autogen.args"
51 export CFLAGS
52 export LDFLAGS
54 libtoolize="libtoolize"
55 case $(uname -s) in
56 Darwin*)
57 libtoolize="glibtoolize"
60 esac
62 ###############################################################################
63 # Some helper functions
64 ###############################################################################
65 check () {
66 CMD=$1
68 printf "%s" "checking for ${CMD}... "
69 BIN=`which ${CMD} 2>/dev/null`
71 if [ x"${BIN}" = x"" ] ; then
72 echo "not found."
73 echo "${CMD} is required to build ${PACKAGE}!"
74 exit 1;
77 echo "${BIN}"
80 run_or_die () { # beotch
81 CMD=$1
82 shift
84 OUTPUT=`mktemp autogen-XXXXXX`
86 printf "running %s %s... " ${CMD} "$*"
87 ${CMD} ${@} >${OUTPUT} 2>&1
89 if [ $? != 0 ] ; then
90 echo "failed."
91 cat ${OUTPUT}
92 rm -f ${OUTPUT}
93 exit 1
94 else
95 echo "done."
96 cat ${OUTPUT}
98 rm -f ${OUTPUT}
102 cleanup () {
103 rm -f autogen-??????
104 echo
105 exit 2
108 ###############################################################################
109 # We really start here, yes, very sneaky!
110 ###############################################################################
111 trap cleanup 2
113 FIGLET=`which figlet 2> /dev/null`
114 if [ x"${FIGLET}" != x"" ] ; then
115 ${FIGLET} -f small ${PACKAGE}
116 echo "build system is being generated"
117 else
118 echo "autogenerating build system for '${PACKAGE}'"
121 ###############################################################################
122 # Look for our args file
123 ###############################################################################
124 printf "%s" "checking for ${ARGS_FILE}: "
125 if [ -f ${ARGS_FILE} ] ; then
126 echo "found."
127 printf "%s" "sourcing ${ARGS_FILE}: "
128 . "`dirname "$0"`"/${ARGS_FILE}
129 echo "done."
130 else
131 echo "not found."
134 ###############################################################################
135 # Check for our required helpers
136 ###############################################################################
137 check "$libtoolize"; LIBTOOLIZE=${BIN};
138 check "glib-gettextize"; GLIB_GETTEXTIZE=${BIN};
139 check "intltoolize"; INTLTOOLIZE=${BIN};
140 check "sed"; SED=${BIN};
141 check "aclocal"; ACLOCAL=${BIN};
142 check "autoheader"; AUTOHEADER=${BIN};
143 check "automake"; AUTOMAKE=${BIN};
144 check "autoconf"; AUTOCONF=${BIN};
146 ###############################################################################
147 # Run all of our helpers
148 ###############################################################################
149 run_or_die ${LIBTOOLIZE} ${LIBTOOLIZE_FLAGS:-"-c -f --automake"}
150 run_or_die ${GLIB_GETTEXTIZE} ${GLIB_GETTEXTIZE_FLAGS:-"--force --copy"}
151 run_or_die ${INTLTOOLIZE} ${INTLTOOLIZE_FLAGS:-"-c -f --automake"}
152 # This call to sed is needed to work around an annoying bug in intltool 0.40.6
153 # See http://developer.pidgin.im/ticket/9520 for details
154 run_or_die ${SED} -i.bak -e "s:'\^\$\$lang\$\$':\^\$\$lang\$\$:g" po/Makefile.in.in
155 run_or_die ${ACLOCAL} ${ACLOCAL_FLAGS:-"-I m4macros"}
156 run_or_die ${AUTOHEADER} ${AUTOHEADER_FLAGS}
157 run_or_die ${AUTOMAKE} ${AUTOMAKE_FLAGS:-"-a -c --gnu"}
158 run_or_die ${AUTOCONF} ${AUTOCONF_FLAGS}
160 ###############################################################################
161 # Run configure
162 ###############################################################################
163 echo "running ./configure ${CONFIGURE_FLAGS} $@"
164 ./configure ${CONFIGURE_FLAGS} $@