#!/bin/sh

#*********************************************************************#
#                                                                     #
#                              Htmlc                                  #
#                                                                     #
#            Pierre Weis, projet Cristal, INRIA Rocquencourt          #
#                                                                     #
#  Copyright 2001, 2009                                               #
#  Institut National de Recherche en Informatique et en Automatique.  #
#  Distributed under the QPL licence.                                 #
#                                                                     #
#*********************************************************************#

# $Id: configure,v 1.14 2011-05-25 12:43:43 fclement Exp $

SCRIPT=`basename $0`
TRACE=false

#
# PREFIXINSTALLDIR
#

MSG="Automatically generated by generic makefiles configuration."

do_mkfile () {
    FILE=$1
    INSTALL_ROOT_DIR=$2
    OCAML_COMMAND_SEARCH_PATH=$3
    echo  "# $MSG" > $FILE
    echo "PREFIXINSTALLDIR = $INSTALL_ROOT_DIR" >> $FILE
    echo "OCAML_COMMAND_SEARCH_PATH = $OCAML_COMMAND_SEARCH_PATH" >> $FILE
}

MKFILE=config/Makefile.prefixinstalldir

# Default install root directory name.
INSTALL_ROOT_DIR_INTRINSIC_DEFAULT="/usr/local"
OCAML_COMMAND_SEARCH_PATH_INTRINSIC_DEFAULT=""

usage () {
    
    cat << eof

Usage: ./$SCRIPT [<option>...]

OPTIONS

Paths:

--install-root-dir <ird>, -ird <ird>
        Set the installation root directory to <ird>.
        Default is "$INSTALL_ROOT_DIR_INTRINSIC_DEFAULT".

--ocaml-command-search-path <-ocsp>, -ocsp <ocsp>
        Set the command search path for the OCaml compiler to <ocsp>.
        Default is the first one in your search path.

Service:

--trace, -x
        Trigger the fine debugging mode on. Default is "$TRACE".

--help, -h
        Display this help and exit.

eof
    
} >&2

while test $# -gt 0; do
    
    case "$1" in
    
    # Installation root directory name.
    ( --install-root-dir | -install-root-dir | -ird | --prefix | -prefix )
        VAL=`eval echo "$2"`; shift
        # Perform sanity check: nonempty install root directory.
        if test -z "$VAL"; then
            echo "Error:" \
              "The installation root directory name must be nonempty" >&2
            exit 2
        fi
        INSTALL_ROOT_DIR_FROM_COMMAND_LINE="$VAL"
        ;;
    
    # OCaml command search path.
    ( --ocaml-command-search-path | -ocaml-command-search-path | -ocsp )
        VAL=`eval echo "$2"`; shift
        OCAML_COMMAND_SEARCH_PATH_FROM_COMMAND_LINE="$VAL"
        ;;

    # Operating modes.
    ( --trace | -trace | -x) set -x;;
        
    # Help.
    ( --help | -help | -h )
        usage
        exit 0
        ;;

    # Unknown option name.
    ( -* )
        echo "Error: unknown option name \"$1\"" >&2
        exit 3
        ;;

    # Invalid argument.
    ( * )
        echo "Error: invalid argument \"$1\"" >&2
        exit 4
        ;;
            
    esac
    
    shift
    
done

## Install_root_dir.

if [ -n "$INSTALL_ROOT_DIR_INTRINSIC_DEFAULT" ]; then
    INSTALL_ROOT_DIR=$INSTALL_ROOT_DIR_INTRINSIC_DEFAULT
else
    echo "Internal error! Please report."
    exit 1
fi

# Already defined?
ALREADY=""
if [ -s $MKFILE ]; then
    ALREADY=`grep -w "INSTALL_ROOT_DIR =" $MKFILE | \
             tail -1 | awk -F'= ' '{print $2}'`
fi

if [ -n "$ALREADY" ]; then
    INSTALL_ROOT_DIR=`eval echo $ALREADY`
fi

# From command line
if [ -n "$INSTALL_ROOT_DIR_FROM_COMMAND_LINE" ]; then
    INSTALL_ROOT_DIR=$INSTALL_ROOT_DIR_FROM_COMMAND_LINE
fi

## OCaml command_search_path.

# Already defined?
ALREADY=""
if [ -s $MKFILE ]; then
    ALREADY=`grep -w "OCAML_COMMAND_SEARCH_PATH =" $MKFILE | \
             tail -1 | awk -F'= ' '{print $2}'`
fi

if [ -n "$ALREADY" ]; then
    OCAML_COMMAND_SEARCH_PATH=`eval echo $ALREADY`
fi

# From command line
if [ -n "$OCAML_COMMAND_SEARCH_PATH_FROM_COMMAND_LINE" ]; then
    OCAML_COMMAND_SEARCH_PATH=$OCAML_COMMAND_SEARCH_PATH_FROM_COMMAND_LINE
fi

# Add a trailing slash if nonempty and not already there.
case "$OCAML_COMMAND_SEARCH_PATH" in
( "" | */ ) ;;
( * ) OCAML_COMMAND_SEARCH_PATH="$OCAML_COMMAND_SEARCH_PATH/";;
esac

# Do it!
do_mkfile $MKFILE $INSTALL_ROOT_DIR "$OCAML_COMMAND_SEARCH_PATH"

# To prevent developers from editing a volatile file.
chmod 0444 config/Makefile

exit 0
