Fix --implementation
[clbuild2:clbuild2-svetlyak40wt.git] / clbuild
1 #!/usr/bin/env bash
2 # (we use env for non-Linux OSes)
3 #
4 # Wrapper script for Lisp invocation with quicklisp preloaded.
5 # Based on code from clbuild by Luke Gorrie and contributors.
6
7 ###
8 ### Initialize $base variable
9 ###
10 ### This code can't be factored out into internal/ because we need $base
11 ### set before we can find internal/
12 ###
13
14 # exit on any error
15 set -e
16
17 # MacOS doesn't have "readlink -e", needed to follow symlinks.
18 # We hack it using readlink, dirname, and cd.
19 readlink_e() {
20     self="$0"
21     while test -h "$self"; do
22         cd "$(dirname $self)"
23         self=`readlink "$self"`
24     done
25     cd "$(dirname $self)"
26     pwd
27 }
28 base=$(readlink_e)
29 internal=$base/internal
30
31
32 ###
33 ### early options
34 ###
35 while :; do
36     case $1 in
37         --implementation)
38             FORCE_LISP_BINARY=$2
39             FORCE_LISP_IMPLEMENTATION_TYPE=$(basename $FORCE_LISP_BINARY) 
40             shift 2
41             ;;
42         --binary)
43             FORCE_LISP_BINARY=$2
44             shift 2
45             ;;
46         --type)
47             FORCE_LISP_IMPLEMENTATION_TYPE=$2
48             shift 2
49             ;;
50         --debug)
51             set -x
52             shift
53             ;;
54         *)
55             break
56             ;;
57     esac
58 done
59
60 ###
61 ### Load configuration files
62 ###
63 source "$base/clbuild.conf.default"
64 if test -f "$base/clbuild.conf"; then
65     source "$base/clbuild.conf"
66 fi
67
68 # now that user's clbuild.conf has had a change to override FORCE_LISP_*,
69 # we set the real options accordingly.  This order was chosen to achieve
70 # the following goals:
71 #   - command line options override the ordinary preference in clbuild.conf
72 #   - clbuild.conf can override the command line options if it really wants to
73 #   - in particular, clbuild.conf can do clever things to default one
74 #     variable from the other
75 if test -n "$FORCE_LISP_BINARY"; then
76     LISP_BINARY=$FORCE_LISP_BINARY
77 fi
78 if test -n "$FORCE_LISP_IMPLEMENTATION_TYPE"; then
79     LISP_IMPLEMENTATION_TYPE=$FORCE_LISP_IMPLEMENTATION_TYPE
80 fi
81
82 ###
83 ### Load sources
84 ###
85 source $internal/util.sh
86 source $internal/ql.sh
87 source $internal/slime.sh
88 source $internal/impl.sh
89
90 ###
91 ### Choose a Lisp
92 ###
93
94 configure_implementation
95
96 ###
97 ### Main commands
98 ###
99
100 source $internal/main.sh