2 (defpackage :lineal.devvars
4 (:export
*file-tree
* compile-tree compile-lineal
))
6 (in-package :lineal.devvars
)
8 (defparameter *file-tree
*
9 '(("math" "math" "tuples" "matrices" "row-operns" "format")
10 ("overload" "overload" "numbers" "tuples"
11 "matrices" "row-operns" "format" "concatenate" "crop")
15 ("overload" "client-fns")
16 ("webui" "webvars" "compile-ps" "index" "matrixui"
17 "calcupage" "save-restore" "reload")))
21 &optional
(fasl-dir src-dir
)
22 compile-all ensure-dirs
25 (make-pathname :directory src-dir
26 :name name
:type
"lisp"))
28 (make-pathname :directory fasl-dir
29 :name name
:type
"fasl")))
30 (unless (and (not compile-all
)
31 (probe-file fasl-file
)
32 (< (file-write-date src-file
)
33 (file-write-date fasl-file
)))
35 (ensure-directories-exist fasl-file
))
37 (fasl-strm fasl-file
:direction
:output
38 :if-exists
:supersede
)
39 (compile-file src-file
:output-file fasl-strm
)))
43 (file-tree src-base fasl-base
45 &aux src-dir fasl-dir
)
49 (funcall set-dirs-fn nil
)
50 (recurse (car in-dir
) set-dirs-fn t
)
51 (dolist (x (cdr in-dir
))
52 (recurse x set-dirs-fn nil
)))
54 (file-tree set-dirs-fn ensure-dirs
)
56 (let ((tmp-src src-dir
)
58 (dir (car file-tree
)))
63 (cons dir rootless
))))
66 ;V /file-tree/ is a file's name, V
67 ;V compile it if necessary. V
69 file-tree src-dir fasl-dir
70 compile-all ensure-dirs
))))
74 (setq src-dir
(append src-base rootless
)
75 fasl-dir
(append fasl-base rootless
))))))
77 (defun compile-lineal ()
79 *file-tree
* '(:relative
"src")