Edit

kc3-lang/freetype/autogen.sh

Branch :

  • Show log

    Commit

  • Author : Hugh McMaster
    Date : 2021-10-05 22:21:39
    Hash : 467e49e8
    Message : autogen.sh: Only copy submodules if building from a git branch. `autogen.sh` fails if building from a standard source tarball. Firstly, git expects to be called in a git repository, then `copy_submodule_files` blindly attempts to copy files. Debian, Ubuntu, Linux Mint, and other derivatives all run `autogen.sh` before compiling to regenerate build files. This patch ensures that various git commands are only called and 'dlg' files are only copied if `autogen.sh` is called from a git repository.

  • autogen.sh
  • #!/bin/sh
    
    # Copyright (C) 2005-2021 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 -d ".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