125 lines
3.2 KiB
Bash
Executable File
125 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# set -x
|
|
|
|
clear
|
|
|
|
# script should scale to accomodate systems with only one cpu, or systems with many.
|
|
system_type=$(uname)
|
|
|
|
case "${system_type}" in
|
|
Linux)
|
|
num_jobs="$(grep -c 'core id' /proc/cpuinfo)";;
|
|
Darwin)
|
|
num_jobs=6;;
|
|
esac
|
|
|
|
source_location="$HOME"/SourceCode/x-lisp-implementations/sbcl
|
|
|
|
export crosslisp="$(which sbcl)"
|
|
|
|
echo "this is the thing: $crosslisp"
|
|
|
|
while getopts "p:s:t:x:" flag
|
|
do
|
|
case ${flag} in
|
|
p) num_jobs=${OPTARG};;
|
|
s) source_location=${OPTARG};;
|
|
t) source_tag=${OPTARG};;
|
|
x) crosslisp=${OPTARG};;
|
|
esac
|
|
done
|
|
|
|
crosslisp="$(which "$crosslisp")"
|
|
|
|
echo "this is the thing now: $crosslisp"
|
|
|
|
echo "NUMBER OF PARALLEL JOBS: $num_jobs"
|
|
echo "IN SOURCE TREE: $source_location"
|
|
|
|
export XCLISP="$crosslisp"
|
|
|
|
echo "CROSSLISP:: $XCLISP"
|
|
|
|
export SBCL_MAKE_JOBS=-j$num_jobs
|
|
export SBCL_MAKE_PARALLEL=$num_jobs
|
|
|
|
# exit 0
|
|
|
|
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
|
|
if [ ! "$source_location" ]
|
|
then
|
|
source_location=~/SourceCode/x-lisp-implementations/sbcl/
|
|
fi
|
|
|
|
if [[ -d "$source_location" ]];
|
|
then
|
|
echo "Using existing source repository in $source_location"
|
|
cd "$source_location" &&
|
|
sh ./clean.sh &&
|
|
git checkout master
|
|
else
|
|
echo 'Cloning SBCL source repository from https://github.com/sbcl/sbcl.git into ' "$source_location..."
|
|
mkdir -p "$(dirname "$source_location")" &&
|
|
cd "$(dirname "$source_location")" &&
|
|
git clone https://github.com/sbcl/sbcl.git &&
|
|
cd "$source_location" || exit 1
|
|
fi
|
|
|
|
echo
|
|
|
|
git fetch --all --tags
|
|
git pull --all
|
|
|
|
## we can only calculate the source tag once we have a source
|
|
## repository, which is soonest, here.
|
|
if [[ ! $source_tag ]]
|
|
then
|
|
# this is a nice idiom to get the most recent tag in the
|
|
# repository. Defaults to master.
|
|
source_tag="$(git describe --tags "$(git rev-list --tags --max-count=1)")"
|
|
fi
|
|
echo "BUILDING TAG: $source_tag"
|
|
echo "With lisp: $crosslisp"
|
|
|
|
echo
|
|
echo -n "Checking out $source_tag .. "
|
|
|
|
git checkout "$source_tag"
|
|
echo '[Done]'
|
|
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
sleep 2
|
|
|
|
# call the sbcl build bootstrap with an ANSI implementation of lisp. Prefer SBCL.
|
|
if [[ $(basename "$XCLISP") = "sbcl" ]] && [[ $(command -v "$XCLISP") ]]; then
|
|
sh ./make.sh --fancy --with-sb-linkable-runtime --with-sb-dynamic-core \
|
|
--without-gencgc --with-mark-region-gc
|
|
elif [[ $(basename "$XCLISP") = "ccl" ]] && [[ $(command -v ccl) ]]; then
|
|
sh ./make.sh --fancy --xc-host="$XCLISP --batch --no-init"
|
|
elif [[ $(basename "$XCLISP") = "ccl64" ]] && [[ $(command -v ccl64) ]]; then
|
|
sh ./make.sh --fancy --xc-host="$XCLISP --batch --no-init"
|
|
elif [[ $(basename "$XCLISP") = "clisp" ]] && [[ $(command -v clisp) ]]; then
|
|
sh ./make.sh --fancy --xc-host="$XCLISP -batch -norc"
|
|
else
|
|
exit 6
|
|
fi
|
|
|
|
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
|
|
# make sbcl documentation
|
|
|
|
echo "Making the Documentation... "
|
|
sleep 5
|
|
cd doc/manual && make &&
|
|
|
|
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
|
|
# run tests.
|
|
|
|
echo "Running the tests... "
|
|
|
|
sleep 5
|
|
|
|
cd "$source_location"/tests && sh ./run-tests.sh
|