2 (defpackage :lineal.devvars
4 (:export
*file-tree
* compile-if-new compile-lineal
))
6 (in-package :lineal.devvars
)
8 (defparameter *file-tree
*
9 '(("math" "math" "counting" "tuples" "matrices" "row-operns" "format")
10 ("overload" "overload" "numbers" "tuples"
11 "matrices" "concatenate" "crop" "row-operns" "format")
16 ("overload" "client-fns")
17 ("webui" "webvars" "compile-ps" "index" "matrixui"
18 "calcupage-buttons" "calcupage"
19 "save-restore" "reload")))
22 (name src-dir
&key
(fasl-dir src-dir
)
23 compile-all
(load-all t
) ensure-dirs
26 (make-pathname :directory src-dir
27 :name name
:type
"lisp"))
29 (make-pathname :directory fasl-dir
30 :name name
:type
"fasl")))
31 (if (and (not compile-all
)
32 (probe-file fasl-file
)
33 (< (file-write-date src-file
)
34 (file-write-date fasl-file
)))
35 (when load-all
(load fasl-file
))
38 (ensure-directories-exist fasl-file
))
40 (fasl-strm fasl-file
:direction
:output
41 :if-exists
:supersede
)
42 (compile-file src-file
:output-file fasl-strm
))
46 (file-tree src-base fasl-base
47 &key compile-all
(load-all t
)
48 &aux src-dir fasl-dir
)
52 (funcall set-dirs-fn nil
)
53 (recurse (car in-dir
) set-dirs-fn t
)
54 (dolist (x (cdr in-dir
))
55 (recurse x set-dirs-fn nil
)))
57 (file-tree set-dirs-fn ensure-dirs
)
59 (let ((tmp-src src-dir
)
61 (dir (car file-tree
)))
66 (cons dir rootless
))))
69 ;V /file-tree/ is a file's name, V
70 ;V compile it if necessary. V
74 :compile-all compile-all
76 :ensure-dirs ensure-dirs
))))
80 (setq src-dir
(append src-base rootless
)
81 fasl-dir
(append fasl-base rootless
))))))
83 (defun compile-lineal (&key compile-all
(load-all t
))
85 *file-tree
* '(:relative
"src")
87 :compile-all compile-all