autogen.sh 8.6 KB
Newer Older
Sven Neumann's avatar
Sven Neumann committed
1 2
#!/bin/sh 

3 4
# This script does all the magic calls to automake/autoconf and friends
# that are needed to configure a Subversion checkout.  As described in
Sven Neumann's avatar
Sven Neumann committed
5 6 7 8 9 10
# 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
ACLOCAL=${ACLOCAL-aclocal-1.9}
13 14 15 16
AUTOCONF=${AUTOCONF-autoconf}
AUTOHEADER=${AUTOHEADER-autoheader}
AUTOMAKE=${AUTOMAKE-automake-1.9}
LIBTOOLIZE=${LIBTOOLIZE-libtoolize}
17

Sven Neumann's avatar
Sven Neumann committed
18
AUTOCONF_REQUIRED_VERSION=2.54
19
AUTOMAKE_REQUIRED_VERSION=1.8.3
20
GLIB_REQUIRED_VERSION=2.2.0
21
INTLTOOL_REQUIRED_VERSION=0.31
22 23 24
LIBTOOL_REQUIRED_VERSION=1.4
LIBTOOL_WIN32=1.5

25

26 27 28
PROJECT="GNU Image Manipulation Program"
TEST_TYPE=-d
FILE=plug-ins
Manish Singh's avatar
Manish Singh committed
29 30


Sven Neumann's avatar
Sven Neumann committed
31 32 33 34 35
srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
ORIGDIR=`pwd`
cd $srcdir

36

37
check_version ()
38
{
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
    VERSION_A=$1
    VERSION_B=$2

    save_ifs="$IFS"
    IFS=.
    set dummy $VERSION_A 0 0 0
    MAJOR_A=$2
    MINOR_A=$3
    MICRO_A=$4
    set dummy $VERSION_B 0 0 0
    MAJOR_B=$2
    MINOR_B=$3
    MICRO_B=$4
    IFS="$save_ifs"

    if expr "$MAJOR_A" = "$MAJOR_B" > /dev/null; then
        if expr "$MINOR_A" \> "$MINOR_B" > /dev/null; then
           echo "yes (version $VERSION_A)"
        elif expr "$MINOR_A" = "$MINOR_B" > /dev/null; then
            if expr "$MICRO_A" \>= "$MICRO_B" > /dev/null; then
               echo "yes (version $VERSION_A)"
            else
                echo "Too old (version $VERSION_A)"
                DIE=1
            fi
        else
            echo "Too old (version $VERSION_A)"
            DIE=1
        fi
    elif expr "$MAJOR_A" \> "$MAJOR_B" > /dev/null; then
	echo "Major version might be too new ($VERSION_A)"
70
    else
71
	echo "Too old (version $VERSION_A)"
72 73 74 75
	DIE=1
    fi
}

Sven Neumann's avatar
Sven Neumann committed
76
echo
77
echo "I am testing that you have the tools required to build the"
78
echo "$PROJECT from Subversion. This test is not foolproof,"
79
echo "so if anything goes wrong, see the file HACKING for more information..."
Manish Singh's avatar
Manish Singh committed
80 81
echo

Sven Neumann's avatar
Sven Neumann committed
82 83
DIE=0

84 85 86

OS=`uname -s`
case $OS in 
87
    *YGWIN* | *INGW*)
88 89 90 91 92 93 94
	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
95
echo -n "checking for libtool >= $LIBTOOL_REQUIRED_VERSION ... "
96 97
if ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=$LIBTOOLIZE
98 99
elif (glibtoolize --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=glibtoolize
Sven Neumann's avatar
Sven Neumann committed
100 101 102 103 104
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/"
105
    echo
106 107 108 109 110 111 112
    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
113 114
fi

115 116 117 118 119 120 121 122 123 124 125 126
# check if gtk-doc is explicitely disabled
for ag_option in $AUTOGEN_CONFIGURE_ARGS $@
do
  case $ag_option in
    -disable-gtk-doc | --disable-gtk-doc)
    enable_gtk_doc=no
  ;;
  esac
done

if test x$enable_gtk_doc = xno; then
  echo "skipping test for gtkdocize"
127
else
128 129 130 131 132 133 134 135 136 137 138 139 140 141
  echo -n "checking for gtkdocize ... "
  if (gtkdocize --version) < /dev/null > /dev/null 2>&1; then
      echo "yes"
  else
      echo
      echo "  You must have gtk-doc installed to compile $PROJECT."
      echo "  Install the appropriate package for your distribution,"
      echo "  or get the source tarball at"
      echo "  http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/"
      echo "  You can also use the option --disable-gtk-doc to skip"
      echo "  this test but then you will not be able to generate a"
      echo "  configure script that can build the API documentation."
      DIE=1
  fi
142 143
fi

Sven Neumann's avatar
Sven Neumann committed
144
echo -n "checking for autoconf >= $AUTOCONF_REQUIRED_VERSION ... "
145
if ($AUTOCONF --version) < /dev/null > /dev/null 2>&1; then
146
    VER=`$AUTOCONF --version | head -n 1 \
Sven Neumann's avatar
Sven Neumann committed
147
         | grep -iw autoconf | sed "s/.* \([0-9.]*\)[-a-z0-9]*$/\1/"`
148
    check_version $VER $AUTOCONF_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
149 150 151 152
else
    echo
    echo "  You must have autoconf installed to compile $PROJECT."
    echo "  Download the appropriate package for your distribution,"
153
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/autoconf/"
154
    echo
Sven Neumann's avatar
Sven Neumann committed
155
    DIE=1;
Manish Singh's avatar
Manish Singh committed
156 157
fi

158

Sven Neumann's avatar
Sven Neumann committed
159
echo -n "checking for automake >= $AUTOMAKE_REQUIRED_VERSION ... "
160 161 162 163
if ($AUTOMAKE --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=$AUTOMAKE
   ACLOCAL=$ACLOCAL
elif (automake-1.9 --version) < /dev/null > /dev/null 2>&1; then
164 165
   AUTOMAKE=automake-1.9
   ACLOCAL=aclocal-1.9
166 167 168
elif (automake-1.8 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.8
   ACLOCAL=aclocal-1.8
Sven Neumann's avatar
Sven Neumann committed
169 170
else
    echo
171
    echo "  You must have automake $AUTOMAKE_REQUIRED_VERSION or newer installed to compile $PROJECT."
172 173
    echo "  Download the appropriate package for your distribution,"
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/automake/"
174
    echo
Sven Neumann's avatar
Sven Neumann committed
175
    DIE=1
Manish Singh's avatar
Manish Singh committed
176 177
fi

178 179 180 181 182 183
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

184

185
echo -n "checking for glib-gettextize ... "
Sven Neumann's avatar
Sven Neumann committed
186
if (glib-gettextize --version) < /dev/null > /dev/null 2>&1; then
187 188 189
    VER=`glib-gettextize --version \
         | grep glib-gettextize | sed "s/.* \([0-9.]*\)/\1/"`
    check_version $VER $GLIB_REQUIRED_VERSION
190
else
Sven Neumann's avatar
Sven Neumann committed
191 192 193 194
    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."
195
    echo
Sven Neumann's avatar
Sven Neumann committed
196
    DIE=1
197 198
fi

199

Sven Neumann's avatar
Sven Neumann committed
200 201 202 203
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/"`
204
    check_version $VER $INTLTOOL_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
205 206
else
    echo
207 208 209
    echo "  You must have intltool installed to compile $PROJECT."
    echo "  Get the latest version from"
    echo "  ftp://ftp.gnome.org/pub/GNOME/sources/intltool/"
210
    echo
Sven Neumann's avatar
Sven Neumann committed
211
    DIE=1
212
fi
Sven Neumann's avatar
Sven Neumann committed
213

214

215 216 217 218 219 220 221 222
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/"
223
    echo
224 225
    DIE=1
fi
226

Manish Singh's avatar
Manish Singh committed
227
if test "$DIE" -eq 1; then
Sven Neumann's avatar
Sven Neumann committed
228 229 230 231
    echo
    echo "Please install/upgrade the missing tools and call me again."
    echo	
    exit 1
Manish Singh's avatar
Manish Singh committed
232 233
fi

Sven Neumann's avatar
Sven Neumann committed
234

235
test $TEST_TYPE $FILE || {
Sven Neumann's avatar
Sven Neumann committed
236 237 238 239
    echo
    echo "You must run this script in the top-level $PROJECT directory."
    echo
    exit 1
Manish Singh's avatar
Manish Singh committed
240 241
}

Sven Neumann's avatar
Sven Neumann committed
242

243 244 245 246 247 248
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
249
if test -z "$*"; then
250 251 252 253
    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
254 255
fi

256

257 258
if test -z "$ACLOCAL_FLAGS"; then

259
    acdir=`$ACLOCAL --print-ac-dir`
260
    m4list="glib-2.0.m4 glib-gettext.m4 gtk-2.0.m4 intltool.m4 pkg.m4"
Sven Neumann's avatar
Sven Neumann committed
261 262 263 264 265 266 267 268

    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."
269 270 271
            echo "         If these files are installed in /some/dir, set the "
            echo "         ACLOCAL_FLAGS environment variable to \"-I /some/dir\""
            echo "         or install $acdir/$file."
Sven Neumann's avatar
Sven Neumann committed
272 273 274
            echo
        fi
    done
275
fi
276

277
rm -rf autom4te.cache
278

279 280 281
$ACLOCAL $ACLOCAL_FLAGS
RC=$?
if test $RC -ne 0; then
Manish Singh's avatar
Manish Singh committed
282
   echo "$ACLOCAL gave errors. Please fix the error conditions and try again."
283
   exit $RC
Manish Singh's avatar
Manish Singh committed
284
fi
Manish Singh's avatar
Manish Singh committed
285

286
$LIBTOOLIZE --force || exit $?
287 288 289 290 291 292 293 294 295 296 297 298

if test x$enable_gtk_doc = xno; then
    if test -f gtk-doc.make; then :; else
       echo "EXTRA_DIST = missing-gtk-doc" > gtk-doc.make
    fi
    echo "WARNING: You have disabled gtk-doc."
    echo "         As a result, you will not be able to generate the API"
    echo "         documentation and 'make dist' will not work."
    echo
else
    gtkdocize || exit $?
fi
299

300
# optionally feature autoheader
301
($AUTOHEADER --version)  < /dev/null > /dev/null 2>&1 && $AUTOHEADER || exit 1
Manish Singh's avatar
Manish Singh committed
302

303
$AUTOMAKE --add-missing || exit $?
304
$AUTOCONF || exit $?
Manish Singh's avatar
Manish Singh committed
305

306 307
glib-gettextize --force || exit $?
intltoolize --force --automake || exit $?
308

309

Manish Singh's avatar
Manish Singh committed
310
cd $ORIGDIR
311

312 313 314
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@"
RC=$?
if test $RC -ne 0; then
315 316
  echo
  echo "Configure failed or did not finish!"
317
  exit $RC
318
fi
Manish Singh's avatar
Manish Singh committed
319

320
echo
321
echo "Now type 'make' to compile the $PROJECT."