Makefile.am, debian/: Initial packaging; release 0.2.0.
[sod] / src / sod.asd
index 64f331b..aae3be1 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-lisp-*-
 ;;;
-;;; System definition for the Simple Object Design translator
+;;; System definition for the Sensible Object Design translator
 ;;;
 ;;; (c) 2009 Straylight/Edgeware
 ;;;
@@ -34,7 +34,7 @@
 (defsystem sod
 
   ;; Boring copyright stuff.
-  :version "1.0.0"
+  :version "0.2.0"
   :author "Mark Wooding"
   :license "GNU General Public License, version 2 or later"
 
@@ -42,7 +42,7 @@
   :description "A Sensible Object Design for C."
 
   :long-description
-  "This system implements a fairly simple, yet powerful object system for
+  "This system implements a fairly simple, yet powerful, object system for
    plain old C.  Its main features are as follows.
 
      * Multiple inheritance, done properly (unlike C++, say), with a
     ((:file "package")
 
      ;; File location protocol (including error reporting).
-     (:file "proto-floc" :depends-on ("package"))
-     (:file "impl-floc" :depends-on ("proto-floc"))
+     (:file "floc-proto" :depends-on ("package"))
+     (:file "floc-impl" :depends-on ("floc-proto"))
 
      ;; Position-aware streams.
-     (:file "proto-streams" :depends-on ("package"))
-     (:file "impl-streams" :depends-on ("proto-streams" "proto-floc"))
+     (:file "streams-proto" :depends-on ("package"))
+     (:file "streams-impl" :depends-on ("streams-proto" "floc-proto"))
 
      ;; Scanner protocol, and various scanner implementations.
-     (:file "proto-scanner" :depends-on ("package"))
-     (:file "impl-scanner" :depends-on ("proto-scanner"))
-     (:file "impl-scanner-charbuf" :depends-on
-           ("proto-scanner" "proto-floc" "proto-streams"))
-     (:file "impl-scanner-token" :depends-on ("proto-scanner"))
+     (:file "scanner-proto" :depends-on ("package"))
+     (:file "scanner-impl" :depends-on ("scanner-proto"))
+     (:file "scanner-charbuf-impl" :depends-on
+           ("scanner-proto" "floc-proto" "streams-proto"))
+     (:file "scanner-token-impl" :depends-on ("scanner-proto"))
 
      ;; Parser notation macro support.
-     (:file "proto-parser" :depends-on ("package"))
-     (:file "impl-parser" :depends-on ("proto-parser"))
+     (:file "parser-proto" :depends-on ("package"))
+     (:file "parser-impl" :depends-on ("parser-proto"))
 
      ;; Expression parser support.
-     (:file "proto-parser-expr" :depends-on ("proto-parser"))
-     (:file "impl-parser-expr" :depends-on ("proto-parser-expr"))
+     (:file "parser-expr-proto" :depends-on ("parser-proto"))
+     (:file "parser-expr-impl" :depends-on ("parser-expr-proto"))
 
      ;; Stitching parsers to scanners.
-     (:file "impl-scanner-context" :depends-on
-           ("proto-parser" "proto-scanner"))))
+     (:file "scanner-context-impl" :depends-on
+           ("parser-proto" "scanner-proto"))))
 
-   (:file "package" :depends-on ("parser"))
+   (:file "package" :depends-on ("utilities" "parser"))
+
+   ;; Lexical analysis.
+   (:file "lexer-proto" :depends-on ("package" "parser"))
+   (:file "lexer-impl" :depends-on ("lexer-proto"))
+   (:file "fragment-parse" :depends-on ("lexer-proto"))
 
    ;; C type representation protocol.
-   (:file "proto-c-types" :depends-on ("package"))
-   (:file "impl-c-types" :depends-on ("proto-c-types"))
+   (:file "c-types-proto" :depends-on ("package"))
+   (:file "c-types-impl" :depends-on ("c-types-proto"))
+   (:file "c-types-parse" :depends-on
+         ("c-types-proto" "c-types-class-impl" "fragment-parse"))
 
    ;; Property set protocol.
-   (:file "proto-pset" :depends-on ("package"))
-   (:file "impl-pset" :depends-on ("proto-pset"))
-
-   ;; Lexical analysis.
-   ;;(:file "proto-lexer" :depends-on ("parser"))
-   ;;(:file "impl-lexer" :depends-on ("proto-lexer"))
+   (:file "pset-proto" :depends-on ("package"))
+   (:file "pset-impl" :depends-on ("pset-proto"))
+   (:file "pset-parse" :depends-on ("pset-proto" "lexer-proto"))
 
    ;; Code generation protocol.
-   (:file "proto-codegen" :depends-on ("package"))
-   (:file "impl-codegen" :depends-on ("proto-codegen"))
+   (:file "codegen-proto" :depends-on ("module-proto"))
+   (:file "codegen-impl" :depends-on ("codegen-proto"))
 
    ;; Modules.
-   (:file "proto-module" :depends-on ("package"))
-   (:file "impl-module" :depends-on
-         ("proto-module" "proto-pset" "impl-c-types-class" "builtin"))
-   (:file "builtin" :depends-on ("proto-module" "proto-pset" "classes"
-                                "impl-c-types" "impl-c-types-class"))
+   (:file "module-proto" :depends-on ("package"))
+   (:file "module-impl" :depends-on
+         ("module-proto" "pset-proto" "c-types-class-impl" "builtin"))
+   (:file "builtin" :depends-on
+         ("module-proto" "pset-proto" "c-types-impl" "c-types-class-impl"
+          "classes" "class-layout-proto"))
+   (:file "module-parse" :depends-on
+         ("class-make-proto" "class-finalize-proto"
+          "fragment-parse" "lexer-proto" "module-impl"))
+   (:file "module-output" :depends-on ("module-impl" "output-proto"))
 
    ;; Output.
-   (:file "proto-output" :depends-on ("package"))
-   (:file "impl-output" :depends-on ("proto-output"))
+   (:file "output-proto" :depends-on ("package"))
+   (:file "output-impl" :depends-on ("output-proto"))
 
    ;; Class representation.
-   (:file "classes" :depends-on ("package" "proto-c-types"))
-   (:file "impl-c-types-class" :depends-on ("classes" "proto-module"))
+   (:file "classes" :depends-on ("package" "c-types-proto"))
+   (:file "c-types-class-impl" :depends-on ("classes" "module-proto"))
    (:file "class-utilities" :depends-on
-         ("classes" "impl-codegen" "impl-pset"
-          "impl-c-types" "impl-c-types-class"))
+         ("classes" "codegen-impl" "pset-impl"
+          "c-types-impl" "c-types-class-impl"))
 
    ;; Class construction.
-   (:file "proto-class-make" :depends-on ("class-utilities"))
-   (:file "impl-class-make" :depends-on ("proto-class-make"))
+   (:file "class-make-proto" :depends-on ("class-utilities"))
+   (:file "class-make-impl" :depends-on ("class-make-proto"))
 
    ;; Class layout.
-   (:file "proto-class-layout" :depends-on ("class-utilities"))
-   (:file "impl-class-layout" :depends-on
-         ("proto-class-layout" "proto-method"))
+   (:file "class-layout-proto" :depends-on ("class-utilities"))
+   (:file "class-layout-impl" :depends-on
+         ("class-layout-proto" "method-proto"))
 
    ;; Class finalization.
-   (:file "proto-class-finalize" :depends-on ("class-utilities"))
-   (:file "impl-class-finalize" :depends-on ("proto-class-finalize"))
+   (:file "class-finalize-proto" :depends-on ("class-utilities"))
+   (:file "class-finalize-impl" :depends-on ("class-finalize-proto"))
 
    ;; Method generation.
-   (:file "proto-method" :depends-on ("class-utilities"))
-   (:file "impl-method" :depends-on ("proto-method"))
+   (:file "method-proto" :depends-on ("class-make-proto"))
+   (:file "method-impl" :depends-on ("method-proto"))
+   (:file "method-aggregate" :depends-on ("method-impl"))
 
    ;; Class output.
-   (:file "output-class" :depends-on ("proto-output" "classes"))))
+   (:file "class-output" :depends-on
+         ("classes" "class-layout-impl" "method-impl" "output-proto"))
+
+   ;; Debugging and interactive testing.
+   (:file "debug" :depends-on ("builtin" "module-output"))))
 
 ;;;--------------------------------------------------------------------------
 ;;; Testing.
 
 (defmethod perform ((op test-op) (component (eql (find-system "sod"))))
-  (operate 'test-op "sod-test" :force t))
+  (declare (ignore op component))
+  (handler-bind (((or warning style-warning)
+                 (lambda (cond)
+                   (declare (ignore cond))
+                   (invoke-restart 'muffle-warning))))
+    (operate 'test-op "sod-test")))
 
 ;;;----- That's all, folks --------------------------------------------------