anchor.diff: +(cl:defpackage :cl-bodge.def
  +  (:use :cl))
  +(cl:in-package :cl-bodge.def)
  +
  +;;;
  +;;; UTILITIES
  +;;;
  +
  +(defclass bodge-system (asdf:system)
  +  ((requires :initarg :requires :initform nil)))
  +
  +;;;
  +;;; When lurking for dependencies, but before their loading, load bodge system :requires
  +;;;
  +(defmethod #-asdf3.2 asdf/plan:plan-record-dependency
  +           #+asdf3.2 asdf/plan:record-dependency
  +    :before (plan (o asdf:load-op) (c bodge-system))
  +  (with-slots (requires) c
  +    (loop for system in requires
  +             if (asdf:find-system system nil)
  +             do (asdf:operate 'asdf:load-op system)
  +             else
  +             do (error 'asdf:missing-dependency
  +                          :required-by c
  +                          :requires system))))
  +
  +;;;
  +;;; Add :requires into explicit dependencies for tools to discover them
  +;;;
  +(defmethod asdf:system-depends-on ((c bodge-system))
  +  (with-slots (requires) c
  +    (flet ((to-downcased-name (name)
  +                (etypecase name
  +                  (symbol (string-downcase (symbol-name name)))
  +                  (string (string-downcase name)))))
  +      (append (mapcar #'to-downcased-name requires) (call-next-method)))))
  +
  +;;;
  +;;; BODGE DEFINITIONS
  +;;;
   (asdf:defsystem cl-bodge/utils
     :description "Bodacious Game Engine various utilities"
     :version "0.4.0"
  
positive.code:   :author "Pavel Korolev"
    :mailto "dev@borodust.org"
    :license "MIT"
    :defsystem-depends-on (cl-bodge-support)
    :class bodge-system
    :requires (bodge-blobs/physics)
    :depends-on (cl-bodge/engine bodge-ode log4cl bodge-autowrap bodge-plus-c local-time)
  
negative.code:   :author "Pavel Korolev"
    :mailto "dev@borodust.org"
    :license "MIT"
    :class bodge-system
    :requires (bodge-blobs/canvas)
    :depends-on (cl-bodge/engine cl-bodge/utils cl-bodge/graphics
  