autogen.sh (4760B)
1 #!/bin/sh 2 3 # Copyright (C) 2005-2025 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 | sed -n '1s/([^)]*)/()/gp' | 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. 114 if test -f ./builds/unix/configure.raw; then 115 : 116 else 117 echo "You must be in the same directory as \`autogen.sh'." 118 echo "Bootstrapping doesn't work if srcdir != builddir." 119 exit 1 120 fi 121 122 # On MacOS X, the GNU libtool is named `glibtool'. 123 HOSTOS=`uname` 124 if test "$LIBTOOLIZE"x != x; then 125 : 126 elif test "$HOSTOS"x = Darwinx; then 127 LIBTOOLIZE=glibtoolize 128 else 129 LIBTOOLIZE=libtoolize 130 fi 131 132 if test "$ACLOCAL"x = x; then 133 ACLOCAL=aclocal 134 fi 135 136 if test "$AUTOCONF"x = x; then 137 AUTOCONF=autoconf 138 fi 139 140 check_tool_version $ACLOCAL aclocal ACLOCAL 1.10.1 141 check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4 142 check_tool_version $AUTOCONF autoconf AUTOCONF 2.62 143 144 # This sets FREETYPE version. 145 eval `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' \ 149 include/freetype/freetype.h` 150 151 if test "$FREETYPE_PATCH" = "0"; then 152 FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR 153 else 154 FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH 155 fi 156 157 echo "FreeType $FREETYPE:" 158 159 cd builds/unix 160 161 echo "generating \`configure.ac'" 162 sed -e "s;@VERSION@;$FREETYPE;" \ 163 < configure.raw > configure.ac 164 165 run aclocal -I . --force 166 run $LIBTOOLIZE --force --copy --install 167 run autoconf --force 168 169 chmod +x install-sh 170 171 cd ../.. 172 173 chmod +x ./configure 174 175 # Copy all necessary 'dlg' files. 176 copy_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 185 if test -d ".git" -o -h ".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 update --init 194 fi 195 196 copy_submodule_files 197 fi 198 199 # EOF