2 ;V Just make the package exist here, V
3 ;V define its guts later in globals.lisp V
6 (defpackage :lineal.devvars
8 (:export
*src-tree
* compile-if-new
9 compile-tree load-tree
))
11 (in-package :lineal.devvars
)
13 (defparameter *src-tree
*
15 ("math" "math" "tuples" "matrices" "row-operns" "format")
16 ("overload" "overload" "numbers" "tuples"
17 "matrices" "row-operns" "format" "concatenate" "crop")
21 ("overload" "client-fns")
22 ("webui" "webvars" "compile-ps" "index" "matrixui"
23 "calcupage" "save-restore" "reload")))
25 (defun load-tree (s &optional
(dir nil
))
28 (setq dir
`(,@dir
,(car s
)))
32 :directory dir
:name s
))))
35 (str srcdir
&optional
(or-if-old nil
)
36 &aux src-write fasl-write
37 (src-name (make-pathname
39 :name
(concatenate 'string str
".lisp")))
40 (fasl-name (make-pathname
42 :name
(concatenate 'string str
".fasl"))))
43 ;V get source file's write time.V
45 (f src-name
:if-does-not-exist nil
)
46 (setq src-write
(file-write-date f
)))
47 ;V get binary file's write time.V
49 (f fasl-name
:if-does-not-exist nil
)
50 (when f
(setq fasl-write
(file-write-date f
))))
51 ;V if needs refresh, do it.V
52 (if (or or-if-old
(not fasl-write
) (not src-write
)
53 (< fasl-write src-write
))
54 (compile-file src-name
)
57 (defun compile-tree (s &optional
(comp-old nil
) (dir nil
))
60 (setq dir
`(,@dir
,(car s
)))
62 (compile-tree x comp-old dir
)))
63 (compile-if-new s dir comp-old
)))