#!/bin/sh
if [ $1 = -p ]
then
ssh_port_opt="-p $2"
scp_port_opt="-P $2"
shift ; shift
else
ssh_port_opt=""
scp_port_opt=""
fi
case $1 in
sync)
local_rev=`git rev-parse HEAD`
checkout="git checkout $local_rev"
;;
head)
checkout="git checkout master"
;;
nosync)
checkout="echo not syncing remote"
;;
*)
echo "Usage error: cross-make.sh {sync|head|nosync} host dir [env]"
exit 1
esac
shift
host=$1
root=$2
ENV=$3
set -ex
ssh $ssh_port_opt $host cd $root \; $checkout '&&' \
$ENV sh make-config.sh $config_options '&&' \
mv version.lisp-expr remote-version.lisp-expr
scp $scp_port_opt $host:$root/{remote-version.lisp-expr,local-target-features.lisp-expr,output/build-id.inc} .
mv build-id.inc output
sh make-host-1.sh
tar cf - src/runtime/genesis | ssh $ssh_port_opt $host cd $root \; tar xf -
ssh $ssh_port_opt $host cd $root \; $ENV sh make-target-1.sh
scp $scp_port_opt $host:$root/output/stuff-groveled-from-headers.lisp output
sh make-host-2.sh
scp $scp_port_opt -C output/cold-sbcl.core $host:$root/output
ssh $ssh_port_opt $host cd $root \; sh make-target-2.sh '&&' \
sh make-target-contrib.sh sb-posix sb-bsd-sockets