+#!/bin/sh
# A simple shell-script to run the freshly build SBCL without
-# installing it. Expects to be run from the top of the SBCL source
-# tree.
+# installing it.
# This software is part of the SBCL system. See the README file for
# more information.
set -e
-if [ "$1" = "--help" ]; then
- echo "usage: run-sbcl.sh sbcl-options*"
- echo
- echo "Runs SBCL from the build directory or binary tarball without need for"
- echo "installation. Except for --help and --core, accepts all the same"
- echo "command-line options as SBCL does."
- echo
- echo "Expects the current directory to be the topmost directory of the SBCL"
- echo "source tree or binary tarball."
- echo
- exit 1
+this="$0"
+
+# OSX 10.8 readlink doesn't have -f
+while [ -h "$this" ]; do
+ # [ -h should guarantee that readlink output will be non-null
+ link=`readlink -n "$this"`
+ # if absolute path
+ if expr "$link" : '^/.*' > /dev/null; then
+ this="$link"
+ else
+ this=`dirname "$this"`/"$link"
+ fi
+done
+BASE=`dirname "$this"`
+
+CORE_DEFINED=no
+
+for arg in "$@"; do
+ case "$arg" in
+ --core)
+ CORE_DEFINED=yes
+ ;;
+ --help)
+ echo "usage: run-sbcl.sh sbcl-options*"
+ echo
+ echo "Runs SBCL from the build directory or binary tarball without need for"
+ echo "installation. Except for --help, accepts all the same command-line options"
+ echo "as SBCL does."
+ echo
+ exit 1
+ ;;
+ esac
+done
+
+ARGUMENTS=""
+
+if [ "$CORE_DEFINED" = "no" ]; then
+ ARGUMENTS="--core "$BASE"/output/sbcl.core"
fi
-if [ -f sbcl-pwd.sh -a -x src/runtime/sbcl -a -f output/sbcl.core ]; then
- . sbcl-pwd.sh
- sbcl_pwd
- echo "(running SBCL from: $SBCL_PWD)"
- SBCL_HOME=$SBCL_PWD/contrib src/runtime/sbcl --core output/sbcl.core $@
-elif [ -f run-sbcl.sh -a -f version.lisp-expr ]; then
- echo "No built SBCL here ($(pwd)): run 'sh make.sh' first!"
- exit 1
+if [ -x "$BASE"/src/runtime/sbcl -a -f "$BASE"/output/sbcl.core ]; then
+ echo "(running SBCL from: $BASE)" 1>&2
+ SBCL_HOME="$BASE/obj/sbcl-home" exec "$BASE"/src/runtime/sbcl $ARGUMENTS "$@"
else
- echo "No SBCL here ($(pwd))!"
- echo
- echo "run-sbcl.sh needs to be run from the top of the SBCL source tree or"
- echo "binary tarball."
+ echo "No built SBCL here ($BASE): run 'sh make.sh' first!"
exit 1
fi