autogen.sh 8.59 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
AUTOMAKE_RECOMMENDED_VERSION=1.16
13

Sven Neumann's avatar
Sven Neumann committed
14
AUTOCONF_REQUIRED_VERSION=2.54
15
AUTOMAKE_REQUIRED_VERSION=1.13.0
16
INTLTOOL_REQUIRED_VERSION=0.40.1
17
LIBTOOL_REQUIRED_VERSION=1.5
18
LIBTOOL_WIN32_REQUIRED_VERSION=2.2
19

20 21 22 23 24
ACLOCAL=${ACLOCAL-aclocal-${AUTOMAKE_RECOMMENDED_VERSION}}
AUTOCONF=${AUTOCONF-autoconf}
AUTOHEADER=${AUTOHEADER-autoheader}
AUTOMAKE=${AUTOMAKE-automake-${AUTOMAKE_RECOMMENDED_VERSION}}
LIBTOOLIZE=${LIBTOOLIZE-libtoolize}
25

26 27 28
PROJECT="GNU Image Manipulation Program"
TEST_TYPE=-d
FILE=plug-ins
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 git. 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 87 88 89 90 91
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
92

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

113
# check if gtk-doc is explicitly disabled
114 115 116 117 118 119 120 121 122 123 124
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"
125
else
126
  printf "checking for gtkdocize ... "
127 128 129 130 131 132 133
  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"
134
      echo "  https://ftp.gnome.org/pub/GNOME/sources/gtk-doc/"
135 136 137 138 139
      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
140 141
fi

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

156

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

185 186 187 188 189 190
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

191

192
printf "checking for intltool >= $INTLTOOL_REQUIRED_VERSION ... "
Sven Neumann's avatar
Sven Neumann committed
193 194 195
if (intltoolize --version) < /dev/null > /dev/null 2>&1; then
    VER=`intltoolize --version \
         | grep intltoolize | sed "s/.* \([0-9.]*\)/\1/"`
196
    check_version $VER $INTLTOOL_REQUIRED_VERSION
Sven Neumann's avatar
Sven Neumann committed
197 198
else
    echo
199 200 201
    echo "  You must have intltool installed to compile $PROJECT."
    echo "  Get the latest version from"
    echo "  ftp://ftp.gnome.org/pub/GNOME/sources/intltool/"
202
    echo
Sven Neumann's avatar
Sven Neumann committed
203
    DIE=1
204
fi
Sven Neumann's avatar
Sven Neumann committed
205

206

207
printf "checking for xsltproc ... "
208 209 210 211 212 213 214
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/"
215
    echo
216 217
    DIE=1
fi
218

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

Sven Neumann's avatar
Sven Neumann committed
226

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

Sven Neumann's avatar
Sven Neumann committed
234

235
if test -z "$NOCONFIGURE"; then
236
    echo
237 238 239 240 241 242 243 244 245 246 247
    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
248 249
fi

250

251 252
if test -z "$ACLOCAL_FLAGS"; then

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

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

271
rm -rf autom4te.cache
272

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

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

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
293

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

297
$AUTOMAKE --add-missing || exit $?
298
$AUTOCONF || exit $?
299

300
intltoolize --automake || exit $?
301

302

303
cd $ORIGDIR
304

305 306 307 308 309 310 311 312
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
313

314 315 316
    echo
    echo "Now type 'make' to compile the $PROJECT."
fi