blob: af6cf342ff7d3a22148e22f0acf2b3b72c4ee420 [file] [log] [blame]
Werner Lembergb0db0fc2005-03-05 17:05:35 +00001#!/bin/sh
2
Werner Lemberg75859972019-02-23 10:07:09 +01003# Copyright (C) 2005-2019 by
Werner Lemberg60a04df2005-06-04 23:04:30 +00004# David Turner, Robert Wilhelm, and Werner Lemberg.
5#
6# This file is part of the FreeType project, and may only be used, modified,
7# and distributed under the terms of the FreeType project license,
8# LICENSE.TXT. By continuing to use, modify, or distribute this file you
9# indicate that you have read the license and understand and accept it
10# fully.
11
Werner Lembergb0db0fc2005-03-05 17:05:35 +000012run ()
13{
14 echo "running \`$*'"
15 eval $*
16
17 if test $? != 0 ; then
18 echo "error while running \`$*'"
19 exit 1
20 fi
21}
22
David Turner28534d62008-09-01 21:35:21 +000023get_major_version ()
24{
Werner Lembergc3263722009-01-06 21:00:47 +000025 echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g'
David Turner28534d62008-09-01 21:35:21 +000026}
27
28get_minor_version ()
29{
Werner Lembergc3263722009-01-06 21:00:47 +000030 echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'
David Turner28534d62008-09-01 21:35:21 +000031}
32
33get_patch_version ()
34{
Werner Lembergb2116512008-09-12 16:27:48 +000035 # tricky: some version numbers don't include a patch
36 # separated with a point, but something like 1.4-p6
Werner Lembergc3263722009-01-06 21:00:47 +000037 patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'`
Werner Lembergb2116512008-09-12 16:27:48 +000038 if test "$patch" = "$1"; then
Werner Lembergc3263722009-01-06 21:00:47 +000039 patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'`
Werner Lembergb2116512008-09-12 16:27:48 +000040 # if there isn't any patch number, default to 0
David Turner28534d62008-09-01 21:35:21 +000041 if test "$patch" = "$1"; then
Werner Lembergb2116512008-09-12 16:27:48 +000042 patch=0
David Turner28534d62008-09-01 21:35:21 +000043 fi
Werner Lembergb2116512008-09-12 16:27:48 +000044 fi
45 echo $patch
David Turner28534d62008-09-01 21:35:21 +000046}
47
48# $1: version to check
49# $2: minimum version
Werner Lembergb2116512008-09-12 16:27:48 +000050
David Turner28534d62008-09-01 21:35:21 +000051compare_to_minimum_version ()
52{
Werner Lembergb2116512008-09-12 16:27:48 +000053 MAJOR1=`get_major_version $1`
54 MAJOR2=`get_major_version $2`
55 if test $MAJOR1 -lt $MAJOR2; then
56 echo 0
57 return
Werner Lemberg4cd5fd42013-01-24 13:33:06 +010058 else
Werner Lembergb2116512008-09-12 16:27:48 +000059 if test $MAJOR1 -gt $MAJOR2; then
60 echo 1
David Turner28534d62008-09-01 21:35:21 +000061 return
David Turner28534d62008-09-01 21:35:21 +000062 fi
Werner Lembergb2116512008-09-12 16:27:48 +000063 fi
David Turner28534d62008-09-01 21:35:21 +000064
Werner Lembergb2116512008-09-12 16:27:48 +000065 MINOR1=`get_minor_version $1`
66 MINOR2=`get_minor_version $2`
67 if test $MINOR1 -lt $MINOR2; then
68 echo 0
69 return
Werner Lemberg4cd5fd42013-01-24 13:33:06 +010070 else
Werner Lembergb2116512008-09-12 16:27:48 +000071 if test $MINOR1 -gt $MINOR2; then
72 echo 1
David Turner28534d62008-09-01 21:35:21 +000073 return
David Turner28534d62008-09-01 21:35:21 +000074 fi
Werner Lembergb2116512008-09-12 16:27:48 +000075 fi
David Turner28534d62008-09-01 21:35:21 +000076
Werner Lembergb2116512008-09-12 16:27:48 +000077 PATCH1=`get_patch_version $1`
78 PATCH2=`get_patch_version $2`
79 if test $PATCH1 -lt $PATCH2; then
80 echo 0
81 else
82 echo 1
83 fi
David Turner28534d62008-09-01 21:35:21 +000084}
85
Werner Lembergb2116512008-09-12 16:27:48 +000086# check the version of a given tool against a minimum version number
David Turner28534d62008-09-01 21:35:21 +000087#
Werner Lembergb2116512008-09-12 16:27:48 +000088# $1: tool path
89# $2: tool usual name (e.g. `aclocal')
90# $3: tool variable (e.g. `ACLOCAL')
91# $4: minimum version to check against
92# $5: option field index used to extract the tool version from the
93# output of --version
94
David Turner28534d62008-09-01 21:35:21 +000095check_tool_version ()
96{
97 field=$5
suzuki toshiyaad6954a2010-02-13 02:25:04 +090098 # assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version"
David Turner28534d62008-09-01 21:35:21 +000099 if test "$field"x = x; then
suzuki toshiyaad6954a2010-02-13 02:25:04 +0900100 field=3 # default to 3 for all GNU autotools, after filtering enclosed string
David Turner28534d62008-09-01 21:35:21 +0000101 fi
suzuki toshiyaad6954a2010-02-13 02:25:04 +0900102 version=`$1 --version | head -1 | sed 's/([^)]*)/()/g' | cut -d ' ' -f $field`
David Turner28534d62008-09-01 21:35:21 +0000103 version_check=`compare_to_minimum_version $version $4`
104 if test "$version_check"x = 0x; then
Werner Lembergb2116512008-09-12 16:27:48 +0000105 echo "ERROR: Your version of the \`$2' tool is too old."
106 echo " Minimum version $4 is required (yours is version $version)."
107 echo " Please upgrade or use the $3 variable to point to a more recent one."
108 echo ""
109 exit 1
David Turner28534d62008-09-01 21:35:21 +0000110 fi
111}
112
Werner Lemberg4df5b262006-05-08 07:10:29 +0000113if test ! -f ./builds/unix/configure.raw; then
Werner Lembergc3263722009-01-06 21:00:47 +0000114 echo "You must be in the same directory as \`autogen.sh'."
115 echo "Bootstrapping doesn't work if srcdir != builddir."
116 exit 1
Werner Lembergb0db0fc2005-03-05 17:05:35 +0000117fi
118
David Turner28534d62008-09-01 21:35:21 +0000119# On MacOS X, the GNU libtool is named `glibtool'.
120HOSTOS=`uname`
suzuki toshiyac63c6f72011-06-19 22:54:40 +0900121if test "$LIBTOOLIZE"x != x; then
122 :
123elif test "$HOSTOS"x = Darwinx; then
David Turner28534d62008-09-01 21:35:21 +0000124 LIBTOOLIZE=glibtoolize
suzuki toshiyac63c6f72011-06-19 22:54:40 +0900125else
126 LIBTOOLIZE=libtoolize
David Turner28534d62008-09-01 21:35:21 +0000127fi
128
129if test "$ACLOCAL"x = x; then
130 ACLOCAL=aclocal
131fi
132
133if test "$AUTOCONF"x = x; then
134 AUTOCONF=autoconf
135fi
136
Werner Lembergb2116512008-09-12 16:27:48 +0000137check_tool_version $ACLOCAL aclocal ACLOCAL 1.10.1
David Turner28534d62008-09-01 21:35:21 +0000138check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4
Werner Lembergb2116512008-09-12 16:27:48 +0000139check_tool_version $AUTOCONF autoconf AUTOCONF 2.62
David Turner28534d62008-09-01 21:35:21 +0000140
Werner Lemberg4df5b262006-05-08 07:10:29 +0000141# This sets freetype_major, freetype_minor, and freetype_patch.
Werner Lemberg392cf222015-06-25 13:04:57 +0200142eval `sed -nf version.sed include/freetype/freetype.h`
Werner Lemberg4df5b262006-05-08 07:10:29 +0000143
144# We set freetype-patch to an empty value if it is zero.
145if test "$freetype_patch" = ".0"; then
146 freetype_patch=
147fi
148
Werner Lembergb0db0fc2005-03-05 17:05:35 +0000149cd builds/unix
150
Werner Lemberg4df5b262006-05-08 07:10:29 +0000151echo "generating \`configure.ac'"
152sed -e "s;@VERSION@;$freetype_major$freetype_minor$freetype_patch;" \
Werner Lembergc3263722009-01-06 21:00:47 +0000153 < configure.raw > configure.ac
Werner Lemberg4df5b262006-05-08 07:10:29 +0000154
Werner Lemberg1ea53e82005-04-13 18:12:36 +0000155run aclocal -I . --force
Werner Lembergb796adb2008-06-10 17:15:35 +0000156run $LIBTOOLIZE --force --copy --install
Werner Lemberg1ea53e82005-04-13 18:12:36 +0000157run autoconf --force
Werner Lembergb0db0fc2005-03-05 17:05:35 +0000158
Werner Lembergb0db0fc2005-03-05 17:05:35 +0000159chmod +x install-sh
160
161cd ../..
162
163chmod +x ./configure
164
165# EOF