Skip to content
xcvb.asd 5.64 KiB
Newer Older
Spencer Brody's avatar
Spencer Brody committed
;;; -*- mode: lisp -*-

(in-package :asdf)
#-asdf2 (error "XCVB requires ASDF 2")

(let ((old-ver (asdf-version)))
	(ver (asdf-version)))
    (unless (or (version-satisfies old-ver "2.014.8") ; first version to do magic upgrade
		(equal ver old-ver))
      (error "You must upgrade ASDF to your latest *before* you load XCVB~%~
		If you're trying to load XCVB at a REPL, try again, it should work."))
    (unless (and ver (version-satisfies ver min))
      (error "XCVB requires ASDF ~D or later, you only have ~D" min ver))))
(when (plusp (length (getenv "XCVB_FARMER")))
  (pushnew :xcvb-farmer *features*))

Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
(map () 'require
     '(;; Actually used by XCVB
       :sb-grovel :sb-posix :sb-sprof
       ;; Used by SLIME
       :sb-cltl2 :sb-introspect :sb-bsd-sockets))
(proclaim '(optimize (speed 2) (safety 3) (debug 3) (compilation-speed 0)))

    :author ("Francois-Rene Rideau" "Spencer Brody" "Joyce Chen")
    :maintainer "Francois-Rene Rideau"
Spencer Brody's avatar
Spencer Brody committed
    :licence "MIT"
    :description "XCVB"
    :long-description "an eXtensible Component Verifier and Builder for Lisp.
XCVB provides a scalable system to build large software in Lisp, featuring
deterministic separate compilation and enforced locally-declared dependencies."
    :defsystem-depends-on (:asdf :xcvb-driver :xcvb-bootstrap
                                 :asdf-condition-control :asdf-encodings)
    :depends-on (:asdf :xcvb-driver :xcvb-utils :lambda-reader
                 :fare-mop :fare-memoization
                 :fare-quasiquote-extras
                 :ironclad :binascii :babel
Spencer Brody's avatar
Spencer Brody committed
    :components
    ((:file "version")
     (:file "pkgdcl" :depends-on ("version"))
     (:file "conditions" :depends-on ("pkgdcl"))
     (:file "macros" :depends-on ("pkgdcl"))
     (:file "utilities" :depends-on ("macros"))
     (:file "logging" :depends-on ("specials"))
     (:file "commands" :depends-on ("specials" "macros"))
     (:file "string-escape" :depends-on ("utilities"))
     (:file "virtual-pathnames" :depends-on ("specials" "utilities"))
     (:file "grain-interface" :depends-on ("utilities" "conditions"))
     (:file "grain-sets" :depends-on ("grain-interface"))
     (:file "grain-registry" :depends-on ("grain-interface" "specials"))
     (:file "source-registry" :depends-on ("grain-registry" "commands"))
     (:file "computations" :depends-on ("grain-interface" "grain-registry"))
     (:file "manifest" :depends-on ("macros" "virtual-pathnames" "commands"))
     (:file "extract-target-properties" :depends-on ("specials" "string-escape" "grain-interface"))
     (:file "grain-implementation" :depends-on ("grain-registry" "extract-target-properties"))
     (:file "names" :depends-on ("grain-registry" "grain-interface"))
     (:file "normalize-dependency" :depends-on ("names" "grain-interface"))
     (:file "traversal" :depends-on ("names" "computations"))
     (:file "change-detection" :depends-on ("traversal"))
     (:file "dependencies-interpreter" :depends-on ("normalize-dependency" "traversal"))
     (:file "pathname-mappings" :depends-on ("specials" "grain-interface"))
     (:file "static-traversal" :depends-on ("grain-sets" "dependencies-interpreter"))
     (:file "external-commands" :depends-on ("specials" "utilities" "grain-interface"))
     (:file "target-lisp-commands" :depends-on ("specials" "utilities" "grain-interface" "external-commands"))
     (:file "run-program-backend" :depends-on ("profiling" "static-traversal" "target-lisp-commands"
					       "computations" "commands" "virtual-pathnames"))
            :depends-on ("profiling" "static-traversal" "target-lisp-commands" "computations"
                         "extract-target-properties" "commands" "virtual-pathnames" "specials"))
     (:file "blaze-backend"
            :depends-on ("profiling" "static-traversal" "target-lisp-commands" "computations"
                         "extract-target-properties" "commands" "virtual-pathnames" "specials"))
     (:file "simplifying-traversal" :depends-on ("traversal" "dependencies-interpreter"))
     (:file "list-files" :depends-on ("simplifying-traversal" "commands"))
     (:file "asdf-backend" :depends-on ("simplifying-traversal" "logging" "commands"))
     (:file "ne-makefile-backend" :depends-on ("commands" "makefile-backend"
                                               "asdf-backend" "simplifying-traversal"))
     (:file "asdf-converter" :depends-on ("commands" "grain-interface" "source-registry"))
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
     (:file "self-upgrade" :depends-on ("commands"))
     (:file "slave" :depends-on ("commands"))
     #+xcvb-farmer
     (:file "farmer"
            :depends-on ("profiling" "commands" "target-lisp-commands" "external-commands"
                                     "grain-interface" "dependencies-interpreter"))
     (:file "cffi-grovel-support" :depends-on
            ("makefile-backend" "static-traversal" "computations" "target-lisp-commands"
                                "grain-implementation" "asdf-backend" "dependencies-interpreter"))
     (:file "main" :depends-on ("commands"))))

(defmethod perform ((op test-op) (c (eql (find-system :xcvb))))
  (asdf:load-system :xcvb-test)
  (xcvb-driver:call :xcvb-test :unit-tests)
  (xcvb-driver:call :xcvb-test :validate-xcvb-dir-all-lisps))