chiark / gitweb /
Another day, another commit.
[sod] / sod.asd
1 ;;; -*-lisp-*-
2 ;;;
3 ;;; System definition for SOD
4 ;;;
5 ;;; (c) 2009 Straylight/Edgeware
6 ;;;
7
8 ;;;----- Licensing notice ---------------------------------------------------
9 ;;;
10 ;;; This file is part of the Simple Object Definition system.
11 ;;;
12 ;;; SOD is free software; you can redistribute it and/or modify
13 ;;; it under the terms of the GNU General Public License as published by
14 ;;; the Free Software Foundation; either version 2 of the License, or
15 ;;; (at your option) any later version.
16 ;;;
17 ;;; SOD is distributed in the hope that it will be useful,
18 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 ;;; GNU General Public License for more details.
21 ;;;
22 ;;; You should have received a copy of the GNU General Public License
23 ;;; along with SOD; if not, write to the Free Software Foundation,
24 ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25
26 (cl:defpackage #:sod-package
27   (:use #:common-lisp #:asdf))
28
29 (cl:in-package #:sod-package)
30
31 ;;;--------------------------------------------------------------------------
32 ;;; Definition.
33
34 (defsystem sod
35
36   ;; Boring copyright stuff.
37   :version "1.0.0"
38   :author "Mark Wooding"
39   :license "GNU General Public License, version 2 or later"
40
41   ;; Documentation.
42   :description "A Sensible Object Definition for C."
43
44   :long-description
45   "This system implements a fairly simple, yet powerful object system for
46    plain old C.  Its main features are as follows.
47
48      * Multiple inheritance, done properly (unlike C++, say), with a
49        superclass linearlization algorithm, and exactly one copy of any
50        superclass's slots.
51
52      * Method combinations, and multiple flavours of methods, to make mixin
53        classes more useful.
54
55      * The default method combination doesn't depend on the programmer
56        statically predicting which superclass's method to delegate to.
57        Multiple inheritance makes this approach (taken by C++) fail: the
58        right next method might be an unknown sibling, and two siblings might
59        be in either order depending on descendents.
60
61      * Minimal runtime support requirements, so that it's suitable for use
62        wherever C is -- e.g., interfacing to other languages."
63
64   ;; And now for how to build it.
65   ;;
66   ;; The big tables in parser.lisp need to be earlier.  CLEAR-THE-DECKS ought
67   ;; to do more stuff, including calling BOOTSTRAP-CLASSES.  Generally, the
68   ;; code isn't very well organized at the moment.
69   :components
70   ((:file "package")
71    (:file "utilities" :depends-on ("package"))
72    (:file "tables" :depends-on ("package"))
73    (:file "c-types" :depends-on ("utilities"))
74    (:file "codegen" :depends-on ("c-types"))
75    (:file "posn-stream" :depends-on ("utilities"))
76    (:file "errors" :depends-on ("posn-stream"))
77    (:file "lex" :depends-on ("posn-stream" "errors"))
78    (:file "pset" :depends-on ("lex"))
79    (:file "parse-c-types" :depends-on ("lex" "c-types" "tables"))
80    (:file "class-defs" :depends-on ("parse-c-types"))
81    (:file "cpl" :depends-on ("class-defs"))
82    (:file "class-finalize" :depends-on ("class-defs" "cpl"))
83    (:file "class-builder" :depends-on ("class-finalize" "pset"))
84    (:file "class-layout" :depends-on ("class-defs"))
85    (:file "module" :depends-on ("parse-c-types" "tables"))
86    (:file "output" :depends-on ("module"))
87    (:file "class-output" :depends-on ("class-layout" "output"))))
88
89 ;;;----- That's all, folks --------------------------------------------------