1 ;;; XXX Die vielen verschiedenen Systeme hier sollten vielleicht
2 ;;; Module eines grossen Systems CXML werden?
4 (defpackage :cxml-system
6 (in-package :cxml-system)
8 (defclass closure-source-file (cl-source-file) ())
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))
17 #-(or rune-is-character rune-is-integer)
19 (format t "~&;;; Checking for wide character support...")
21 (pushnew (dotimes (x 65536
23 (format t " ok, characters have at least 16 bits.~%")
25 (unless (and (< x char-code-limit) (code-char x))
26 (format t " no, reverting to octet strings.~%")
27 (return :rune-is-integer)))
31 (format t "~&;;; Building cxml with (UNSIGNED-BYTE 16) RUNES~%")
34 (format t "~&;;; Building cxml with CHARACTER RUNES~%")
36 (defsystem :cxml-runes
37 :default-component-class closure-source-file
38 :pathname (merge-pathnames
40 (make-pathname :name nil :type nil :defaults *load-truename*))
43 (:file "definline" :depends-on ("package"))
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"))
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
61 (make-pathname :name nil :type nil :defaults *load-truename*))
64 (:file "util" :depends-on ("package"))
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)
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*))
98 (asdf:defsystem :cxml-dom
99 :default-component-class closure-source-file
100 :pathname (merge-pathnames
102 (make-pathname :name nil :type nil :defaults *load-truename*))
105 (:file rune-impl :pathname "dom-impl" :depends-on ("package"))
106 (:file rune-builder :pathname "dom-builder" :depends-on (rune-impl))
108 (utf8dom-file utf8-impl :pathname "dom-impl" :depends-on ("package"))
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
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))