autogen.sh 7.68 KB
Newer Older
Sven Neumann's avatar
Sven Neumann committed
1 2 3 4 5 6 7 8 9 10
#!/bin/sh 

# This script does all the magic calls to automake/autoconf and
# friends that are needed to configure a cvs checkout.  As described in
# the file HACKING you need a couple of extra tools to run this script
# successfully.
#
# If you are compiling from a released tarball you don't need these
# tools and you shouldn't use this script.  Just call ./configure
# directly.
Manish Singh's avatar
Manish Singh committed
11

12

13
PROJECT="The GIMP"
14 15 16
TEST_TYPE=-d
FILE=plug-ins

17
LIBTOOL_REQUIRED_VERSION=1.4
18
LIBTOOL_WIN32=1.5
Sven Neumann's avatar
Sven Neumann committed
19
AUTOCONF_REQUIRED_VERSION=2.54
Manish Singh's avatar
Manish Singh committed
20
AUTOMAKE_REQUIRED_VERSION=1.6
21
GLIB_REQUIRED_VERSION=2.2.0
Sven Neumann's avatar
Sven Neumann committed
22
INTLTOOL_REQUIRED_VERSION=0.17
Manish Singh's avatar
Manish Singh committed
23 24


Sven Neumann's avatar
Sven Neumann committed
25 26 27 28 29
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir

30

31
check_version ()
32 33 34 35 36 37 38 39 40
{
    if expr $1 \>= $2 > /dev/null; then
	echo "yes (version $1)"
    else
	echo "Too old (found version $1)!"
	DIE=1
    fi
}

Sven Neumann's avatar
Sven Neumann committed
41
echo
42 43 44
echo "I am testing that you have the required versions of libtool, autoconf," 
echo "automake, glib-gettextize and intltoolize. This test is not foolproof,"
echo "so if anything goes wrong, see the file HACKING for more information..."
Manish Singh's avatar
Manish Singh committed
45 46
echo

Sven Neumann's avatar
Sven Neumann committed
47 48
DIE=0

49 50 51

OS=`uname -s`
case $OS in 
52
    *YGWIN* | *INGW*)
53 54 55 56 57 58 59
	echo "Looks like Win32, you will need libtool $LIBTOOL_WIN32 or newer."
	echo
	LIBTOOL_REQUIRED_VERSION=$LIBTOOL_WIN32
	;;
esac


Sven Neumann's avatar
Sven Neumann committed
60
echo -n "checking for libtool >= $LIBTOOL_REQUIRED_VERSION ... "
61
if (libtoolize --version) < /dev/null > /dev/null 2>&1; then
62 63 64
   LIBTOOLIZE=libtoolize
elif (glibtoolize --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=glibtoolize
Sven Neumann's avatar
Sven Neumann committed
65 66 67 68 69
else
    echo
    echo "  You must have libtool installed to compile $PROJECT."
    echo "  Install the appropriate package for your distribution,"
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
70
    echo
71 72 73 74 75 76 77
    DIE=1
fi

if test x$LIBTOOLIZE != x; then
    VER=`$LIBTOOLIZE --version \
         | grep libtool | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"`
    check_version $VER $LIBTOOL_REQUIRED_VERSION
78 79
fi

80

Sven Neumann's avatar
Sven Neumann committed
81 82 83 84
echo -n "checking for autoconf >= $AUTOCONF_REQUIRED_VERSION ... "
if (autoconf --version) < /dev/null > /dev/null 2>&1; then
    VER=`autoconf --version \
         | grep -iw autoconf | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"`
85
    check_version $VER $AUTOCONF_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
86 87 88 89
else
    echo
    echo "  You must have autoconf installed to compile $PROJECT."
    echo "  Download the appropriate package for your distribution,"
Sven Neumann's avatar
Sven Neumann committed
90
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/autoconf/"
91
    echo
Sven Neumann's avatar
Sven Neumann committed
92
    DIE=1;
Manish Singh's avatar
Manish Singh committed
93 94
fi

95

Sven Neumann's avatar
Sven Neumann committed
96
echo -n "checking for automake >= $AUTOMAKE_REQUIRED_VERSION ... "
97
if (automake-1.7 --version) < /dev/null > /dev/null 2>&1; then
98 99
   AUTOMAKE=automake-1.7
   ACLOCAL=aclocal-1.7
100 101 102
elif (automake-1.8 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.8
   ACLOCAL=aclocal-1.8
103
   AUTOMAKE_REQUIRED_VERSION=1.8.3
104 105 106
elif (automake-1.9 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.9
   ACLOCAL=aclocal-1.9
107 108 109
elif (automake-1.6 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.6
   ACLOCAL=aclocal-1.6
Sven Neumann's avatar
Sven Neumann committed
110 111
else
    echo
Sven Neumann's avatar
Sven Neumann committed
112 113 114
    echo "  You must have automake 1.6 or newer installed to compile $PROJECT."
    echo "  Download the appropriate package for your distribution,"
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/automake/"
115
    echo
Sven Neumann's avatar
Sven Neumann committed
116
    DIE=1
Manish Singh's avatar
Manish Singh committed
117 118
fi

119 120 121 122 123 124
if test x$AUTOMAKE != x; then
    VER=`$AUTOMAKE --version \
         | grep automake | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"`
    check_version $VER $AUTOMAKE_REQUIRED_VERSION
fi

125

Sven Neumann's avatar
Sven Neumann committed
126 127 128 129
echo -n "checking for glib-gettextize >= $GLIB_REQUIRED_VERSION ... "
if (glib-gettextize --version) < /dev/null > /dev/null 2>&1; then
    VER=`glib-gettextize --version \
         | grep glib-gettextize | sed "s/.* \([0-9.]*\)/\1/"`
130
    check_version $VER $GLIB_REQUIRED_VERSION
131
else
Sven Neumann's avatar
Sven Neumann committed
132 133 134 135
    echo
    echo "  You must have glib-gettextize installed to compile $PROJECT."
    echo "  glib-gettextize is part of glib-2.0, so you should already"
    echo "  have it. Make sure it is in your PATH."
136
    echo
Sven Neumann's avatar
Sven Neumann committed
137
    DIE=1
138 139
fi

140

Sven Neumann's avatar
Sven Neumann committed
141 142 143 144
echo -n "checking for intltool >= $INTLTOOL_REQUIRED_VERSION ... "
if (intltoolize --version) < /dev/null > /dev/null 2>&1; then
    VER=`intltoolize --version \
         | grep intltoolize | sed "s/.* \([0-9.]*\)/\1/"`
145
    check_version $VER $INTLTOOL_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
146 147
else
    echo
148 149 150
    echo "  You must have intltool installed to compile $PROJECT."
    echo "  Get the latest version from"
    echo "  ftp://ftp.gnome.org/pub/GNOME/sources/intltool/"
151
    echo
Sven Neumann's avatar
Sven Neumann committed
152
    DIE=1
153
fi
Sven Neumann's avatar
Sven Neumann committed
154

155 156 157 158 159 160 161 162 163 164 165
# Special test for problematic versions of intltool.  Details at:
#   http://bugzilla.gnome.org/show_bug.cgi?id=137502
# Print a warning message, but do not exit.
INTLTOOL_BUG_MIN_VERSION=0.28
INTLTOOL_BUG_MAX_VERSION=0.31
echo -n "checking for intltool < $INTLTOOL_BUG_MIN_VERSION or > $INTLTOOL_BUG_MAX_VERSION ... "
if (intltoolize --version) < /dev/null > /dev/null 2>&1; then
    VER=`intltoolize --version \
         | grep intltoolize | sed "s/.* \([0-9.]*\)/\1/"`
    if expr $VER \>= $INTLTOOL_BUG_MIN_VERSION > /dev/null; then
        if expr $VER \<= $INTLTOOL_BUG_MAX_VERSION > /dev/null; then
166
            echo "no"
167 168 169 170 171
            echo
            echo "  Versions of intltool between 0.28 and 0.31 are known to"
            echo "  generate incorrect XML output.  Please consider using an"
            echo "  earlier version of intltool in order to avoid these"
            echo "  problems until a newer version of intltool is released."
172 173
	    echo
	    echo "  This problem is harmless, you may continue the build." 
174
	    echo
175 176 177 178 179 180 181 182 183 184
        else
            echo "yes"
        fi
    else
        echo "yes"
    fi
else
    echo "not found"
fi

185

186 187 188 189 190 191 192 193
echo -n "checking for xsltproc ... "
if (xsltproc --version) < /dev/null > /dev/null 2>&1; then
    echo "yes"
else
    echo
    echo "  You must have xsltproc installed to compile $PROJECT."
    echo "  Get the latest version from"
    echo "  ftp://ftp.gnome.org/pub/GNOME/sources/libxslt/"
194
    echo
195 196
    DIE=1
fi
197

Manish Singh's avatar
Manish Singh committed
198
if test "$DIE" -eq 1; then
Sven Neumann's avatar
Sven Neumann committed
199 200 201 202
    echo
    echo "Please install/upgrade the missing tools and call me again."
    echo	
    exit 1
Manish Singh's avatar
Manish Singh committed
203 204
fi

Sven Neumann's avatar
Sven Neumann committed
205

206
test $TEST_TYPE $FILE || {
Sven Neumann's avatar
Sven Neumann committed
207 208 209 210
    echo
    echo "You must run this script in the top-level $PROJECT directory."
    echo
    exit 1
Manish Singh's avatar
Manish Singh committed
211 212
}

Sven Neumann's avatar
Sven Neumann committed
213

214 215 216 217 218 219
echo
echo "I am going to run ./configure with the following arguments:"
echo
echo "  --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS $@"
echo

Manish Singh's avatar
Manish Singh committed
220
if test -z "$*"; then
221 222 223 224
    echo "If you wish to pass additional arguments, please specify them "
    echo "on the $0 command line or set the AUTOGEN_CONFIGURE_ARGS "
    echo "environment variable."
    echo
Manish Singh's avatar
Manish Singh committed
225 226
fi

227

228 229
if test -z "$ACLOCAL_FLAGS"; then

230
    acdir=`$ACLOCAL --print-ac-dir`
Sven Neumann's avatar
Sven Neumann committed
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
    m4list="glib-2.0.m4 glib-gettext.m4 gtk-2.0.m4 intltool.m4 pkg.m4"

    for file in $m4list
    do
	if [ ! -f "$acdir/$file" ]; then
	    echo
	    echo "WARNING: aclocal's directory is $acdir, but..."
            echo "         no file $acdir/$file"
            echo "         You may see fatal macro warnings below."
            echo "         If these files are installed in /some/dir, set the ACLOCAL_FLAGS "
            echo "         environment variable to \"-I /some/dir\", or install"
            echo "         $acdir/$file."
            echo
        fi
    done
246
fi
247

248
rm -rf autom4te.cache
249

250 251 252
$ACLOCAL $ACLOCAL_FLAGS
RC=$?
if test $RC -ne 0; then
Manish Singh's avatar
emptied  
Manish Singh committed
253
   echo "$ACLOCAL gave errors. Please fix the error conditions and try again."
254
   exit $RC
Manish Singh's avatar
emptied  
Manish Singh committed
255
fi
Manish Singh's avatar
Manish Singh committed
256

257
$LIBTOOLIZE --force || exit $?
258

259
# optionally feature autoheader
260
(autoheader --version)  < /dev/null > /dev/null 2>&1 && autoheader || exit 1
Manish Singh's avatar
Manish Singh committed
261

262 263
$AUTOMAKE --add-missing || exit $?
autoconf || exit $?
Manish Singh's avatar
Manish Singh committed
264

265 266
glib-gettextize --force || exit $?
intltoolize --force --automake || exit $?
267

268

Manish Singh's avatar
Manish Singh committed
269
cd $ORIGDIR
270

271 272 273
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@"
RC=$?
if test $RC -ne 0; then
274 275
  echo
  echo "Configure failed or did not finish!"
276
  exit $RC
277
fi
Manish Singh's avatar
Manish Singh committed
278

279 280
echo
echo "Now type 'make' to compile $PROJECT."