ocaml/build/partial-install.sh

158 lines
3.6 KiB
Bash
Executable File

#!/bin/sh
######################################
######### Copied from build/install.sh
######################################
set -e
cd `dirname $0`/..
source config/config.sh
not_installed=$PWD/_build/not_installed
rm -f $not_installed
wontinstall() {
echo $1 >> $not_installed
}
installbin() {
if [ -f "$1" ]; then
echo " install $2"
cp -f $1 $2
[ -x $2 ] || chmod +x $2
else
wontinstall $1
fi
}
installbestbin() {
if [ -f "$1" ]; then
echo " install binary $3 (with `basename $1`)"
cp -f $1 $3
else
if [ -f "$2" ]; then
echo " install binary $3 (with `basename $2`)"
cp -f $2 $3
else
echo "None of $1, $2 exists"
exit 3
fi
fi
[ -x $3 ] || chmod +x $3
}
installlib() {
if [ -f "$1" ]; then
dest=$2/`basename $1`
echo " install library $dest"
cp -f $1 $2
ranlib $dest
else
wontinstall $1
fi
}
installdir() {
args=""
while [ $# -gt 1 ]; do
if [ -f "$1" ]; then
args="$args $1"
else
wontinstall $1
fi
shift
done
last=$1
for file in $args; do
echo " install $last/`basename $file`"
cp -f $file $last
done
}
installlibdir() {
args=""
while [ $# -gt 1 ]; do
args="$args $1"
shift
done
last=$1
for file in $args; do
installlib $file $last
done
}
mkdir -p $BINDIR
mkdir -p $LIBDIR
mkdir -p $LIBDIR/camlp4
mkdir -p $LIBDIR/ocamlbuild
mkdir -p $STUBLIBDIR
cd _build
echo "Installing camlp4..."
installbin camlp4/camlp4prof.byte$EXE $BINDIR/camlp4prof$EXE
installbin camlp4/mkcamlp4.byte$EXE $BINDIR/mkcamlp4$EXE
installbin camlp4/camlp4.byte$EXE $BINDIR/camlp4$EXE
installbin camlp4/camlp4o.byte$EXE $BINDIR/camlp4o$EXE
installbin camlp4/camlp4of.byte$EXE $BINDIR/camlp4of$EXE
installbin camlp4/camlp4oof.byte$EXE $BINDIR/camlp4oof$EXE
installbin camlp4/camlp4orf.byte$EXE $BINDIR/camlp4orf$EXE
installbin camlp4/camlp4r.byte$EXE $BINDIR/camlp4r$EXE
installbin camlp4/camlp4rf.byte$EXE $BINDIR/camlp4rf$EXE
installbin camlp4/camlp4o.native$EXE $BINDIR/camlp4o.opt$EXE
installbin camlp4/camlp4of.native$EXE $BINDIR/camlp4of.opt$EXE
installbin camlp4/camlp4oof.native$EXE $BINDIR/camlp4oof.opt$EXE
installbin camlp4/camlp4orf.native$EXE $BINDIR/camlp4orf.opt$EXE
installbin camlp4/camlp4r.native$EXE $BINDIR/camlp4r.opt$EXE
installbin camlp4/camlp4rf.native$EXE $BINDIR/camlp4rf.opt$EXE
cd camlp4
CAMLP4DIR=$LIBDIR/camlp4
for dir in Camlp4Parsers Camlp4Printers Camlp4Filters Camlp4Top; do
echo "Installing $dir..."
mkdir -p $CAMLP4DIR/$dir
for file in $dir/*.cm*; do
echo " install $CAMLP4DIR/$file"
cp $file $CAMLP4DIR/$dir
done
for file in $dir/*.$O; do
echo " install $CAMLP4DIR/$file"
cp $file $CAMLP4DIR/$dir
base=`basename $file .$O`
installdir $dir/$base.p.$O $CAMLP4DIR/$dir
done
done
installdir \
camlp4lib.{cma,cmxa} Camlp4.cmi \
{camlp4o,camlp4of,camlp4oof,camlp4orf,camlp4r,camlp4rf}.cma \
Camlp4Bin.{cm[iox],$O,p.$O} Camlp4Top.cm[io] \
$CAMLP4DIR
installlibdir camlp4lib.{$A,p.$A} $CAMLP4DIR
cd ..
echo "Installing ocamlbuild..."
installbin ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild.byte$EXE
installbin ocamlbuild/ocamlbuild.native$EXE $BINDIR/ocamlbuild.native$EXE
installbestbin ocamlbuild/ocamlbuild.native$EXE ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild$EXE
installlibdir \
ocamlbuild/ocamlbuildlib.{$A,p.$A} \
$LIBDIR/ocamlbuild
installdir \
ocamlbuild/ocamlbuildlib{,.p}.cmxa \
ocamlbuild/ocamlbuildlib.cma \
ocamlbuild/ocamlbuild_plugin.cmi \
ocamlbuild/ocamlbuild_pack.cmi \
ocamlbuild/ocamlbuild.cmo \
ocamlbuild/ocamlbuild{,.p}.{cmx,$O} \
$LIBDIR/ocamlbuild
installdir \
../ocamlbuild/man/ocamlbuild.1 \
$MANDIR/man1