From: espen Date: Wed, 2 Jan 2008 15:35:32 +0000 (+0000) Subject: Binding of dynamic variables during perform X-Git-Tag: clg-0-93~33 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/commitdiff_plain/9f47de566a8e69b478c6643eefded08ddf59e2c6 Binding of dynamic variables during perform --- diff --git a/tools/asdf-extensions.lisp b/tools/asdf-extensions.lisp index 5b6870c..94da8c7 100644 --- a/tools/asdf-extensions.lisp +++ b/tools/asdf-extensions.lisp @@ -1,6 +1,6 @@ (in-package :asdf) -(export '*dso-extension*) +(export '(*dso-extension* *operation* *system* *component*)) (defparameter *dso-extension* #-(or darwin win32)"so" #+darwin"dylib" #+win32"dll") @@ -169,3 +169,16 @@ (defmethod operation-done-p ((o load-op) (lib library)) (defmethod operation-done-p ((o operation) (lib library)) t) + + +;;; Binding of dynamic variables during perform + +(defvar *operation* nil) +(defvar *system* nil) +(defvar *component* nil) + +(defmethod perform :around ((operation operation) (c component)) + (let ((*operation* operation) + (*component* c) + (*system* (component-system c))) + (call-next-method)))