git.fiddlerwoaroof.com
Raw Blame History
;;; 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))
    ))