201 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			201 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/bin/sh
 | ||
|  | 
 | ||
|  | # Copyright (C) 2005-2023 by | ||
|  | # David Turner, Robert Wilhelm, and Werner Lemberg. | ||
|  | # | ||
|  | # This file is part of the FreeType project, and may only be used, modified, | ||
|  | # and distributed under the terms of the FreeType project license, | ||
|  | # LICENSE.TXT.  By continuing to use, modify, or distribute this file you | ||
|  | # indicate that you have read the license and understand and accept it | ||
|  | # fully. | ||
|  | 
 | ||
|  | run () | ||
|  | { | ||
|  |   echo "running \`$*'" | ||
|  |   eval $* | ||
|  | 
 | ||
|  |   if test $? != 0 ; then | ||
|  |     echo "error while running \`$*'" | ||
|  |     exit 1 | ||
|  |   fi | ||
|  | } | ||
|  | 
 | ||
|  | get_major_version () | ||
|  | { | ||
|  |   echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g' | ||
|  | } | ||
|  | 
 | ||
|  | get_minor_version () | ||
|  | { | ||
|  |   echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g' | ||
|  | } | ||
|  | 
 | ||
|  | get_patch_version () | ||
|  | { | ||
|  |   # tricky: some version numbers don't include a patch | ||
|  |   # separated with a point, but something like 1.4-p6 | ||
|  |   patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'` | ||
|  |   if test "$patch" = "$1"; then | ||
|  |     patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'` | ||
|  |     # if there isn't any patch number, default to 0 | ||
|  |     if test "$patch" = "$1"; then | ||
|  |       patch=0 | ||
|  |     fi | ||
|  |   fi | ||
|  |   echo $patch | ||
|  | } | ||
|  | 
 | ||
|  | # $1: version to check | ||
|  | # $2: minimum version | ||
|  | 
 | ||
|  | compare_to_minimum_version () | ||
|  | { | ||
|  |   MAJOR1=`get_major_version $1` | ||
|  |   MAJOR2=`get_major_version $2` | ||
|  |   if test $MAJOR1 -lt $MAJOR2; then | ||
|  |     echo 0 | ||
|  |     return | ||
|  |   else | ||
|  |     if test $MAJOR1 -gt $MAJOR2; then | ||
|  |       echo 1 | ||
|  |       return | ||
|  |     fi | ||
|  |   fi | ||
|  | 
 | ||
|  |   MINOR1=`get_minor_version $1` | ||
|  |   MINOR2=`get_minor_version $2` | ||
|  |   if test $MINOR1 -lt $MINOR2; then | ||
|  |     echo 0 | ||
|  |     return | ||
|  |   else | ||
|  |     if test $MINOR1 -gt $MINOR2; then | ||
|  |       echo 1 | ||
|  |       return | ||
|  |     fi | ||
|  |   fi | ||
|  | 
 | ||
|  |   PATCH1=`get_patch_version $1` | ||
|  |   PATCH2=`get_patch_version $2` | ||
|  |   if test $PATCH1 -lt $PATCH2; then | ||
|  |     echo 0 | ||
|  |   else | ||
|  |     echo 1 | ||
|  |   fi | ||
|  | } | ||
|  | 
 | ||
|  | # check the version of a given tool against a minimum version number | ||
|  | # | ||
|  | # $1: tool path | ||
|  | # $2: tool usual name (e.g. `aclocal') | ||
|  | # $3: tool variable  (e.g. `ACLOCAL') | ||
|  | # $4: minimum version to check against | ||
|  | # $5: option field index used to extract the tool version from the | ||
|  | #     output of --version | ||
|  | 
 | ||
|  | check_tool_version () | ||
|  | { | ||
|  |   field=$5 | ||
|  |   # assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version" | ||
|  |   if test "$field"x = x; then | ||
|  |     field=3  # default to 3 for all GNU autotools, after filtering enclosed string | ||
|  |   fi | ||
|  |   version=`$1 --version | head -1 | sed 's/([^)]*)/()/g' | cut -d ' ' -f $field` | ||
|  |   version_check=`compare_to_minimum_version $version $4` | ||
|  |   if test "$version_check"x = 0x; then | ||
|  |     echo "ERROR: Your version of the \`$2' tool is too old." | ||
|  |     echo "       Minimum version $4 is required (yours is version $version)." | ||
|  |     echo "       Please upgrade or use the $3 variable to point to a more recent one." | ||
|  |     echo "" | ||
|  |     exit 1 | ||
|  |   fi | ||
|  | } | ||
|  | 
 | ||
|  | # Solaris 10's shell doesn't like the `!` operator to negate the exit status. | ||
|  | if test -f ./builds/unix/configure.raw; then | ||
|  |   : | ||
|  | else | ||
|  |   echo "You must be in the same directory as \`autogen.sh'." | ||
|  |   echo "Bootstrapping doesn't work if srcdir != builddir." | ||
|  |   exit 1 | ||
|  | fi | ||
|  | 
 | ||
|  | # On MacOS X, the GNU libtool is named `glibtool'. | ||
|  | HOSTOS=`uname` | ||
|  | if test "$LIBTOOLIZE"x != x; then | ||
|  |   : | ||
|  | elif test "$HOSTOS"x = Darwinx; then | ||
|  |   LIBTOOLIZE=glibtoolize | ||
|  | else | ||
|  |   LIBTOOLIZE=libtoolize | ||
|  | fi | ||
|  | 
 | ||
|  | if test "$ACLOCAL"x = x; then | ||
|  |   ACLOCAL=aclocal | ||
|  | fi | ||
|  | 
 | ||
|  | if test "$AUTOCONF"x = x; then | ||
|  |   AUTOCONF=autoconf | ||
|  | fi | ||
|  | 
 | ||
|  | check_tool_version $ACLOCAL    aclocal    ACLOCAL    1.10.1 | ||
|  | check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4 | ||
|  | check_tool_version $AUTOCONF   autoconf   AUTOCONF   2.62 | ||
|  | 
 | ||
|  | # This sets FREETYPE version. | ||
|  | eval `sed -n \
 | ||
|  | -e 's/^#define  *\(FREETYPE_MAJOR\)  *\([0-9][0-9]*\).*/\1=\2/p' \
 | ||
|  | -e 's/^#define  *\(FREETYPE_MINOR\)  *\([0-9][0-9]*\).*/\1=\2/p' \
 | ||
|  | -e 's/^#define  *\(FREETYPE_PATCH\)  *\([0-9][0-9]*\).*/\1=\2/p' \
 | ||
|  | include/freetype/freetype.h` | ||
|  | 
 | ||
|  | if test "$FREETYPE_PATCH" = "0"; then | ||
|  |   FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR | ||
|  | else | ||
|  |   FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH | ||
|  | fi | ||
|  | 
 | ||
|  | echo "FreeType $FREETYPE:" | ||
|  | 
 | ||
|  | cd builds/unix | ||
|  | 
 | ||
|  | echo "generating \`configure.ac'" | ||
|  | sed -e "s;@VERSION@;$FREETYPE;" \
 | ||
|  |   < configure.raw > configure.ac | ||
|  | 
 | ||
|  | run aclocal -I . --force | ||
|  | run $LIBTOOLIZE --force --copy --install | ||
|  | run autoconf --force | ||
|  | 
 | ||
|  | chmod +x install-sh | ||
|  | 
 | ||
|  | cd ../.. | ||
|  | 
 | ||
|  | chmod +x ./configure | ||
|  | 
 | ||
|  | # Copy all necessary 'dlg' files. | ||
|  | copy_submodule_files () | ||
|  | { | ||
|  |   echo "Copying files from \`subprojects/dlg' to \`src/dlg' and \`include/dlg'" | ||
|  |   mkdir include/dlg 2> /dev/null | ||
|  |   cp $DLG_INC_DIR/output.h include/dlg | ||
|  |   cp $DLG_INC_DIR/dlg.h include/dlg | ||
|  |   cp $DLG_SRC_DIR/* src/dlg | ||
|  | } | ||
|  | 
 | ||
|  | if test -e ".git"; then | ||
|  |   DLG_INC_DIR=subprojects/dlg/include/dlg | ||
|  |   DLG_SRC_DIR=subprojects/dlg/src/dlg | ||
|  | 
 | ||
|  |   if test -d "$DLG_INC_DIR"; then | ||
|  |     : | ||
|  |   else | ||
|  |     echo "Checking out submodule in \`subprojects/dlg':" | ||
|  |     git submodule init | ||
|  |     git submodule update | ||
|  |   fi | ||
|  | 
 | ||
|  |   copy_submodule_files | ||
|  | fi | ||
|  | 
 | ||
|  | # EOF |