summaryrefslogtreecommitdiff
path: root/csys/cache-structs.scm
diff options
context:
space:
mode:
Diffstat (limited to 'csys/cache-structs.scm')
-rw-r--r--csys/cache-structs.scm48
1 files changed, 48 insertions, 0 deletions
diff --git a/csys/cache-structs.scm b/csys/cache-structs.scm
new file mode 100644
index 0000000..ba38840
--- /dev/null
+++ b/csys/cache-structs.scm
@@ -0,0 +1,48 @@
+;;; these structures deal with the compilation system and the unit cache.
+
+;;; An entry in the unit cache:
+
+(define-struct ucache
+ (slots
+ (ufile (type string)) ; the name of the file containing the unit definition
+ (cifile (type string)) ; the filename of the (compiled) interface file
+ (sifile (type string)) ; the filename of the (uncompiled) interface file
+ (cfile (type string)) ; the filename of the (compiled) output file
+ (sfile (type string)) ; the filename of the (uncompiled) output file
+ (udate (type integer)) ; the write date of ufile
+ (idate (type integer)) ; the time stamp of the binary interface file
+ (stable? (type bool)) ; the stable flag
+ (load-prelude? (type bool)) ; true if unit uses standard prelude
+ ;; status is initially available (in cache). It is set to loading when
+ ;; requested and loaded once all imported units are loaded.
+ (status (type (enum loaded loading available)))
+ (ifile-loaded (type bool)) ; true when interface is loaded (modules)
+ (code-loaded (type bool)) ; true when the associated code is in memory
+ (source-files (type (list string))) ; source files in the unit
+ (imported-units (type (list string))) ; the filenames of imported unit files
+ (lisp-files (type (list (tuple string string)))) ; source/binary pairs
+ (modules (type (list module)))
+ (printers-set? (type bool))
+ (printers (type (list symbol)))
+ (optimizers-set? (type bool))
+ (optimizers (type (list symbol)))
+ (chunk-size (type (maybe int)))
+ ))
+
+
+;;; This is used to hold various flags used by the compilation system,
+;;; instead of passing them all as individual arguments.
+
+(define-struct cflags
+ (slots
+ ;; Whether to load code for unit into core
+ (load-code? (type bool) (default '#t))
+ ;; Whether to create an output code file.
+ (write-code? (type bool) (default '#t))
+ ;; Affects whether write-code? creates a source or compiled file,
+ ;; and whether load-code? uses the interpreter or compiler.
+ ;; Ignored if load-code? and write-code? are both false.
+ (compile-code? (type bool) (default '#t))
+ ;; Whether to create an output interface file.
+ (write-interface? (type bool) (default '#t))
+ ))