144
143
(ignore-errors (delete-file binary-pathname)))
147
(defun compile-files-if-needed-serially (files fasl-directory)
146
(defun compile-files-if-needed-serially (files fasl-directory load)
148
147
"Compile each file in FILES if the source is newer than
149
148
its corresponding binary, or the file preceding it was
164
163
(compile-file source-pathname :output-file binary-pathname
167
(load binary-pathname :verbose t))
167
(load binary-pathname :verbose t)))
168
168
;; Fail as early as possible
169
169
(serious-condition (c)
170
170
(handle-loadtime-error c binary-pathname)))))))
188
188
:defaults directory)
189
189
:if-does-not-exist nil))
191
(defun swank-source-files (source-directory)
191
(defun source-files (names src-dir)
192
192
(mapcar (lambda (name)
193
(make-pathname :name name :type "lisp"
194
:defaults source-directory))
195
`("swank-backend" ,@*sysdep-files* "swank")))
193
(make-pathname :name (string-downcase name) :type "lisp"
197
(defun swank-source-files (src-dir)
198
(source-files `("swank-backend" ,@*sysdep-files* "swank")
197
201
(defvar *fasl-directory* (default-fasl-directory)
198
202
"The directory where fasl files should be placed.")
204
(defvar *contribs* '(swank-c-p-c swank-arglists swank-fuzzy
205
swank-fancy-inspector
206
swank-presentations swank-presentation-streams
207
#+(or asdf sbcl) swank-asdf
209
"List of names for contrib modules.")
211
(defun append-dir (absolute name)
213
(make-pathname :directory `(:relative ,name) :defaults absolute)
216
(defun contrib-src-dir (src-dir)
217
(append-dir src-dir "contrib"))
219
(defun contrib-source-files (src-dir)
220
(source-files *contribs* (contrib-src-dir src-dir)))
200
222
(defun load-swank (&key
201
223
(source-directory *source-directory*)
202
(fasl-directory *fasl-directory*))
224
(fasl-directory *fasl-directory*)
225
(contrib-fasl-directory
226
(append-dir fasl-directory "contrib")))
203
227
(compile-files-if-needed-serially (swank-source-files source-directory)
205
(set (read-from-string "swank::*swank-wire-protocol-version*")
206
(slime-version-string))
207
(funcall (intern (string :warn-unimplemented-interfaces) :swank-backend))
208
(load-site-init-file source-directory)
209
(load-user-init-file)
210
(funcall (intern (string :run-after-init-hook) :swank)))
229
(compile-files-if-needed-serially (contrib-source-files source-directory)
230
contrib-fasl-directory nil))
234
(setq swank::*swank-wire-protocol-version* (slime-version-string))
235
(setq swank::*load-path*
236
(append swank::*load-path* (list (contrib-src-dir *source-directory*))))
237
(swank-backend::warn-unimplemented-interfaces)
238
(load-site-init-file *source-directory*)
239
(load-user-init-file)
240
(swank:run-after-init-hook)