lib/sod.h: New macro `SOD_INSTBASE' to find the allocated base address.
[sod] / pre-reorg / sod.asd
CommitLineData
abdf50aa
MW
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"))
1f1d88f5 74 (:file "codegen" :depends-on ("c-types"))
abdf50aa 75 (:file "posn-stream" :depends-on ("utilities"))
1f1d88f5
MW
76 (:file "errors" :depends-on ("posn-stream"))
77 (:file "lex" :depends-on ("posn-stream" "errors"))
abdf50aa 78 (:file "pset" :depends-on ("lex"))
1f1d88f5
MW
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"))
dea4d055
MW
85 (:file "module" :depends-on ("parse-c-types" "class-defs" "tables"))
86 (:file "builtin" :depends-on ("module" "class-layout"))
1f1d88f5 87 (:file "output" :depends-on ("module"))
dea4d055
MW
88 (:file "methods" :depends-on ("class-layout" "codegen" "output"))
89 (:file "class-output" :depends-on ("builtin" "class-builder"
90 "methods" "output"))
91 (:file "combination" :depends-on ("methods"))
92 (:file "module-output" :depends-on ("combination" "class-output"))))
abdf50aa
MW
93
94;;;----- That's all, folks --------------------------------------------------