1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#!/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`
libdir=$DESTDIR$libdir
incdir=$libdir/imports
echo >&2 "Installing hat package for ghc under $libdir"
mkdir -p $libdir
mkdir -p $incdir
# 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`
libdir=$DESTDIR$libdir
incdir=$DESTDIR$incdir
echo >&2 "Installing hat package for nhc98 under $libdir"
mkdir -p $libdir/$MACHINE
mkdir -p $incdir
# 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
|