3 (setq *read-default-float-format
* 'double-float
)
5 ;;; Just make the package exist here,
6 ;;; define its guts later in globals.lisp
9 (defpackage :lineal.devvars
11 (:export
*file-tree
* compile-if-new compile-lineal
))
13 (in-package :lineal.devvars
)
15 ;;; When extending lineal, add files to this list.
16 (defparameter *file-tree
*
17 '(("math" "math";< :lineal.math
18 :lineal.math
"counting" "tuples"
19 "matrices" "row-operns" "format")
20 ("overload" "overload";< :lineal.overload
21 :lineal.overload
"numbers" "tuples" "matrices")
24 ("overload" "concatenate" "crop" "row-operns" "format")
30 ("overload" :lineal.overload
"client-fns")
34 (name src-dir
&key
(fasl-dir src-dir
)
35 compile-all
(load-all t
) ensure-dirs
38 (make-pathname :directory src-dir
39 :name name
:type
"lisp"))
41 (make-pathname :directory fasl-dir
42 :name name
:type
"fasl")))
43 #-sbcl
(load src-file
)
44 ;; todo: this should be handled better,
45 ;; even if loading is superfast.
47 (if (and (not compile-all
)
48 (probe-file fasl-file
)
49 (< (file-write-date src-file
)
50 (file-write-date fasl-file
)))
51 (when load-all
(load fasl-file
))
54 (ensure-directories-exist fasl-dir
))
56 (fasl-strm fasl-file
:direction
:output
57 :if-exists
:supersede
)
58 (compile-file src-file
:output-file fasl-strm
))
62 (file-tree src-dir fasl-dir
63 &key compile-all
(load-all t
)
64 &aux
(src-tail (last src-dir
))
65 (fasl-tail (last fasl-dir
)))
69 (ensure-directories-exist
70 (make-pathname :directory fasl-dir
))
71 (let ((*package
* *package
*))
79 ;; We have a new directory to recurse.
80 (let ((tmp-src-tail src-tail
)
81 (tmp-fasl-tail fasl-tail
)
82 (dirtail (list (car file-tree
))))
83 (setq src-tail
(setf (cdr src-tail
) dirtail
)
84 fasl-tail
(setf (cdr fasl-tail
) dirtail
))
85 (ensure-first (cdr file-tree
))
86 (setq src-tail
(rplacd tmp-src-tail nil
)
87 fasl-tail
(rplacd tmp-fasl-tail nil
))))
89 ;; Use a different package
90 ;; for loading subsequent files.
91 (setq *package
* (find-package file-tree
)))
93 ;; /file-tree/ is a file's name,
94 ;; compile it if necessary.
98 :compile-all compile-all
99 :load-all load-all
)))))
100 (ensure-first file-tree
)))
102 ;;; Just compile the whole program.
103 (defun compile-lineal (&key compile-all
(load-all t
))
105 *file-tree
* '(:relative
"src")
107 :compile-all compile-all