Commit | Line | Data |
---|---|---|
20ef5352 | 1 | #! /bin/sh -e |
9c91361f | 2 | ":"; exec sbcl --script "$0" "$@" # -*-lisp-*- |
20ef5352 MW |
3 | |
4 | (require 'sb-executable) | |
5 | ||
6 | (let* ((args (cdr *posix-argv*)) | |
9c91361f | 7 | (prog (pathname-name *load-pathname*)) |
20ef5352 | 8 | (cmd (pop args))) |
9c91361f MW |
9 | (labels ((moan (message &rest arguments) |
10 | (format *error-output* "~A: ~?~%" prog message arguments)) | |
11 | (die (message &rest arguments) | |
12 | (apply #'moan message arguments) | |
13 | (exit :code 1))) | |
14 | (cond | |
15 | ((not cmd) | |
16 | (format *error-output* | |
17 | "Usage: ~A build SOURCE SOURCE ...~%~ | |
18 | ~0~ ~:*~A link OUTPUT FASL FASL ...~%" | |
19 | prog) | |
20 | (exit :code 1)) | |
21 | ((string= cmd "build") | |
22 | (let ((rc 0)) | |
23 | (dolist (file args) | |
24 | (unless (handler-case (compile-file file :verbose nil :print nil) | |
25 | (error (cond) | |
26 | (moan "failed to compile `~A':~%~8T~A" file cond))) | |
27 | (setf rc 1))) | |
28 | (exit :code rc))) | |
29 | ((string= cmd "link") | |
30 | (let ((out (pop args))) | |
31 | (handler-case (sb-executable:make-executable out args) | |
32 | (error (cond) | |
33 | (die "failed to make executable:~%~8T~A" cond))))) | |
34 | (t | |
35 | (die "unknown command `~A'" cmd))))) |