diff --git a/cxml.asd b/cxml.asd index 95921fc..fa834ff 100644 --- a/cxml.asd +++ b/cxml.asd @@ -7,13 +7,31 @@ (defmethod asdf:component-name ((c dummy-cxml-component)) :cxml) -;; force loading of closure-common.asd, which installs *FEATURES* this -;; file depends on. Use MISSING-DEPENDENCY for asdf-install. -(unless (find-system :closure-common nil) - (error 'missing-dependency - :required-by (make-instance 'dummy-cxml-component) - :version nil - :requires :closure-common)) +(progn + (format t "~&;;; Checking for wide character support...") + (force-output) + (flet ((test (code) + (and (< code char-code-limit) (code-char code)))) + (cond + ((not (test 50000)) + (format t " no, reverting to octet strings.~%") + #+rune-is-character + (error "conflicting unicode configuration. Please recompile.") + (pushnew :rune-is-integer *features*)) + ((code-char 70000) + (when (test #xD800) + (format t " WARNING: Lisp implementation doesn't use UTF-16, ~ + but accepts surrogate code points.~%")) + (format t " yes, using code points.~%") + #+(or rune-is-integer rune-is-utf-16) + (error "conflicting unicode configuration. Please recompile.") + (pushnew :rune-is-character *features*)) + (t + (format t " yes, using UTF-16.~%") + #+(or rune-is-integer (and rune-is-character (not rune-is-utf-16))) + (error "conflicting unicode configuration. Please recompile.") + (pushnew :rune-is-utf-16 *features*) + (pushnew :rune-is-character *features*))))) (defclass closure-source-file (cl-source-file) ())