X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/b133c3a76f14ae9d29402af48b2b80cecec5a200..3e4f39aed54688e361ada3e73be676ca1fb5dfb7:/tools/asdf-extensions.lisp diff --git a/tools/asdf-extensions.lisp b/tools/asdf-extensions.lisp index 5b6870c..c315dc4 100644 --- a/tools/asdf-extensions.lisp +++ b/tools/asdf-extensions.lisp @@ -1,10 +1,12 @@ (in-package :asdf) -(export '*dso-extension*) +(export '(*absolute-paths-as-default* *dso-extension* + *operation* *system* *component*)) (defparameter *dso-extension* #-(or darwin win32)"so" #+darwin"dylib" #+win32"dll") +(defparameter *absolute-paths-as-default* nil) ;;; The following code is more or less copied from sb-bsd-sockets.asd, ;;; but extended to allow flags to be set in a general way. The class @@ -13,7 +15,8 @@ (defclass shared-object (module) ((ldflags :initform nil :initarg :ldflags) - (absolute :initform nil :initarg :absolute :reader absolute-p))) + (absolute :initform *absolute-paths-as-default* + :initarg :absolute :reader absolute-p))) (defun ensure-namestring (pathname) (namestring @@ -131,7 +134,8 @@ (defclass library (component) ((libdir :initarg :libdir :initform nil) (libname :initarg :libname :initform nil) - (absolute :initform nil :initarg :absolute :reader absolute-p))) + (absolute :initform *absolute-paths-as-default* + :initarg :absolute :reader absolute-p))) (defun split-path (path) @@ -169,3 +173,16 @@ (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)))