Makefile: Apparently Algol 68 Genie now has a compiler. Let's use it.
[fringe] / sbcl-build
CommitLineData
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)))))