Skip to content
asdf-classes.lisp 1.49 KiB
Newer Older
#+xcvb (module (:depends-on ("variables")))

(cl:in-package #:asdf-dependency-grovel)

(defclass instrumented-component ()
  ((translated-name :initarg :translated-name
                    :reader translated-name)
   (translated-pathname :initarg :translated-pathname-form
                        :reader translated-pathname)
   (output-file-type :initarg :output-file-type
                     :reader output-file-type)
   (additional-dependencies :initarg :additional-dependencies
                            :initform nil
                            :reader additional-dependencies)
   (overridden-dependencies :initarg :override-dependencies
                            :reader overridden-dependencies)
   (additional-initargs :initarg :additional-initargs
                        :initform nil
                        :reader additional-initargs)))

(defclass instrumented-cl-source-file (asdf:cl-source-file
                                       instrumented-component)
  ())

(defclass instrumented-module (asdf:module instrumented-component)
  ()
  (:default-initargs :default-component-class 'instrumented-cl-source-file))

(defmethod additional-initargs :around ((comp instrumented-component))
  (flet ((slot-when-bound (slot-name initarg)
           (when (slot-boundp comp slot-name)
             `(,initarg ,(slot-value comp slot-name)))))
    `(,@(call-next-method)
        ,@(slot-when-bound 'translated-name :translated-name)
        ,@(slot-when-bound 'translated-pathname :translated-pathname-form))))