• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2
3# Copyright (C) 2005-2022 by
4# 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
12run ()
13{
14  echo "running \`$*'"
15  eval $*
16
17  if test $? != 0 ; then
18    echo "error while running \`$*'"
19    exit 1
20  fi
21}
22
23get_major_version ()
24{
25  echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g'
26}
27
28get_minor_version ()
29{
30  echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'
31}
32
33get_patch_version ()
34{
35  # tricky: some version numbers don't include a patch
36  # separated with a point, but something like 1.4-p6
37  patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'`
38  if test "$patch" = "$1"; then
39    patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'`
40    # if there isn't any patch number, default to 0
41    if test "$patch" = "$1"; then
42      patch=0
43    fi
44  fi
45  echo $patch
46}
47
48# $1: version to check
49# $2: minimum version
50
51compare_to_minimum_version ()
52{
53  MAJOR1=`get_major_version $1`
54  MAJOR2=`get_major_version $2`
55  if test $MAJOR1 -lt $MAJOR2; then
56    echo 0
57    return
58  else
59    if test $MAJOR1 -gt $MAJOR2; then
60      echo 1
61      return
62    fi
63  fi
64
65  MINOR1=`get_minor_version $1`
66  MINOR2=`get_minor_version $2`
67  if test $MINOR1 -lt $MINOR2; then
68    echo 0
69    return
70  else
71    if test $MINOR1 -gt $MINOR2; then
72      echo 1
73      return
74    fi
75  fi
76
77  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
84}
85
86# check the version of a given tool against a minimum version number
87#
88# $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
95check_tool_version ()
96{
97  field=$5
98  # assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version"
99  if test "$field"x = x; then
100    field=3  # default to 3 for all GNU autotools, after filtering enclosed string
101  fi
102  version=`$1 --version | head -1 | sed 's/([^)]*)/()/g' | cut -d ' ' -f $field`
103  version_check=`compare_to_minimum_version $version $4`
104  if test "$version_check"x = 0x; then
105    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
110  fi
111}
112
113# Solaris 10's shell doesn't like the `!` operator to negate the exit status.
114if test -f ./builds/unix/configure.raw; then
115  :
116else
117  echo "You must be in the same directory as \`autogen.sh'."
118  echo "Bootstrapping doesn't work if srcdir != builddir."
119  exit 1
120fi
121
122# On MacOS X, the GNU libtool is named `glibtool'.
123HOSTOS=`uname`
124if test "$LIBTOOLIZE"x != x; then
125  :
126elif test "$HOSTOS"x = Darwinx; then
127  LIBTOOLIZE=glibtoolize
128else
129  LIBTOOLIZE=libtoolize
130fi
131
132if test "$ACLOCAL"x = x; then
133  ACLOCAL=aclocal
134fi
135
136if test "$AUTOCONF"x = x; then
137  AUTOCONF=autoconf
138fi
139
140check_tool_version $ACLOCAL    aclocal    ACLOCAL    1.10.1
141check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4
142check_tool_version $AUTOCONF   autoconf   AUTOCONF   2.62
143
144# This sets FREETYPE version.
145eval `sed -n \
146-e 's/^#define  *\(FREETYPE_MAJOR\)  *\([0-9][0-9]*\).*/\1=\2/p' \
147-e 's/^#define  *\(FREETYPE_MINOR\)  *\([0-9][0-9]*\).*/\1=\2/p' \
148-e 's/^#define  *\(FREETYPE_PATCH\)  *\([0-9][0-9]*\).*/\1=\2/p' \
149include/freetype/freetype.h`
150
151if test "$FREETYPE_PATCH" = "0"; then
152  FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR
153else
154  FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH
155fi
156
157echo "FreeType $FREETYPE:"
158
159cd builds/unix
160
161echo "generating \`configure.ac'"
162sed -e "s;@VERSION@;$FREETYPE;" \
163  < configure.raw > configure.ac
164
165run aclocal -I . --force
166run $LIBTOOLIZE --force --copy --install
167run autoconf --force
168
169chmod +x install-sh
170
171cd ../..
172
173chmod +x ./configure
174
175# Copy all necessary 'dlg' files.
176copy_submodule_files ()
177{
178  echo "Copying files from \`subprojects/dlg' to \`src/dlg' and \`include/dlg'"
179  mkdir include/dlg 2> /dev/null
180  cp $DLG_INC_DIR/output.h include/dlg
181  cp $DLG_INC_DIR/dlg.h include/dlg
182  cp $DLG_SRC_DIR/* src/dlg
183}
184
185if test -e ".git"; then
186  DLG_INC_DIR=subprojects/dlg/include/dlg
187  DLG_SRC_DIR=subprojects/dlg/src/dlg
188
189  if test -d "$DLG_INC_DIR"; then
190    :
191  else
192    echo "Checking out submodule in \`subprojects/dlg':"
193    git submodule init
194    git submodule update
195  fi
196
197  copy_submodule_files
198fi
199
200# EOF
201