| 1 |
;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- |
|---|
| 2 |
;; See the file LICENCE for licence information. |
|---|
| 3 |
(in-package #:cl-user) |
|---|
| 4 |
|
|---|
| 5 |
(defpackage #:cl-store.system |
|---|
| 6 |
(:use #:cl #:asdf) |
|---|
| 7 |
(:export #:non-required-file)) |
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
(in-package #:cl-store.system) |
|---|
| 11 |
|
|---|
| 12 |
#-(or lispworks mcl cmu clisp sbcl allegro ecl openmcl abcl) |
|---|
| 13 |
(error "This is an unsupported lisp implementation. |
|---|
| 14 |
Currently only MCL, OpenMCL, Lispworks, CMUCL, SBCL, |
|---|
| 15 |
CLISP, ECL and AllegroCL are supported.") |
|---|
| 16 |
|
|---|
| 17 |
(defclass non-required-file (cl-source-file) () |
|---|
| 18 |
(:documentation |
|---|
| 19 |
"File containing implementation dependent code which may or may not be there.")) |
|---|
| 20 |
|
|---|
| 21 |
(defun lisp-system-shortname () |
|---|
| 22 |
#+mcl :mcl #+lispworks :lispworks #+cmu :cmucl #+clisp :clisp #+sbcl :sbcl |
|---|
| 23 |
#+allegro :acl #+ecl :ecl #+openmcl :openmcl #+abcl :abcl) |
|---|
| 24 |
|
|---|
| 25 |
(defmethod component-pathname ((component non-required-file)) |
|---|
| 26 |
(let ((pathname (call-next-method)) |
|---|
| 27 |
(name (string-downcase (lisp-system-shortname)))) |
|---|
| 28 |
(merge-pathnames |
|---|
| 29 |
(make-pathname :directory (list :relative name)) |
|---|
| 30 |
pathname))) |
|---|
| 31 |
|
|---|
| 32 |
(defmethod perform ((op compile-op) (component non-required-file)) |
|---|
| 33 |
(when (probe-file (component-pathname component)) |
|---|
| 34 |
(call-next-method))) |
|---|
| 35 |
|
|---|
| 36 |
(defmethod perform ((op load-op) (component non-required-file)) |
|---|
| 37 |
(when (probe-file (component-pathname component)) |
|---|
| 38 |
(call-next-method))) |
|---|
| 39 |
|
|---|
| 40 |
(defmethod operation-done-p ((o operation) (c non-required-file)) |
|---|
| 41 |
(when (probe-file (component-pathname c)) |
|---|
| 42 |
(call-next-method))) |
|---|
| 43 |
|
|---|
| 44 |
(defsystem cl-store |
|---|
| 45 |
:name "CL-STORE" |
|---|
| 46 |
:author "Sean Ross <sross@common-lisp.net>" |
|---|
| 47 |
:maintainer "Sean Ross <sross@common-lisp.net>" |
|---|
| 48 |
:version "0.8.4" |
|---|
| 49 |
:description "Serialization package" |
|---|
| 50 |
:long-description "Portable CL Package to serialize data" |
|---|
| 51 |
:licence "MIT" |
|---|
| 52 |
:serial t |
|---|
| 53 |
:components ((:file "package") |
|---|
| 54 |
(:file "utils") |
|---|
| 55 |
#+(or abcl (and clisp (not mop))) |
|---|
| 56 |
(:file "mop") |
|---|
| 57 |
(:file "backends") |
|---|
| 58 |
(:file "plumbing") |
|---|
| 59 |
(:file "circularities") |
|---|
| 60 |
(:file "default-backend") |
|---|
| 61 |
(:non-required-file "custom"))) |
|---|
| 62 |
|
|---|
| 63 |
(defmethod perform :after ((o load-op) (c (eql (find-system :cl-store)))) |
|---|
| 64 |
(funcall (find-symbol "SETUP-SPECIAL-FLOATS" :cl-store)) |
|---|
| 65 |
(provide 'cl-store)) |
|---|
| 66 |
|
|---|
| 67 |
(defmethod perform ((op test-op) (sys (eql (find-system :cl-store)))) |
|---|
| 68 |
(oos 'load-op :cl-store-tests) |
|---|
| 69 |
(oos 'test-op :cl-store-tests)) |
|---|
| 70 |
|
|---|
| 71 |
(defsystem cl-store-tests |
|---|
| 72 |
:depends-on (rt cl-store) |
|---|
| 73 |
:components ((:file "tests"))) |
|---|
| 74 |
|
|---|
| 75 |
;; EOF |
|---|