#!/usr/bin/env bash

# Create Makefile.in and Makefile in a directory (containing a Makefile.am !)
# Saves time compared to re-running configure completely

if [ $# -ne 1 ]; then 
  echo "$0 : creates a Makefile from a Makefile.am"
  echo
  echo "Usage : $0 relativepath/Makefile"
  echo "So the argument is the file you want to create."
  echo
else
  if test -f config.status && test -f configure; then
    :
  else
    if test ! -f Makefile && test -n "$OBJ_SUBDIR"; then
      cd $OBJ_SUBDIR
    else
      if test ! -f Makefile && test -n "$OBJ_REPLACEMENT"; then
         objdir=`pwd | sed -e "$OBJ_REPLACEMENT"`
         cd $objdir
      fi
    fi

    if test ! -f Makefile && test -n "$OBJ_SUBDIR"; then
       cd $OBJ_SUBDIR
    fi

    if test ! -f Makefile; then 
      echo "$0: in the current directory there is no Makefile"
      echo "you will have to run it from the top build dir."
      echo "if you do not have a Makefile there - rerun configure"
      exit
    fi

  fi

  # Handle arg with missing "/Makefile"
  relpath=$1
  if test -n "`echo $relpath | grep \/$`"; then
    relpath=`echo $relpath | sed 's/\/$//'`
  fi
  if test -z "`echo $relpath | grep 'Makefile$'`"; then 
    relpath="$relpath/Makefile"
  fi

  # Strip leading ./, otherwise config.status chokes
  relpath=`echo "$relpath" | sed -e 's,^\./,,'`

  # Go up to toplevel dir
  while test ! -f config.status; do
    relpath="`basename $PWD`/$relpath"
    cd ..
  done

  # Find out top_srcdir.
  top_srcdir=`egrep '^top_srcdir *=' Makefile | sed -e "s#top_srcdir *= *##"`

  (  
    if cd $top_srcdir ; then
     # Check if unsermake or automake was used to create the toplevel Makefile.in
     # (the one in $relpath might not exist yet)
     if test -n "`sed -n -e '1p' Makefile.in | grep unsermake`"; then
       if test -n "`sed -n -e '1p' Makefile.in | grep automake`"; then # old unsermake
         if test -z "$UNSERMAKE"; then
           echo "unsermake was used to build this module, but \$UNSERMAKE isn't set!"
	   exit 1
         fi
         $UNSERMAKE $relpath
         exit 2
       else # new unsermake
         UNSERMAKE=`type -p unsermake`
         if test ! -x "$UNSERMAKE"; then
                echo 'Makefile was created with unsermake, but there'
                echo 'is no unsermake in $PATH'
                exit 1
         fi
         $UNSERMAKE -c $relpath
       fi
     else
       # Suck in AUTOCONF/AUTOMAKE detection code
	UNSERMAKE=no
       eval `admin/detect-autoconf.pl`
       /bin/sh admin/missing --run $AUTOMAKE $relpath || exit
       if test -f admin/am_edit; then perl admin/am_edit $relpath.in ;\
       else 
         if test -f ../admin/am_edit; then perl ../admin/am_edit $relpath.in ; \
         fi
       fi
     fi
    fi
  )
  case $? in
    1)
      exit 1
      ;;
    2)
      createrulesfile="true"
      ;;
    *)
      ;;
  esac
  if test -f `dirname $relpath`; then 
	rm `dirname $relpath`
  fi
  CONFIG_FILES=$relpath CONFIG_HEADERS= ./config.status
  if test "$createrulesfile" = "true"; then
    CONFIG_FILES="$relpath.rules $relpath.calls" CONFIG_HEADERS= ./config.status
  fi
fi
