autogen.sh 7.96 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 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.
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.9.6
20
INTLTOOL_REQUIRED_VERSION=0.40.1
21
LIBTOOL_REQUIRED_VERSION=1.5
22

23

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


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

34

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

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

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

82

Sven Neumann's avatar
Sven Neumann committed
83
echo -n "checking for libtool >= $LIBTOOL_REQUIRED_VERSION ... "
84 85
if ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=$LIBTOOLIZE
86 87
elif (glibtoolize --version) < /dev/null > /dev/null 2>&1; then
   LIBTOOLIZE=glibtoolize
Sven Neumann's avatar
Sven Neumann committed
88 89 90 91 92
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/"
93
    echo
94 95 96 97 98 99 100
    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
101 102
fi

103 104 105 106 107 108 109 110 111 112 113 114
# 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"
115
else
116 117 118 119 120 121 122 123 124 125 126 127 128 129
  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
130 131
fi

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

146

Sven Neumann's avatar
Sven Neumann committed
147
echo -n "checking for automake >= $AUTOMAKE_REQUIRED_VERSION ... "
148 149 150
if ($AUTOMAKE --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=$AUTOMAKE
   ACLOCAL=$ACLOCAL
Martin Nordholts's avatar
Martin Nordholts committed
151 152 153
elif (automake-1.11 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.11
   ACLOCAL=aclocal-1.11
Sven Neumann's avatar
Sven Neumann committed
154 155 156
elif (automake-1.10 --version) < /dev/null > /dev/null 2>&1; then
   AUTOMAKE=automake-1.10
   ACLOCAL=aclocal-1.10
157
elif (automake-1.9 --version) < /dev/null > /dev/null 2>&1; then
158 159
   AUTOMAKE=automake-1.9
   ACLOCAL=aclocal-1.9
Sven Neumann's avatar
Sven Neumann committed
160 161
else
    echo
162
    echo "  You must have automake $AUTOMAKE_REQUIRED_VERSION or newer installed to compile $PROJECT."
163 164
    echo "  Download the appropriate package for your distribution,"
    echo "  or get the source tarball at ftp://ftp.gnu.org/pub/gnu/automake/"
165
    echo
Sven Neumann's avatar
Sven Neumann committed
166
    DIE=1
Manish Singh's avatar
Manish Singh committed
167 168
fi

169 170 171 172 173 174
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

175

Sven Neumann's avatar
Sven Neumann committed
176 177 178 179
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/"`
180
    check_version $VER $INTLTOOL_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
181 182
else
    echo
183 184 185
    echo "  You must have intltool installed to compile $PROJECT."
    echo "  Get the latest version from"
    echo "  ftp://ftp.gnome.org/pub/GNOME/sources/intltool/"
186
    echo
Sven Neumann's avatar
Sven Neumann committed
187
    DIE=1
188
fi
Sven Neumann's avatar
Sven Neumann committed
189

190

191 192 193 194 195 196 197 198
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/"
199
    echo
200 201
    DIE=1
fi
202

Manish Singh's avatar
Manish Singh committed
203
if test "$DIE" -eq 1; then
Sven Neumann's avatar
Sven Neumann committed
204 205 206 207
    echo
    echo "Please install/upgrade the missing tools and call me again."
    echo	
    exit 1
Manish Singh's avatar
Manish Singh committed
208 209
fi

Sven Neumann's avatar
Sven Neumann committed
210

211
test $TEST_TYPE $FILE || {
Sven Neumann's avatar
Sven Neumann committed
212 213 214 215
    echo
    echo "You must run this script in the top-level $PROJECT directory."
    echo
    exit 1
Manish Singh's avatar
Manish Singh committed
216 217
}

Sven Neumann's avatar
Sven Neumann committed
218

219 220 221 222 223 224
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
225
if test -z "$*"; then
226 227 228 229
    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
230 231
fi

232

233 234
if test -z "$ACLOCAL_FLAGS"; then

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

    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."
245 246 247
            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
248 249 250
            echo
        fi
    done
251
fi
252

253
rm -rf autom4te.cache
254

255 256 257
$ACLOCAL $ACLOCAL_FLAGS
RC=$?
if test $RC -ne 0; then
Manish Singh's avatar
Manish Singh committed
258
   echo "$ACLOCAL gave errors. Please fix the error conditions and try again."
259
   exit $RC
Manish Singh's avatar
Manish Singh committed
260
fi
Manish Singh's avatar
Manish Singh committed
261

262
$LIBTOOLIZE --force || exit $?
263 264 265 266 267 268 269 270 271 272 273 274

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
275

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

279
$AUTOMAKE --add-missing || exit $?
280
$AUTOCONF || exit $?
Manish Singh's avatar
Manish Singh committed
281

282
intltoolize --automake || exit $?
283

284

Manish Singh's avatar
Manish Singh committed
285
cd $ORIGDIR
286

287 288 289
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@"
RC=$?
if test $RC -ne 0; then
290 291
  echo
  echo "Configure failed or did not finish!"
292
  exit $RC
293
fi
Manish Singh's avatar
Manish Singh committed
294

295
echo
296
echo "Now type 'make' to compile the $PROJECT."