Home | History | Annotate | Download | only in freetype
      1 #!/bin/sh
      2 
      3 # Copyright 2005-2018 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 
     12 run ()
     13 {
     14   echo "running \`$*'"
     15   eval $*
     16 
     17   if test $? != 0 ; then
     18     echo "error while running \`$*'"
     19     exit 1
     20   fi
     21 }
     22 
     23 get_major_version ()
     24 {
     25   echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g'
     26 }
     27 
     28 get_minor_version ()
     29 {
     30   echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'
     31 }
     32 
     33 get_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 
     51 compare_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 
     95 check_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 if test ! -f ./builds/unix/configure.raw; then
    114   echo "You must be in the same directory as \`autogen.sh'."
    115   echo "Bootstrapping doesn't work if srcdir != builddir."
    116   exit 1
    117 fi
    118 
    119 # On MacOS X, the GNU libtool is named `glibtool'.
    120 HOSTOS=`uname`
    121 if test "$LIBTOOLIZE"x != x; then
    122   :
    123 elif test "$HOSTOS"x = Darwinx; then
    124   LIBTOOLIZE=glibtoolize
    125 else
    126   LIBTOOLIZE=libtoolize
    127 fi
    128 
    129 if test "$ACLOCAL"x = x; then
    130   ACLOCAL=aclocal
    131 fi
    132 
    133 if test "$AUTOCONF"x = x; then
    134   AUTOCONF=autoconf
    135 fi
    136 
    137 check_tool_version $ACLOCAL    aclocal    ACLOCAL    1.10.1
    138 check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4
    139 check_tool_version $AUTOCONF   autoconf   AUTOCONF   2.62
    140 
    141 # This sets freetype_major, freetype_minor, and freetype_patch.
    142 eval `sed -nf version.sed include/freetype/freetype.h`
    143 
    144 # We set freetype-patch to an empty value if it is zero.
    145 if test "$freetype_patch" = ".0"; then
    146   freetype_patch=
    147 fi
    148 
    149 cd builds/unix
    150 
    151 echo "generating \`configure.ac'"
    152 sed -e "s;@VERSION@;$freetype_major$freetype_minor$freetype_patch;" \
    153   < configure.raw > configure.ac
    154 
    155 run aclocal -I . --force
    156 run $LIBTOOLIZE --force --copy --install
    157 run autoconf --force
    158 
    159 chmod +x install-sh
    160 
    161 cd ../..
    162 
    163 chmod +x ./configure
    164 
    165 # EOF
    166