#!/bin/sh
#	confhat -- install the Hat system for ghc or nhc98
#	author:   Malcolm.Wallace@cs.york.ac.uk, Mar 2002

MACHINE=${MACHINE-`script/harch`}
PWD=`pwd`
COMP=$1
HC=`echo $COMP | cut -c1-3`	# e.g. ghc
VER=`echo $COMP | cut -c4-`	# e.g. -5.04.1

TRUE=/bin/true
if [ ! -x $TRUE ]
then TRUE=/usr/bin/true
fi

DIRS="Data Control Control/Monad Debug Foreign Foreign/Marshal System \
System/Console System/IO Text Text/ParserCombinators \
Text/ParserCombinators/Parsec Text/PrettyPrint"
HATDIRS="Hat `for dir in $DIRS; do echo Hat/$dir; done`"

if [ "$HC" = "ghc" -a -d lib/$MACHINE/hatlib/$COMP ]
then
  # discover ghc location
  libdir=`$COMP -v 2>&1 | head -2 | tail -1 | cut -c28- | head -1`
  libdir=`dirname $libdir`
  incdir=$libdir/imports
  echo >&2 "Installing hat package for ghc under $libdir"

  # install ghc package components
  echo -P$incdir/hat >lib/$MACHINE/hatlib/$COMP/ghcincdir
  cp lib/$MACHINE/hatlib/$COMP/libHShat.a $libdir  && \
  if [ -d $incdir/hat ]
  then
    rm -rf $incdir/hat/Hat && \
    { ghc-pkg$VER --remove-package=hat || $TRUE; }
  else
    mkdir $incdir/hat
  fi && \
  for dir in $HATDIRS; \
      do mkdir $incdir/hat/$dir; \
      done  && \
  for dir in $HATDIRS; \
      do cp lib/$MACHINE/hatlib/$COMP/$dir/*.hi $incdir/hat/$dir; \
      done  && \
  ghc-pkg$VER --add-package <lib/$MACHINE/hatlib/$COMP/hat-package.conf
fi
if [ -d lib/$MACHINE/hatlib/nhc98 ]
then
  # discover nhc98 location
  nhc98=`which nhc98`
  libdir=`grep '^NHC98LIBDIR' $nhc98 | cut -c27- | cut -d'}' -f1 | head -1`
  incdir=`grep '^NHC98INCDIR' $nhc98 | cut -c27- | cut -d'}' -f1 | head -1`
  echo >&2 "Installing hat package for nhc98 under $libdir"

  # install nhc98 package components
  cp -p lib/$MACHINE/hatlib/nhc98/libHShat.a $libdir/$MACHINE  && \
  if [ -d $incdir/hat ]
  then rm -rf $incdir/hat/Hat
  else mkdir $incdir/hat
  fi && \
  for dir in $HATDIRS; \
      do mkdir $incdir/hat/$dir; \
      done  && \
  for dir in $HATDIRS; \
      do cp lib/$MACHINE/hatlib/$COMP/$dir/*.hi $incdir/hat/$dir; \
      done
fi
