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

3 4
# This script does all the magic calls to automake/autoconf and
# friends that are needed to configure a git clone. 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.
11

12
ACLOCAL=${ACLOCAL-aclocal-1.11}
13 14
AUTOCONF=${AUTOCONF-autoconf}
AUTOHEADER=${AUTOHEADER-autoheader}
15
AUTOMAKE=${AUTOMAKE-automake-1.11}
16
LIBTOOLIZE=${LIBTOOLIZE-libtoolize}
17

Sven Neumann's avatar
Sven Neumann committed
18
AUTOCONF_REQUIRED_VERSION=2.54
19
AUTOMAKE_REQUIRED_VERSION=1.10.0
20
INTLTOOL_REQUIRED_VERSION=0.40.1
21
LIBTOOL_REQUIRED_VERSION=1.5
22
LIBTOOL_WIN32_REQUIRED_VERSION=2.2
23

24

25 26 27
PROJECT="GNU Image Manipulation Program"
TEST_TYPE=-d
FILE=plug-ins
28 29


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

35

36
check_version ()
37
{
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
    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)"
69
    else
70
	echo "Too old (version $VERSION_A)"
71 72 73 74
	DIE=1
    fi
}

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

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

83 84 85 86 87 88 89 90
OS=`uname -s`
case $OS in
    *YGWIN* | *INGW*)
	echo "Looks like Win32, you will need libtool $LIBTOOL_WIN32_REQUIRED_VERSION or newer."
	echo
	LIBTOOL_REQUIRED_VERSION=$LIBTOOL_WIN32_REQUIRED_VERSION
	;;
esac
91

Sven Neumann's avatar
Sven Neumann committed
92
echo -n "checking for libtool >= $LIBTOOL_REQUIRED_VERSION ... "
93 94
if ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=$LIBTOOLIZE
95 96
elif (glibtoolize --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=glibtoolize
Sven Neumann's avatar
Sven Neumann committed
97 98 99 100 101
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/"
102
    echo
103 104 105 106 107 108 109
    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
110 111
fi

112
# check if gtk-doc is explicitly disabled
113 114 115 116 117 118 119 120 121 122 123
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"
124
else
125 126 127 128 129 130 131 132 133 134 135 136 137 138
  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
139 140
fi

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

155

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

187 188 189 190 191 192
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

193

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

208

209 210 211 212 213 214 215 216
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/"
217
    echo
218 219
    DIE=1
fi
220

221
if test "$DIE" -eq 1; then
Sven Neumann's avatar
Sven Neumann committed
222 223 224 225
    echo
    echo "Please install/upgrade the missing tools and call me again."
    echo	
    exit 1
226 227
fi

Sven Neumann's avatar
Sven Neumann committed
228

229
test $TEST_TYPE $FILE || {
Sven Neumann's avatar
Sven Neumann committed
230 231 232 233
    echo
    echo "You must run this script in the top-level $PROJECT directory."
    echo
    exit 1
234 235
}

Sven Neumann's avatar
Sven Neumann committed
236

237
if test -z "$NOCONFIGURE"; then
238
    echo
239 240 241 242 243 244 245 246 247 248 249
    echo "I am going to run ./configure with the following arguments:"
    echo
    echo "  $AUTOGEN_CONFIGURE_ARGS $@"
    echo

    if test -z "$*"; then
        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
    fi
250 251
fi

252

253 254
if test -z "$ACLOCAL_FLAGS"; then

255
    acdir=`$ACLOCAL --print-ac-dir`
256
    m4list="glib-2.0.m4 glib-gettext.m4 gtk-2.0.m4 intltool.m4 pkg.m4"
Sven Neumann's avatar
Sven Neumann committed
257 258 259 260 261 262 263 264

    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."
265 266 267
            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
268 269 270
            echo
        fi
    done
271
fi
272

273
rm -rf autom4te.cache
274

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

282
$LIBTOOLIZE --force || exit $?
283 284 285 286 287 288 289 290 291 292 293 294

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
295

296
# optionally feature autoheader
297
($AUTOHEADER --version)  < /dev/null > /dev/null 2>&1 && $AUTOHEADER || exit 1
298

299
$AUTOMAKE --add-missing || exit $?
300
$AUTOCONF || exit $?
301

302
intltoolize --automake || exit $?
303

304

305
cd $ORIGDIR
306

307 308 309 310 311 312 313 314
if test -z "$NOCONFIGURE"; then
    $srcdir/configure $AUTOGEN_CONFIGURE_ARGS "$@"
    RC=$?
    if test $RC -ne 0; then
      echo
      echo "Configure failed or did not finish!"
      exit $RC
    fi
315

316 317 318
    echo
    echo "Now type 'make' to compile the $PROJECT."
fi