/[mcclim]/mcclim/mcclim.asd
ViewVC logotype

Contents of /mcclim/mcclim.asd

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.31 - (show annotations)
Sun Nov 5 18:22:07 2006 UTC (7 years, 5 months ago) by dlichteblau
Branch: MAIN
Changes since 1.30: +1 -1 lines
update gtkairo build order
1 ;;; -*- Mode: Lisp -*-
2
3 ;;; (c) copyright 1998,1999,2000 by Michael McDonald (mikemac@mikemac.com)
4 ;;; (c) copyright 2000 by
5 ;;; Robert Strandh (strandh@labri.u-bordeaux.fr)
6 ;;; (c) copyright 2005 by
7 ;;; Andreas Fuchs (asf@boinkor.net)
8 ;;;
9 ;;; This library is free software; you can redistribute it and/or
10 ;;; modify it under the terms of the GNU Library General Public
11 ;;; License as published by the Free Software Foundation; either
12 ;;; version 2 of the License, or (at your option) any later version.
13 ;;;
14 ;;; This library is distributed in the hope that it will be useful,
15 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 ;;; Library General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU Library General Public
20 ;;; License along with this library; if not, write to the
21 ;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 ;;; Boston, MA 02111-1307 USA.
23
24
25 ;;; Really, I wouldn't bother with anything but ASDF. Almost every lisp
26 ;;; ships with it, and it has the added benefit of ASDF-INSTALL.
27 ;;; Get ASDF, and be welcome to the 21st century. -- [2005-01-31:asf]
28
29 (defpackage :mcclim.system
30 (:use :asdf :cl))
31 (in-package :mcclim.system)
32
33 (defparameter *clim-directory* (directory-namestring *load-truename*))
34
35 ;;; Legacy CMUCL support stuff
36 #+cmu
37 (progn
38 (unless (fboundp 'ext:stream-read-char)
39 (unless (ignore-errors (ext:search-list "gray-streams:"))
40 (setf (ext:search-list "gray-streams:")
41 '("target:pcl/" "library:subsystems/")))
42 (if (fboundp 'extensions:without-package-locks)
43 (extensions:without-package-locks
44 (load "gray-streams:gray-streams-library"))
45 (load "gray-streams:gray-streams-library")))
46 #-clx
47 (require :clx)
48 #+mp (when (eq mp::*initial-process* mp::*current-process*)
49 (format t "~%~%You need to run (mp::startup-idle-and-top-level-loops) to start up the multiprocessing support.~%~%")))
50
51 ;;; Make CLX asdf-loadable on Allegro 6.2
52 ;;; possibly this should be further refined to funciton properly for
53 ;;; Allegro on Windows platforms. [2005/04/18:rpg]
54
55 #+allegro
56 (progn
57 (defclass requireable-system (asdf:system)
58 ())
59 (defmethod asdf:perform ((op asdf:load-op) (system requireable-system))
60 (require (intern (slot-value system 'asdf::name) :keyword)))
61 (defmethod asdf::traverse ((op asdf:load-op) (system requireable-system))
62 (list (cons op system)))
63 (defsystem :clx
64 :class requireable-system))
65
66 (defmacro clim-defsystem ((module &key depends-on) &rest components)
67 `(progn
68 (asdf:defsystem ,module
69 ,@(and depends-on
70 `(:depends-on ,depends-on))
71 :serial t
72 :components
73 (,@(loop for c in components
74 for p = (merge-pathnames
75 (parse-namestring c)
76 (make-pathname :type "lisp"
77 :defaults *clim-directory*))
78 collect `(:file ,(namestring p) :pathname ,p))))))
79
80 (defsystem :clim-lisp
81 :components
82 (;; First possible patches
83 (:file "patch")
84 (:module "Lisp-Dep"
85 :depends-on ("patch")
86 :components
87 ((:file #+cmu "fix-cmu"
88 #+scl "fix-scl"
89 #+excl "fix-acl"
90 #+sbcl "fix-sbcl"
91 #+openmcl "fix-openmcl"
92 #+lispworks "fix-lispworks"
93 #+clisp "fix-clisp")))
94 (:file "package" :depends-on ("Lisp-Dep" "patch"))))
95
96 (defsystem :clim-core
97 :depends-on (:clim-lisp :spatial-trees)
98 :components ((:file "decls")
99 (:file "protocol-classes" :depends-on ("decls"))
100 (:module "Lisp-Dep"
101 :depends-on ("decls")
102 :components
103 ((:file #.(first
104 (list
105 #+(and :cmu :mp (not :pthread)) "mp-cmu"
106 #+scl "mp-scl"
107 #+sb-thread "mp-sbcl"
108 #+excl "mp-acl"
109 #+openmcl "mp-openmcl"
110 #+lispworks "mp-lw"
111 #| fall back |# "mp-nil")))))
112 (:file "utils" :depends-on ("decls" "Lisp-Dep"))
113 (:file "design" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "utils"))
114 (:file "X11-colors" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "design"))
115 (:file "coordinates" :depends-on ("decls" "protocol-classes" "Lisp-Dep"))
116 (:file "setf-star" :depends-on ("decls" "Lisp-Dep"))
117 (:file "transforms" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "coordinates" "utils"))
118 (:file "regions" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "coordinates" "utils" "transforms" "setf-star" "design"))
119 (:file "sheets" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "utils" "transforms" "regions"))
120 (:file "pixmap" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "sheets" "transforms" "regions"))
121 (:file "events" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "transforms" "sheets" "utils"))
122 (:file "ports" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "events" "sheets" "pixmap" "utils"))
123 (:file "grafts" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "sheets" "ports" "transforms" "regions"))
124 (:file "medium" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "ports" "X11-colors" "utils" "pixmap" "regions"
125 "transforms" "design"))
126 (:file "output" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "medium"))
127 (:file "input" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "events" "regions" "sheets"))
128 (:file "repaint" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "sheets" "events"))
129 (:file "graphics" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "output" "utils" "medium" "sheets" "pixmap"
130 "regions" "design" "transforms"))
131 (:file "views" :depends-on ("utils" "protocol-classes"))
132 (:file "stream-output" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "design" "utils" "X11-colors" "views"
133 "output" "sheets" "regions" "graphics"
134 "medium" "setf-star"))
135 (:file "recording" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "output" "coordinates" "graphics" "design"
136 "medium" "transforms" "regions" "sheets"
137 "utils" "stream-output"))
138 (:file "encapsulate" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "sheets" "graphics" "utils" "medium" "input"
139 "stream-output" "recording"))
140 (:file "stream-input" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "input" "ports" "sheets" "events"
141 "encapsulate" "transforms" "utils"))
142 (:file "text-selection" :depends-on ("decls" "protocol-classes" "Lisp-Dep" "X11-colors" "medium" "output"
143 "transforms" "sheets" "stream-output"
144 "ports" "recording" "regions"
145 "events"))))
146
147 (defsystem :goatee-core
148 :depends-on (:clim-core)
149 :components
150 ((:module "Goatee"
151 :components
152 ((:file "conditions")
153 (:file "dbl-list")
154 (:file "flexivector" :depends-on ("conditions" "dbl-list"))
155 (:file "buffer" :depends-on ("conditions" "flexivector" "dbl-list"))
156 (:file "editable-buffer" :depends-on ("dbl-list" "flexivector" "buffer"))
157 (:file "editable-area" :depends-on ("flexivector" "editable-buffer" "dbl-list"
158 "buffer"))
159 (:file "clim-area" :depends-on ("flexivector" "dbl-list" "buffer"
160 "editable-area" "editable-buffer"))
161 (:file "kill-ring" :depends-on ("editable-buffer" "dbl-list" "flexivector"
162 "buffer"))
163 (:file "goatee-command" :depends-on ("conditions" "clim-area" "dbl-list"
164 "editable-buffer" "kill-ring"
165 "editable-area" "buffer" "flexivector"))
166 (:file "editing-stream" :depends-on ("goatee-command" "kill-ring" "dbl-list"
167 "conditions" "editable-buffer"
168 "flexivector" "clim-area" "buffer"))
169 (:file "presentation-history" :depends-on ("editing-stream" "buffer"
170 "flexivector" "editable-buffer"
171 "goatee-command"))))))
172
173 ;;; CLIM-PostScript is not a backend in the normal sense.
174 ;;; It is an extension (Chap. 35.1 of the spec) and is an
175 ;;; "included" part of McCLIM. Hence the defsystem is here.
176 (defsystem :clim-postscript
177 :depends-on (:clim-core)
178 :components
179 ((:module "Backends/PostScript"
180 :pathname #.(make-pathname :directory '(:relative "Backends" "PostScript"))
181 :components
182 ((:file "package")
183 (:file "encoding" :depends-on ("package"))
184 (:file "paper" :depends-on ("package"))
185 (:file "class" :depends-on ("paper" "package"))
186 (:file "font" :depends-on ("encoding" "class" "paper" "package"))
187 (:file "graphics" :depends-on ("encoding" "paper" "class" "font" "package"))
188 (:file "sheet" :depends-on ("paper" "class" "graphics" "package"))
189 (:file "afm" :depends-on ("class" "paper" "font" "package"))
190 (:file "standard-metrics" :depends-on ("font" "package"))))))
191
192 (defsystem :clim
193 :depends-on (:clim-core :goatee-core)
194 :components
195 ((:file "text-formatting")
196 (:file "input-editing")
197 (:file "presentations")
198 (:file "defresource")
199 (:file "presentation-defs" :depends-on ("input-editing" "presentations"))
200 (:file "pointer-tracking" :depends-on ("input-editing"))
201 (:file "commands" :depends-on ("input-editing" "presentations"
202 "presentation-defs"))
203 (:file "incremental-redisplay" :depends-on ("presentation-defs"))
204 (:file "frames" :depends-on ("commands" "presentations" "presentation-defs"
205 "pointer-tracking" "incremental-redisplay"))
206 (:file "panes" :depends-on ("incremental-redisplay" "presentations"
207 "presentation-defs" "input-editing" "frames"))
208 (:file "gadgets" :depends-on ("commands" "pointer-tracking" "input-editing"
209 "frames" "incremental-redisplay" "panes"))
210 (:file "menu" :depends-on ("panes" "commands" "gadgets"
211 "presentations" "frames"))
212 (:file "table-formatting" :depends-on ("presentation-defs" "panes"
213 "presentations" "input-editing"))
214 (:file "graph-formatting")
215 (:file "bordered-output" :depends-on ("input-editing" "incremental-redisplay"
216 "presentation-defs" "panes"))
217 (:file "dialog-views" :depends-on ("presentations" "incremental-redisplay"
218 "bordered-output" "presentation-defs"))
219 (:file "dialog" :depends-on ("panes" "frames" "incremental-redisplay"
220 "table-formatting" "presentations"
221 "bordered-output" "presentation-defs"
222 "dialog-views" "input-editing"
223 "commands"))
224 (:file "builtin-commands" :depends-on ("table-formatting" "commands" "presentations"
225 "presentation-defs" "input-editing"))
226 (:file "describe" :depends-on ("presentations" "presentation-defs" "table-formatting"))
227 (:file "menu-choose" :depends-on ("commands" "table-formatting" "presentation-defs"
228 "panes" "frames" "pointer-tracking"
229 "presentations"))
230 (:file "Goatee/presentation-history" :depends-on ("presentation-defs") ; XXX: this is loaded as part of the Goatee system. huh?
231 :pathname #.(make-pathname :directory '(:relative "Goatee") :name "presentation-history" :type "lisp"))
232 ))
233
234 (defsystem :clim-clx
235 :depends-on (:clim #+(or sbcl openmcl ecl allegro) :clx)
236 :components
237 ((:module "Backends/CLX"
238 :pathname #.(make-pathname :directory '(:relative "Backends" "CLX"))
239 :components
240 ((:file "package")
241 (:file "image" :depends-on ("package"))
242 (:file "keysyms-common" :depends-on ("package"))
243 (:file "keysyms" :depends-on ("keysyms-common" "package"))
244 (:file "keysymdef" :depends-on ("keysyms-common" "package"))
245 (:file "port" :depends-on ("keysyms-common" "keysyms" "package"))
246 (:file "medium" :depends-on ("port" "keysyms" "package"))
247 (:file "graft" :depends-on ("port" "package"))
248 (:file "frame-manager" :depends-on ("medium" "port" "package"))))))
249
250 (defsystem :clim-null
251 :depends-on (:clim)
252 :components
253 ((:module "Backends/Null"
254 :pathname #.(make-pathname :directory '(:relative "Backends" "Null"))
255 :components
256 ((:file "package")
257 (:file "port" :depends-on ("package"))
258 (:file "medium" :depends-on ("port" "package"))
259 (:file "graft" :depends-on ("port" "package"))
260 (:file "frame-manager" :depends-on ("medium" "port" "package"))))))
261
262 (defsystem :clim-gtkairo
263 :depends-on (:clim :cffi)
264 :components
265 ((:module "Backends/gtkairo"
266 :pathname #.(make-pathname :directory '(:relative "Backends" "gtkairo"))
267 :serial t ;asf wird's ja richten
268 :components
269 ((:file "clim-fix")
270 (:file "package")
271 (:file "gtk-ffi")
272 (:file "cairo-ffi")
273 (:file "graft")
274 (:file "port")
275 (:file "event")
276 (:file "keysymdef")
277 (:file "medium")
278 (:file "pixmap")
279 (:file "frame-manager")
280 (:file "gadgets")))))
281
282 ;;; TODO/asf: I don't have the required libs to get :clim-opengl to load. tough.
283 (clim-defsystem (:clim-opengl :depends-on (:clim))
284 "Backends/OpenGL/opengl-x-frame-manager"
285 "Backends/OpenGL/opengl-frame-manager"
286 "Backends/OpenGL/opengl-x-port-before"
287 "Backends/OpenGL/opengl-port"
288 "Backends/OpenGL/opengl-x-port-after"
289 "Backends/OpenGL/opengl-medium"
290 "Backends/OpenGL/opengl-x-graft")
291
292 ;;; A system that loads the appropriate backend for the current
293 ;;; platform.
294 (defsystem :clim-looks
295 :depends-on (:clim :clim-postscript
296 ;; If we're on an implementation that ships CLX, use
297 ;; it. Same if the user has loaded CLX already.
298 #+(or sbcl scl openmcl ecl clx allegro) :clim-clx
299 #+gl :clim-opengl
300 ;; OpenMCL and MCL support the beagle backend (native
301 ;; OS X look&feel on OS X).
302
303 ;; But until it's ready, it's no use forcing users to
304 ;; cope with possible bugs.
305 ;; #+(or openmcl mcl) :clim-beagle
306
307 #+gtkairo :clim-gtkairo
308
309 ;; null backend
310 :clim-null
311 )
312 :components ((:file "Looks/pixie"
313 :pathname #.(make-pathname :directory '(:relative "Looks") :name "pixie" :type "lisp"))))
314
315 ;;; name of :clim-clx-user chosen by mikemac for no good reason
316 (defsystem :clim-clx-user
317 :depends-on (:clim :clim-clx))
318
319 ;;; The actual McCLIM system that people should to use in their ASDF
320 ;;; package dependency lists.
321 (defsystem :mcclim
322 :version "0.9.3-dev"
323 :depends-on (:clim-looks))
324
325 ;;; CLIM-Examples depends on having at least one backend loaded.
326 (defsystem :clim-examples
327 :depends-on (:mcclim)
328 :components
329 ((:module "Examples"
330 :components
331 ((:file "calculator")
332 (:file "colorslider")
333 (:file "menutest") ; extra
334 (:file "address-book")
335 (:file "traffic-lights")
336 (:file "clim-fig")
337 (:file "postscript-test")
338 (:file "puzzle")
339 (:file "transformations-test")
340 (:file "demodemo")
341 (:file "stream-test")
342 (:file "presentation-test")
343 (:file "dragndrop")
344 (:file "gadget-test")
345 (:file "accepting-values")
346 (:file "method-browser")
347 (:file "stopwatch")
348 (:file "dragndrop-translator")
349 (:file "draggable-graph")
350 (:file "text-size-test")
351 (:file "drawing-benchmark")
352 (:file "logic-cube")
353 (:file "views")))
354 (:module "Goatee"
355 :components
356 ((:file "goatee-test")))))
357
358 ;;; This won't load in SBCL, either. I have really crappy code to
359 ;;; extract dependency information from :serial t ASDF systems, but
360 ;;; this comment is too narrow to contain it.
361 (clim-defsystem (:scigraph :depends-on (:mcclim))
362 ;; The DWIM part of SCIGRAPH
363 "Apps/Scigraph/dwim/package"
364 "Apps/Scigraph/dwim/feature-case"
365 "Apps/Scigraph/dwim/macros"
366 "Apps/Scigraph/dwim/tv"
367 "Apps/Scigraph/dwim/draw"
368 "Apps/Scigraph/dwim/present"
369 "Apps/Scigraph/dwim/extensions"
370 "Apps/Scigraph/dwim/wholine"
371 "Apps/Scigraph/dwim/export"
372 ;; The Scigraph part
373 "Apps/Scigraph/scigraph/package"
374 "Apps/Scigraph/scigraph/copy"
375 "Apps/Scigraph/scigraph/dump"
376 "Apps/Scigraph/scigraph/duplicate"
377 "Apps/Scigraph/scigraph/random"
378 "Apps/Scigraph/scigraph/menu-tools"
379 "Apps/Scigraph/scigraph/basic-classes"
380 "Apps/Scigraph/scigraph/draw"
381 "Apps/Scigraph/scigraph/mouse"
382 "Apps/Scigraph/scigraph/color"
383 "Apps/Scigraph/scigraph/basic-graph"
384 "Apps/Scigraph/scigraph/graph-mixins"
385 "Apps/Scigraph/scigraph/axis"
386 "Apps/Scigraph/scigraph/moving-object"
387 "Apps/Scigraph/scigraph/symbol"
388 "Apps/Scigraph/scigraph/graph-data"
389 "Apps/Scigraph/scigraph/legend"
390 "Apps/Scigraph/scigraph/graph-classes"
391 "Apps/Scigraph/scigraph/present"
392 "Apps/Scigraph/scigraph/annotations"
393 "Apps/Scigraph/scigraph/annotated-graph"
394 "Apps/Scigraph/scigraph/contour"
395 "Apps/Scigraph/scigraph/equation"
396 "Apps/Scigraph/scigraph/popup-accept"
397 "Apps/Scigraph/scigraph/popup-accept-methods"
398 "Apps/Scigraph/scigraph/duplicate-methods"
399 "Apps/Scigraph/scigraph/frame"
400 "Apps/Scigraph/scigraph/export"
401 "Apps/Scigraph/scigraph/demo-frame")
402
403 (defsystem :clim-listener
404 :depends-on (:mcclim #+sbcl :sb-posix)
405 :components
406 ((:file "Experimental/xpm"
407 :pathname #.(make-pathname :directory '(:relative "Experimental") :name "xpm" :type "lisp"))
408 (:module "Apps/Listener"
409 :pathname #.(make-pathname :directory '(:relative "Apps" "Listener"))
410 :depends-on ("Experimental/xpm")
411 :components
412 ((:file "package")
413 (:file "util" :depends-on ("package"))
414 (:file "icons" :depends-on ("package" "util"))
415 (:file "file-types" :depends-on ("package" "icons" "util"))
416 (:file "dev-commands" :depends-on ("package" "icons" "file-types" "util"))
417 (:file "listener" :depends-on ("package" "file-types" "icons" "dev-commands" "util"))
418 #+CMU (:file "cmu-hacks" :depends-on ("package"))))))
419
420 (defsystem :clouseau
421 :depends-on (:mcclim)
422 :serial t
423 :components
424 ((:module "Apps/Inspector"
425 :pathname #.(make-pathname :directory '(:relative "Apps" "Inspector"))
426 :components
427 ((:file "package")
428 (:file "disassembly")
429 (:file "inspector")))))
430
431 (defmethod perform :after ((op load-op) (c (eql (find-system :clim))))
432 (pushnew :clim *features*)
433 (pushnew :mcclim *features*))
434
435 (defmethod perform :after ((op load-op) (c (eql (find-system :mcclim))))
436 (pushnew :clim *features*)
437 (pushnew :mcclim *features*))

  ViewVC Help
Powered by ViewVC 1.1.5