1 (defpackage :closure-common-system
3 (:export #:*utf8-runes-readtable*))
5 (in-package :closure-common-system)
7 (defvar *utf8-runes-readtable*)
9 (defclass closure-source-file (cl-source-file) ())
12 (defmethod perform :around ((o compile-op) (s closure-source-file))
13 ;; shut up already. Correctness first.
14 (handler-bind ((sb-ext:compiler-note #'muffle-warning))
15 (let (#+sbcl (*compile-print* nil))
18 #-(or rune-is-character rune-is-integer)
20 (format t "~&;;; Checking for wide character support...")
22 (pushnew (dotimes (x 65536
24 (format t " ok, characters have at least 16 bits.~%")
26 (unless (or (<= #xD800 x #xDFFF)
27 (and (< x char-code-limit) (code-char x)))
29 (format t " no, reverting to octet strings.~%")
30 (return :rune-is-integer)))
34 (format t "~&;;; Building Closure with (UNSIGNED-BYTE 16) RUNES~%")
37 (format t "~&;;; Building Closure with CHARACTER RUNES~%")
39 (defsystem :closure-common
40 :default-component-class closure-source-file
47 #-rune-is-character "runes"
48 #+rune-is-character "characters")
49 #+rune-is-integer (:file "utf8")
51 #-x&y-streams-are-stream (:file "encodings")
52 #-x&y-streams-are-stream (:file "encodings-data")
53 #-x&y-streams-are-stream (:file "xstream")
54 #-x&y-streams-are-stream (:file "ystream")
55 #+x&y-streams-are-stream (:file #+scl "stream-scl")
57 :depends-on (#-scl :trivial-gray-streams))