#!/bin/sh
#
# Copyright (C) 2002-2024 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.
#
#
# Call the `configure' script located in `builds/unix'.
#

rm -f config.mk builds/unix/unix-def.mk builds/unix/unix-cc.mk

# respect GNUMAKE environment variable for backward compatibility
if test "x$GNUMAKE" = x; then
  if test "x$MAKE" = x; then
    if test "x`make -v 2>/dev/null | sed -n -e '/GNU/p' -e '/makepp/p'`" = x; then
      MAKE=gmake
    else
      MAKE=make
    fi
  fi
else
  MAKE=$GNUMAKE
fi

if test "x`$MAKE -v 2>/dev/null | sed -n -e '/GNU/p' -e '/makepp/p'`" = x; then
  echo "GNU make (>= 3.81) or makepp (>= 2.0) is required to build FreeType2." >&2
  echo "Please try" >&2
  echo >&2
  echo "  MAKE=<GNU make command name> $0" >&2
  echo >&2
  echo "or" >&2
  echo >&2
  echo "  MAKE=\"makepp --norc-substitution\" $0" >&2
  exit 1
fi

# Get `dirname' functionality.  This is taken and adapted from autoconf's
# m4sh.m4 (_AS_EXPR_PREPARE, AS_DIRNAME_EXPR, and AS_DIRNAME_SED).

if expr a : '\(a\)' >/dev/null 2>&1; then
  ft_expr=expr
else
  ft_expr=false
fi

ft2_dir=`(dirname "$0") 2>/dev/null                         ||
         $ft_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
                  X"$0" : 'X\(//\)[^/]' \| \
                  X"$0" : 'X\(//\)$' \| \
                  X"$0" : 'X\(/\)' \| \
                  .     : '\(.\)' 2>/dev/null               ||
         echo X"$0" |
           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
                  s//\1/
                  q
                }
                /^X\(\/\/\)[^/].*/{
                  s//\1/
                  q
                }
                /^X\(\/\/\)$/{
                  s//\1/
                  q
                }
                /^X\(\/\).*/{
                  s//\1/
                  q
                }
                s/.*/./; q'`

abs_curr_dir=`pwd`
abs_ft2_dir=`cd "$ft2_dir" && pwd`

# `--srcdir=' option can override abs_ft2_dir

if test $# -gt 0; then
  for x in "$@"; do
    case x"$x" in
    x--srcdir=*)
      abs_ft2_dir=`echo $x | sed 's/^--srcdir=//'` ;;
    esac
  done
fi

# build a dummy Makefile if we are not building in the source tree;
# we use inodes to avoid issues with symbolic links
inode_src=`ls -id $abs_ft2_dir | awk '{print $1}'`
inode_dst=`ls -id $abs_curr_dir | awk '{print $1}'`

if test $inode_src != $inode_dst; then
  if test ! -d docs; then
    mkdir docs
    echo "Copying documentation assets"
    cp -R $abs_ft2_dir/docs/markdown $abs_curr_dir/docs
  fi
  if test ! -r $abs_curr_dir/modules.cfg; then
    echo "Copying \`modules.cfg'"
    cp $abs_ft2_dir/modules.cfg $abs_curr_dir
  fi
  echo "Generating \`Makefile'"
  echo "TOP_DIR        := $abs_ft2_dir"           > Makefile
  echo "OBJ_DIR        := $abs_curr_dir"         >> Makefile
  echo "OBJ_BUILD      := \$(OBJ_DIR)"           >> Makefile
  echo "DOC_DIR        := \$(OBJ_DIR)/docs"      >> Makefile
  echo "FT_LIBTOOL_DIR := \$(OBJ_DIR)"           >> Makefile
  echo "ifndef FT2DEMOS"                         >> Makefile
  echo "  include \$(TOP_DIR)/Makefile"          >> Makefile
  echo "else"                                    >> Makefile
  echo "  TOP_DIR_2 := \$(TOP_DIR)/../ft2demos"  >> Makefile
  echo "  PROJECT   := freetype"                 >> Makefile
  echo "  CONFIG_MK := \$(OBJ_DIR)/config.mk"    >> Makefile
  echo "  include \$(TOP_DIR_2)/Makefile"        >> Makefile
  echo "endif"                                   >> Makefile
fi

# call make

CFG=
# work around zsh bug which doesn't like `${1+"$@"}'
case $# in
0) ;;
*) for x in "$@"; do
     case x"$x" in
     x--srcdir=* ) CFG="$CFG '$x'/builds/unix" ;;
     *) CFG="$CFG '$x'" ;;
     esac
   done ;;
esac
CFG=$CFG $MAKE setup unix

# eof
