autogen.sh 7.51 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
Sven Neumann's avatar
Sven Neumann committed
62 63
    VER=`libtoolize --version \
         | grep libtool | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"`
64
    check_version $VER $LIBTOOL_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
65 66 67 68 69 70
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/"
    DIE=1;
71 72
fi

Sven Neumann's avatar
Sven Neumann committed
73 74 75 76
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/"`
77
    check_version $VER $AUTOCONF_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
78 79 80 81
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
82
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/autoconf/"
Sven Neumann's avatar
Sven Neumann committed
83
    DIE=1;
Manish Singh's avatar
Manish Singh committed
84 85
fi

Sven Neumann's avatar
Sven Neumann committed
86
echo -n "checking for automake >= $AUTOMAKE_REQUIRED_VERSION ... "
87
if (automake-1.7 --version) < /dev/null > /dev/null 2>&1; then
88 89
   AUTOMAKE=automake-1.7
   ACLOCAL=aclocal-1.7
90 91 92
elif (automake-1.8 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.8
   ACLOCAL=aclocal-1.8
93 94 95
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
96 97
else
    echo
Sven Neumann's avatar
Sven Neumann committed
98 99 100
    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/"
Sven Neumann's avatar
Sven Neumann committed
101
    DIE=1
Manish Singh's avatar
Manish Singh committed
102 103
fi

104 105 106 107 108 109
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

Sven Neumann's avatar
Sven Neumann committed
110 111 112 113
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/"`
114
    check_version $VER $GLIB_REQUIRED_VERSION
115
else
Sven Neumann's avatar
Sven Neumann committed
116 117 118 119 120
    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."
    DIE=1
121 122
fi

Sven Neumann's avatar
Sven Neumann committed
123 124 125 126
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/"`
127
    check_version $VER $INTLTOOL_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
128 129
else
    echo
130 131 132
    echo "  You must have intltool installed to compile $PROJECT."
    echo "  Get the latest version from"
    echo "  ftp://ftp.gnome.org/pub/GNOME/sources/intltool/"
Sven Neumann's avatar
Sven Neumann committed
133
    DIE=1
134
fi
Sven Neumann's avatar
Sven Neumann committed
135

136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
# 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
            echo "no (found version $VER)"
            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."
153 154
	    echo
	    echo "  This problem is harmless, you may continue the build." 
155 156 157 158 159 160 161 162 163 164
        else
            echo "yes"
        fi
    else
        echo "yes"
    fi
else
    echo "not found"
fi

165 166 167 168 169 170 171 172 173 174
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/"
    DIE=1
fi
175

Manish Singh's avatar
Manish Singh committed
176
if test "$DIE" -eq 1; then
Sven Neumann's avatar
Sven Neumann committed
177 178 179 180
    echo
    echo "Please install/upgrade the missing tools and call me again."
    echo	
    exit 1
Manish Singh's avatar
Manish Singh committed
181 182
fi

Sven Neumann's avatar
Sven Neumann committed
183

184
test $TEST_TYPE $FILE || {
Sven Neumann's avatar
Sven Neumann committed
185 186 187 188
    echo
    echo "You must run this script in the top-level $PROJECT directory."
    echo
    exit 1
Manish Singh's avatar
Manish Singh committed
189 190
}

Sven Neumann's avatar
Sven Neumann committed
191

Manish Singh's avatar
Manish Singh committed
192
if test -z "$*"; then
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
    if test -z "$AUTOGEN_CONFIGURE_ARGS"; then
	echo
	echo "I am going to run ./configure with no arguments - if you wish "
	echo "to pass any to it, please specify them on the $0 command line "
	echo "or set the AUTOGEN_CONFIGURE_ARGS environment variable."
	echo
    else
	echo
	echo "I am going to run ./configure with the following arguments:"
	echo
	echo "  $AUTOGEN_CONFIGURE_ARGS"
	echo
	echo "If you wish to pass additional arguments, please specify them "
	echo "on the $0 command line."
	echo
    fi
Manish Singh's avatar
Manish Singh committed
209 210
fi

211 212
if test -z "$ACLOCAL_FLAGS"; then

213
    acdir=`$ACLOCAL --print-ac-dir`
Sven Neumann's avatar
Sven Neumann committed
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
    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
229
fi
230

231 232 233
$ACLOCAL $ACLOCAL_FLAGS
RC=$?
if test $RC -ne 0; then
Manish Singh's avatar
emptied  
Manish Singh committed
234
   echo "$ACLOCAL gave errors. Please fix the error conditions and try again."
235
   exit $RC
Manish Singh's avatar
emptied  
Manish Singh committed
236
fi
Manish Singh's avatar
Manish Singh committed
237

238
libtoolize --force || exit $?
239

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

243 244
$AUTOMAKE --add-missing || exit $?
autoconf || exit $?
Manish Singh's avatar
Manish Singh committed
245

246 247
glib-gettextize --copy --force || exit $?
intltoolize --copy --force --automake || exit $?
248

Manish Singh's avatar
Manish Singh committed
249
cd $ORIGDIR
250

251 252 253
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@"
RC=$?
if test $RC -ne 0; then
254 255
  echo
  echo "Configure failed or did not finish!"
256
  exit $RC
257
fi
Manish Singh's avatar
Manish Singh committed
258

259 260
echo
echo "Now type 'make' to compile $PROJECT."