tools/git-dev-options.sh
#! /bin/sh
#**************************************************************************
#*                                                                        *
#*                                 OCaml                                  *
#*                                                                        *
#*                 David Allsopp, OCaml Labs, Cambridge.                  *
#*                                                                        *
#*   Copyright 2019 MetaStack Solutions Ltd.                              *
#*                                                                        *
#*   All rights reserved.  This file is distributed under the terms of    *
#*   the GNU Lesser General Public License version 2.1, with the          *
#*   special exception on linking described in the file LICENSE.          *
#*                                                                        *
#**************************************************************************

# This script should have the same shebang as configure
if test -e '.git' ; then :
  if test -z "$ac_read_git_config" ; then :
    extra_args=$(git config ocaml.configure 2>/dev/null)
    extended_cache=$(git config ocaml.configure-cache 2>/dev/null)
    cache_file=

    # If ocaml.configure-cache is set, parse the command-line for the --host
    # option, in order to determine the name of the cache file.
    if test -n "$extended_cache" ; then :
      echo "Detected Git configuration option ocaml.configure-cache set to \
\"$extended_cache\""
      dashdash=
      prev=
      host=default
      # The logic here is pretty borrowed from autoconf's
      for option in $extra_args "$@"
      do
        if test -n "$prev" ; then :
          host=$option
          continue
        fi

        case $dashdash$option in
          --)
            dashdash=yes ;;
          -host | --host | --hos | --ho)
            prev=host ;;
          -host=* | --host=* | --hos=* | --ho=*)
            case $option in
              *=?*) host=$(expr "X$option" : '[^=]*=\(.*\)') ;;
              *=) host= ;;
            esac ;;
        esac
      done
      cache_file="`dirname "$0"`/$extended_cache/ocaml-$host.cache"
    fi

    # If either option has a value, re-invoke configure
    if test -n "$extra_args$cache_file" ; then :
      echo "Detected Git configuration option ocaml.configure set to \
\"$extra_args\""
      # Too much effort to get the echo to show appropriate quoting - the
      # invocation itself intentionally quotes $0 and passes $@ exactly as given
      # but allows a single expansion of ocaml.configure
      if test -n "$cache_file" ; then :
        echo "Re-running $0 $extra_args --cache-file \"$cache_file\" $@"
        ac_read_git_config=true exec "$0" $extra_args \
                                          --cache-file "$cache_file" "$@"
      else
        echo "Re-running $0 $extra_args $@"
        ac_read_git_config=true exec "$0" $extra_args "$@"
      fi
    fi
  fi
fi
