#!/usr/bin/env bash
PACKAGE="codice_fiscale"
VERSION="1.2.0"

PREFIX="/usr/local"
BINDIR=$PREFIX"/bin"
DATADIR=$PREFIX"/share"

PATHS="/bin/ /usr/bin/ /usr/local/bin $HOME/bin/"
XPATHS="/usr/ /X11/ /usr/X11/ /usr/X11R6/ /usr/local/X11/"
YPATHS="/usr/ /usr/local/"

DIR=""
FILE=""
FOUNDDIR=""
INFO=false

function basename()
{
  local name="${1##*/}"
  #echo "${name%$2}"
  FILE=${name%$2}
}

function dirname()
{
  local dir="${1%${1##*/}}"
  [ "${dir:=./}" != "/" ] && dir="${dir%?}"
  #echo "$dir"
  DIR=$dir
}

function cercafile ()
{
	local percorsi=$1
	local name=$2

	DIR=""
	FILE=""
	FOUNDDIR=false
	echo -n "Checking $name ... "
	for x in $percorsi
	do
		file=$x$name
		#echo "search in ... $file"
		if ( [ -e "$file" ] ) then
			echo " yes ($file)"
			dirname  "$file"
			basename "$file"
			FOUNDDIR=true
			return 0
		fi
        done

        echo " No, let me retry... "
	return 1
}

function crea_config ()
{
    local outfile=$1
	echo "//"                           > $outfile
	echo "// config.h "                 >> $outfile
	echo "// generated by configure "   >> $outfile
	echo "//"                           >> $outfile
	echo "#define PACKAGE \"$PACKAGE\"" >> $outfile
	echo "#define VERSION \"$VERSION\"" >> $outfile
	echo "//"                           >> $outfile
	echo "#define BINDIR  \"$BINDIR\""  >> $outfile
	echo "#define DATADIR \"$DATADIR\"" >> $outfile
	echo "//"                           >> $outfile
	
	echo "" >> $outfile

}

function crea_makefile ()
{
	local outfile=$1
	local filerule=$2

	echo "#" 					>  "$outfile"
	echo "# Settings:"				>> "$outfile"
	echo "#" 					>> "$outfile"
	echo "PACKAGE          = $PACKAGE"              >> "$outfile"
	echo "VERSION          = $VERSION"              >> "$outfile"
	echo "" 					>> "$outfile"
	echo "CC               = $CC"			>> "$outfile"
	echo "" 					>>  "$outfile"
	echo "BINDIR           = $BINDIR"               >> "$outfile"
	echo "DATADIR          = $DATADIR"              >> "$outfile"
	echo "" 					>> "$outfile"
	
	echo $filerule
	cat $filerule >> "$outfile"

}

if ( [ "$0" != "./configure" ] ) then
cat << EOF
Prego esegui il programma configure nella directory src 
utilizzo: ./configure [--help] [paths]
EOF
        exit 2
fi


for parm in "$@" ; do
  #echo $parm
  case "$parm" in
  --bindir=*)
    BINDIR=`echo $parm | cut -d '=' -f 2`
    ;;
  --datadir=*)
    DATADIR=`echo $parm | cut -d '=' -f 2`
    ;;

  esac

done


#--------------------------------------
# Check if the user has asked for help.
#--------------------------------------
if ( [ "$1" = '-?' ] ) then
        SHOW_USAGE=true
elif ( [ "$1" = 'help' ] ) then
        SHOW_USAGE=true
elif ( [ "$1" = '--help' ] ) then
        SHOW_USAGE=true
fi

if ( [ "$1" = '--info' ] ) then
        INFO=true
fi

#--------------------------------------
# Usage
#--------------------------------------
if ( [ "$SHOW_USAGE" = 'true' ] ) then
cat << EOF
Usage: ./configure [options] [paths]'

Options:
--help			show this page
--info			show info
--bindir=prefix/bin     default=$BINDIR
--datadir=prefix/data   default=$DATADIR

EOF
        exit 0
fi

#--------------------------------------
# Echo
#--------------------------------------
echo "# Configure script"



#--------------------------------------
# gcc
#--------------------------------------
if ( [ "$CC" = "" ] ) then
	cercafile "$PATHS" "gcc"
	if ( [ "$FOUNDDIR" = "true" ] ) then
		CC="$DIR/$FILE"
	fi
fi
if ( [ "$CC" = "" ] ) then
	cercafile "$PATHS" "cc"
	if ( [ "$FOUNDDIR" = "true" ] ) then
		CC="$DIR/$FILE"
	fi
fi
if ( [ "$CC" = "" ] ) then
        # 
        echo "Couldn't find 'gcc' compiler!"
	exit 2
fi


#--------------------------------------
# INFO DEBUG
#--------------------------------------
if ( [ "$INFO" != "false" ] ) then
        echo "# Settings:"
	echo "PACKAGE          = $PACKAGE"
	echo "VERSION          = $VERSION"
        echo "CC               = $CC"
	echo "BINDIR           = $BINDIR"
	echo "DATADIR          = $DATADIR" 
fi

# Now create a Makefile.
echo "# Creating ./Makefile(s)"
crea_makefile "./Makefile" "rules.txt"
echo "# Creating ./src/config.h"
crea_config "./config.h"
exit 0

