#!/bin/sh

# Variable declaration
prefix='/usr'
phpdir="$prefix/lib/php/build"
includedir="$prefix/include/php"
builddir="`pwd`"

FILES_BUILD="mkdep.awk scan_makefile_in.awk shtool libtool.m4"
FILES="acinclude.m4 Makefile.global config.sub config.guess ltmain.sh"
CLEAN_FILES="$FILES *.o *.lo *.la .deps .libs/ build/ include/ modules/ install-sh \
    mkinstalldirs missing config.nice config.sub config.guess configure configure.in \
	aclocal.m4 config.h config.h.in conftest* ltmain.sh libtool config.cache autom4te.cache/ \
	config.log config.status Makefile Makefile.fragments Makefile.objects confdefs.h"

# function declaration
phpize_usage()
{
  echo "Usage: $0 [--clean|--help|--version|-v]"
}

phpize_no_configm4()
{
  if test $@ -eq 1; then
    clean=" --clean"
  fi

  echo "Cannot find config.m4. "
  echo "Make sure that you run '$0$clean' in the top level source directory of the module"
  echo 
}

phpize_clean()
{
  echo "Cleaning.."
  for i in $CLEAN_FILES; do
    test -e $i && rm -rf $i
  done
}

phpize_check_configm4()
{
  if test ! -r config.m4; then
     phpize_no_configm4 $@
    exit 1
  fi

}

phpize_get_api_numbers()
{
  # extracting API NOs:
  PHP_API_VERSION=`egrep '#define PHP_API_VERSION' $includedir/main/php.h|sed 's/#define PHP_API_VERSION//'`
  ZEND_MODULE_API_NO=`egrep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|sed 's/#define ZEND_MODULE_API_NO//'`
  ZEND_EXTENSION_API_NO=`egrep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|sed 's/#define ZEND_EXTENSION_API_NO//'`
}

phpize_print_api_numbers()
{
  phpize_get_api_numbers
  echo "Configuring for:"
  echo "PHP Api Version:        "$PHP_API_VERSION
  echo "Zend Module Api No:     "$ZEND_MODULE_API_NO
  echo "Zend Extension Api No:  "$ZEND_EXTENSION_API_NO
}

phpize_no_shtool()
{
  echo <<EOF
shtool at '$builddir/build/shtool' not executable. 
Make sure that the file exists and is executable and then rerun this script. 

EOF
}

phpize_check_shtool()
{
  test -x "$builddir/build/shtool" || chmod +x "$builddir/build/shtool"

  if test ! -x "$builddir/build/shtool"; then
    phpize_no_shtool
    exit 1
  fi
}


phpize_copy_files()
{
  test -d build || mkdir build
 
  (cd "$phpdir" && cp $FILES_BUILD "$builddir"/build)
  (cd "$phpdir" && cp $FILES "$builddir")
  (cd "$builddir" && cat ./build/libtool.m4 >> acinclude.m4)
}

phpize_replace_prefix()
{
  sed \
  -e "s#/usr#$prefix#" \
  < "$phpdir/phpize.m4" > configure.in
}

phpize_autotools()
{
  aclocal    || exit 1
  autoconf   || exit 1
  autoheader || exit 1
}

# Main script

case "$1" in 
  # Cleanup
  --clean)
    phpize_check_configm4 1
    phpize_clean
    exit 0
    ;;

  # Usage
  --help)
    phpize_usage
    exit 0
    ;;

  # Version
  --version|-v)
    phpize_print_api_numbers
    exit 0
  ;;

  # Default
  *)
     phpize_check_configm4 0

     phpize_print_api_numbers

     phpize_copy_files

     phpize_replace_prefix

     touch install-sh mkinstalldirs missing

     phpize_autotools

     phpize_check_shtool

     ;;
esac

exit 0
