release
[cxml/s11.git] / cxml.asd
blob4b85a45411e20c493f770a3f8c9c2452ef582b61
1 ;;; XXX Die vielen verschiedenen Systeme hier sollten vielleicht
2 ;;; Module eines grossen Systems CXML werden?
4 (defpackage :cxml-system
5   (:use :asdf :cl))
6 (in-package :cxml-system)
8 (defclass closure-source-file (cl-source-file) ())
10 #+sbcl
11 (defmethod perform :around ((o compile-op) (s closure-source-file))
12   ;; shut up already.  Correctness first.
13   (handler-bind ((sb-ext:compiler-note #'muffle-warning))
14     (let (#+sbcl (*compile-print* nil))
15       (call-next-method))))
17 #-(or rune-is-character rune-is-integer)
18 (progn
19   (format t "~&;;; Checking for wide character support...")
20   (force-output)
21   (pushnew (dotimes (x 65536
22                       (progn
23                         (format t " ok, characters have at least 16 bits.~%")
24                         :rune-is-character))
25              (unless (and (< x char-code-limit) (code-char x))
26                (format t " no, reverting to octet strings.~%")
27                (return :rune-is-integer)))
28            *features*))
30 #-rune-is-character
31 (format t "~&;;; Building cxml with (UNSIGNED-BYTE 16) RUNES~%")
33 #+rune-is-character
34 (format t "~&;;; Building cxml with CHARACTER RUNES~%") 
36 (defsystem :cxml-runes
37     :default-component-class closure-source-file
38     :pathname (merge-pathnames
39                "runes/"
40                (make-pathname :name nil :type nil :defaults *load-truename*))
41     :components
42     ((:file "package")
43      (:file "definline" :depends-on ("package"))
44      (:file runes
45             :pathname
46              #-rune-is-character "runes"
47              #+rune-is-character "characters"
48             :depends-on ("package" "definline"))
49      #+rune-is-integer (:file "utf8" :depends-on ("package"))
50      (:file "syntax" :depends-on ("package" "definline" runes))
51      (:file "encodings" :depends-on ("package"))
52      (:file "encodings-data" :depends-on ("package" "encodings"))
53      (:file "xstream"
54             :depends-on ("package" "definline" "syntax" "encodings-data"))
55      (:file "ystream" :depends-on (runes))))
57 (asdf:defsystem :cxml-xml
58     :default-component-class closure-source-file
59     :pathname (merge-pathnames
60                "xml/"
61                (make-pathname :name nil :type nil :defaults *load-truename*))
62     :components
63     ((:file "package")
64      (:file "util"            :depends-on ("package"))
65      (:file "sax-handler")
66      (:file "characters"      :depends-on ("package"))
67      (:file "xml-name-rune-p" :depends-on ("package"))
68      (:file "split-sequence"  :depends-on ("package"))
69      (:file "xml-parse"       :depends-on ("package" "util" "sax-handler" "split-sequence" "xml-name-rune-p" "characters"))
70      (:file "unparse"         :depends-on ("xml-parse"))
71      (:file "xmls-compat"     :depends-on ("xml-parse"))
72      (:file "recoder"         :depends-on ("xml-parse"))
73      (:file "xmlns-normalizer" :depends-on ("xml-parse"))
74      (:file "space-normalizer" :depends-on ("xml-parse"))
75      (:file "catalog"         :depends-on ("xml-parse"))
76      (:file "sax-proxy"       :depends-on ("xml-parse")))
77     :depends-on (:cxml-runes :puri :trivial-gray-streams))
79 (defclass utf8dom-file (closure-source-file) ((of)))
81 (defmethod output-files ((operation compile-op) (c utf8dom-file))
82   (let* ((normal (car (call-next-method)))
83          (name (concatenate 'string (pathname-name normal) "-utf8"))
84          (of (make-pathname :name name :defaults normal)))
85     (setf (slot-value c 'of) of)
86     (list of)))
88 (defmethod perform ((o load-op) (c utf8dom-file))
89   (load (slot-value c 'of)))
91 (defvar *utf8-runes-readtable*)
93 (defmethod perform ((operation compile-op) (c utf8dom-file))
94   (let ((*features* (cons 'utf8dom-file *features*))
95         (*readtable* *utf8-runes-readtable*))
96     (call-next-method)))
98 (asdf:defsystem :cxml-dom
99     :default-component-class closure-source-file
100     :pathname (merge-pathnames
101                "dom/"
102                (make-pathname :name nil :type nil :defaults *load-truename*))
103     :components
104     ((:file "package")
105      (:file rune-impl :pathname "dom-impl" :depends-on ("package"))
106      (:file rune-builder :pathname "dom-builder" :depends-on (rune-impl))
107      #+rune-is-integer
108      (utf8dom-file utf8-impl :pathname "dom-impl" :depends-on ("package"))
109      #+rune-is-integer
110      (utf8dom-file utf8-builder :pathname "dom-builder" :depends-on (utf8-impl))
111      (:file "dom-sax"         :depends-on ("package")))
112     :depends-on (:cxml-xml))
114 (asdf:defsystem :cxml-test
115     :default-component-class closure-source-file
116     :pathname (merge-pathnames
117                "test/"
118                (make-pathname :name nil :type nil :defaults *load-truename*))
119     :components ((:file "domtest") (:file "xmlconf"))
120     :depends-on (:cxml-xml :cxml-dom))
122 (asdf:defsystem :cxml :components () :depends-on (:cxml-dom :cxml-test))