arnesi
(defclass clean-op (asdf:operation)
((for-op :accessor for-op :initarg :for-op :initform 'asdf:compile-op))
(:documentation "Removes any files generated by an asdf component."))
(defmethod asdf:perform ((op clean-op) (c asdf:component))
"Delete all the output files generated by the component C."
(dolist (f (asdf:output-files (make-instance (for-op op)) c))
(when (probe-file f)
(delete-file f))))
(defmethod asdf:operation-done-p ((op clean-op) (c asdf:component))
"Returns T when the output-files of (for-op OP) C don't exist."
(dolist (f (asdf:output-files (make-instance (for-op op)) c))
(when (probe-file f) (return-from asdf:operation-done-p nil)))
t)