Move iolib/asdf system into a separate .asd file
[iolib.git] / iolib.asd
blobb97c485205e01ee6cd3072796ed4be4e6c200ead
1 ;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
3 #.(unless (or #+asdf3.1 (version<= "3.1" (asdf-version)))
4     (error "You need ASDF >= 3.1 to load this system correctly."))
6 (defsystem :iolib/conf
7   :description "Compile-time configuration for IOLib."
8   :author "Stelian Ionescu <sionescu@cddr.org>"
9   :licence "MIT"
10   :version (:read-file-form "version.sexp")
11   :defsystem-depends-on (:iolib.asdf)
12   :around-compile "iolib/asdf:compile-wrapper"
13   :encoding :utf-8
14   :pathname "src/conf/"
15   :components
16   ((:file "pkgdcl")
17    (:file "requires" :depends-on ("pkgdcl"))))
19 (defsystem :iolib/common-lisp
20   :description "Slightly modified Common Lisp."
21   :author "Stelian Ionescu <sionescu@cddr.org>"
22   :licence "MIT"
23   :version (:read-file-form "version.sexp")
24   :defsystem-depends-on (:iolib.asdf :iolib/conf)
25   :depends-on (:alexandria)
26   :around-compile "iolib/asdf:compile-wrapper"
27   :encoding :utf-8
28   :pathname "src/new-cl/"
29   :components
30   ((:file "conduits")
31    #+scl (:file "scl-gray-streams")
32    (:file "pkgdcl" :depends-on ("conduits" #+scl "scl-gray-streams")
33     :perform
34     (compile-op :before (o c)
35       (symbol-call :iolib/conf '#:load-gray-streams))
36     :perform
37     (load-op :before (o c)
38       (symbol-call :iolib/conf '#:load-gray-streams))
39     :perform
40     (load-source-op :before (o c)
41       (symbol-call :iolib/conf '#:load-gray-streams)))
42    (:file "gray-streams"
43     :depends-on ("pkgdcl" #+scl "scl-gray-streams"))
44    (:file "definitions" :depends-on ("pkgdcl"))
45    (:file "types" :depends-on ("pkgdcl"))))
47 (defsystem :iolib/base
48   :description "Base IOlib package, used instead of CL."
49   :author "Stelian Ionescu <sionescu@cddr.org>"
50   :licence "MIT"
51   :version (:read-file-form "version.sexp")
52   :defsystem-depends-on (:iolib.asdf :iolib/conf)
53   :depends-on (:iolib/common-lisp :alexandria :split-sequence)
54   :around-compile "iolib/asdf:compile-wrapper"
55   :encoding :utf-8
56   :pathname "src/base/"
57   :components
58   ((:file "pkgdcl")
59    (:file "return-star" :depends-on ("pkgdcl"))
60    (:file "types" :depends-on ("pkgdcl" "return-star"))
61    (:file "debug" :depends-on ("pkgdcl" "return-star"))
62    (:file "conditions" :depends-on ("pkgdcl" "return-star"))
63    (:file "defalias" :depends-on ("pkgdcl" "return-star"))
64    (:file "deffoldable" :depends-on ("pkgdcl" "return-star"))
65    (:file "defobsolete" :depends-on ("pkgdcl" "return-star"))
66    (:file "reader" :depends-on ("pkgdcl" "return-star" "conditions"))
67    (:file "sequence" :depends-on ("pkgdcl" "return-star"))
68    (:file "matching" :depends-on ("pkgdcl" "return-star"))
69    (:file "time" :depends-on ("pkgdcl" "return-star"))
70    (:file "dynamic-buffer" :depends-on ("pkgdcl" "return-star" "sequence"))))
72 (defsystem :iolib/grovel
73   :description "The CFFI Groveller"
74   :author "Dan Knapp <dankna@accela.net>"
75   :maintainer "Stelian Ionescu <sionescu@cddr.org>"
76   :licence "MIT"
77   :version (:read-file-form "version.sexp")
78   :defsystem-depends-on (:iolib.asdf :iolib/conf)
79   :depends-on (:iolib.asdf :iolib/base :iolib/conf
80                :alexandria :split-sequence #+allegro (:require "osi") :cffi :uiop)
81   :around-compile "iolib/asdf:compile-wrapper"
82   :encoding :utf-8
83   :pathname "src/grovel/"
84   :components
85   ((:file "package")
86    (:static-file "grovel-common.h")
87    (:file "grovel")
88    (:file "asdf"))
89   :serial t)
91 (defsystem :iolib/syscalls
92   :description "Syscalls and foreign types."
93   :author "Stelian Ionescu <sionescu@cddr.org>"
94   :licence "MIT"
95   :version (:read-file-form "version.sexp")
96   :defsystem-depends-on (:iolib.asdf :iolib/conf :iolib/grovel)
97   :depends-on (:trivial-features :cffi :iolib/base :iolib/grovel)
98   :around-compile "iolib/asdf:compile-wrapper"
99   :encoding :utf-8
100   :pathname "src/syscalls/"
101   :components
102   ((:file "pkgdcl")
103    #+unix
104    (:file "syscall-path-strings" :pathname "unix-syscall-path-strings")
105    ;; Platform-specific files
106    (:iolib-grovel-file "ffi-types" :pathname #+unix "ffi-types-unix")
107    (:file "conditions")
108    (:file "os-conditions" :pathname #+unix "os-conditions-unix")
109    (:file "designators")
110    (:file "early")
111    (:file "ffi-functions" :pathname #+unix "ffi-functions-unix"))
112   :serial t)
114 (defsystem :iolib/multiplex
115   :description "I/O multiplexing library."
116   :author "Stelian Ionescu <sionescu@cddr.org>"
117   :licence "MIT"
118   :version (:read-file-form "version.sexp")
119   :defsystem-depends-on (:iolib.asdf :iolib/conf)
120   :depends-on (:iolib/base :iolib/syscalls :cffi)
121   :around-compile "iolib/asdf:compile-wrapper"
122   :encoding :utf-8
123   :pathname "src/multiplex/"
124   :components
125   ((:file "pkgdcl")
127    ;; Scheduler
128    (:file "utils" :depends-on ("pkgdcl"))
129    (:file "timers" :depends-on ("pkgdcl"))
130    (:file "queue" :depends-on ("pkgdcl"))
131    (:file "scheduler" :depends-on ("pkgdcl" "timers" "queue"))
133    ;; Event loop
134    (:file "fd-entry" :depends-on ("pkgdcl" "timers"))
135    (:file "multiplexer" :depends-on ("pkgdcl" "utils" "fd-entry"))
136    (:file "event-loop" :depends-on ("pkgdcl" "timers" "queue" "scheduler"
137                                              "fd-entry" "multiplexer"))
139    ;; FD wait
140    (:file "fd-wait" :depends-on ("pkgdcl" "utils"))
142    ;; Event sources
143    (:file "backend-select"
144     :depends-on ("pkgdcl" "utils" "fd-entry" "multiplexer"))
145    #+linux
146    (:file "backend-epoll"
147     :depends-on ("pkgdcl" "utils" "fd-entry" "multiplexer"))
148    #+bsd
149    (:file "backend-kqueue"
150     :depends-on ("pkgdcl" "utils" "fd-entry" "multiplexer"))
151    (:file "detect"
152     :depends-on ("pkgdcl" "multiplexer" "backend-select"
153                           #+linux "backend-epoll" #+bsd "backend-kqueue"))))
155 (defsystem :iolib/streams
156   :description "Gray streams."
157   :author "Stelian Ionescu <sionescu@cddr.org>"
158   :licence "MIT"
159   :version (:read-file-form "version.sexp")
160   :defsystem-depends-on (:iolib.asdf :iolib/conf)
161   :depends-on (:iolib/base :iolib/multiplex :cffi)
162   :around-compile "iolib/asdf:compile-wrapper"
163   :encoding :utf-8
164   :pathname "src/streams/gray/"
165   :components
166   ((:file "pkgdcl")
167    (:file "classes" :depends-on ("pkgdcl"))
168    (:file "conditions" :depends-on ("pkgdcl"))
169    (:file "buffer" :depends-on ("pkgdcl" "classes"))
170    (:file "fd-mixin" :depends-on ("pkgdcl" "classes"))
171    (:file "io-helpers"
172      :depends-on ("pkgdcl" "classes" "conditions" "buffer" "fd-mixin"))
173    (:file "gray-stream-methods"
174      :depends-on ("pkgdcl" "classes" "conditions" "buffer" "fd-mixin"
175                   "io-helpers"))))
177 (defsystem :iolib/zstreams
178   :description "Zeta streams."
179   :author "Stelian Ionescu <sionescu@cddr.org>"
180   :licence "MIT"
181   :version (:read-file-form "version.sexp")
182   :defsystem-depends-on (:iolib.asdf)
183   :depends-on (:iolib/base :iolib/syscalls :iolib/pathnames :cffi :bordeaux-threads)
184   :around-compile "iolib.asdf:compile-wrapper"
185   :encoding :utf-8
186   :pathname "src/streams/zeta/"
187   :components
188   ((:file "pkgdcl")
189    (:file "types" :depends-on ("pkgdcl"))
190    (:file "conditions" :depends-on ("pkgdcl"))
192    ;; Platform-specific files
193    (:file "ffi-functions" :pathname #+unix "ffi-functions-unix"
194      :depends-on ("pkgdcl" "conditions"))
196    ;; Device interface definition
197    (:file "device" :depends-on ("pkgdcl" "types"))
199    ;; Low-level buffers
200    (:file "iobuf" :depends-on ("pkgdcl" "types"))
202    ;; Streams
203    (:file "stream" :depends-on ("pkgdcl" "types" "conditions" "device" "iobuf"))
205    ;; Devices
206    (:file "file" :pathname #+unix "file-unix"
207      :depends-on ("pkgdcl" "types" "conditions" "ffi-functions" "device" "stream"))))
209 (defsystem :iolib/sockets
210   :description "Socket library."
211   :author "Stelian Ionescu <sionescu@cddr.org>"
212   :licence "MIT"
213   :version (:read-file-form "version.sexp")
214   :defsystem-depends-on (:iolib.asdf :iolib/conf :iolib/grovel)
215   :depends-on (:iolib/base :iolib/syscalls :iolib/streams
216                :babel :cffi :iolib/grovel :bordeaux-threads
217                :idna :swap-bytes)
218   :around-compile "iolib/asdf:compile-wrapper"
219   :encoding :utf-8
220   :pathname "src/sockets/"
221   :components
222   ((:file "pkgdcl")
223    (:iolib-grovel-file "grovel" :depends-on ("pkgdcl"))
224    (:file "conditions" :depends-on ("pkgdcl" "grovel"))
225    (:file "bsd" :depends-on ("pkgdcl" "grovel" "conditions"))
226    (:file "common" :depends-on ("pkgdcl" "grovel" "bsd"))
227    (:file "config" :depends-on ("pkgdcl" "grovel" "bsd"))
229    (:file "iface" :depends-on ("pkgdcl" "grovel" "bsd" "common"))
231    (:file "address" :depends-on ("pkgdcl" "common"))
232    (:file "address-predicates" :depends-on ("pkgdcl" "common" "address"))
233    (:file "address-arithmetic" :depends-on ("pkgdcl" "common" "address" "address-predicates"))
235    (:file "base-sockets" :depends-on ("pkgdcl" "bsd" "common" "config"))
236    (:file "socket-options"
237      :depends-on ("pkgdcl" "grovel" "conditions" "bsd" "common" "config" "base-sockets"))
239    ;; Local file configuration (/etc/hosts etc...)
240    (:file "etc-files" :pathname "namedb/etc-files"
241      :depends-on ("pkgdcl"))
242    (:file "file-monitor" :pathname "namedb/file-monitor"
243      :depends-on ("pkgdcl"))
244    (:file "protocols" :pathname "namedb/protocols"
245      :depends-on ("pkgdcl" "common" "etc-files" "file-monitor"))
246    (:file "services" :pathname "namedb/services"
247      :depends-on ("pkgdcl" "common" "etc-files" "file-monitor"))
248    (:file "hosts" :pathname "namedb/hosts"
249      :depends-on ("pkgdcl" "address" "address-predicates" "etc-files" "file-monitor"))
251    (:file "socket-methods"
252      :depends-on ("pkgdcl" "grovel" "conditions" "bsd" "common" "config"
253                   "address" "address-predicates" "base-sockets" "socket-options"
254                   "protocols" "services"))
255    (:file "make-socket"
256      :depends-on ("pkgdcl" "grovel" "common" "config" "address" "address-predicates"
257                   "base-sockets" "socket-options" "services" "socket-methods"))
259    ;; DNS client
260    (:file "dns-common" :pathname "dns/common"
261      :depends-on ("pkgdcl" "common"))
262    (:file "nameservers" :pathname "dns/nameservers"
263      :depends-on ("pkgdcl" "address" "address-predicates" "etc-files" "file-monitor"))
264    (:file "message":pathname "dns/message"
265      :depends-on ("pkgdcl" "common" "dns-common"))
266    (:file "query" :pathname "dns/query"
267      :depends-on ("pkgdcl" "conditions" "address" "address-predicates"
268                   "socket-options" "socket-methods" "make-socket" "dns-common"
269                   "nameservers" "message"))
270    (:file "dns-conditions" :pathname "dns/conditions"
271      :depends-on ("pkgdcl"))
272    (:file "lookup" :pathname "dns/lookup"
273      :depends-on ("pkgdcl" "address" "address-predicates" "file-monitor" "hosts"
274                   "nameservers" "message" "query" "dns-conditions"))))
276 (defsystem :iolib/trivial-sockets
277   :description "Trivial-Sockets compatibility layer."
278   :author "Dan Barlow <dan@telent.net>"
279   :maintainer "Stelian Ionescu <sionescu@cddr.org>"
280   :licence "MIT"
281   :version (:read-file-form "version.sexp")
282   :defsystem-depends-on (:iolib.asdf :iolib/conf)
283   :depends-on (:iolib/base :iolib/sockets)
284   :around-compile "iolib/asdf:compile-wrapper"
285   :encoding :utf-8
286   :pathname "src/sockets/"
287   :components
288   ((:file "trivial-sockets")))
290 (defsystem :iolib/pathnames
291   :description "New pathnames."
292   :author "Stelian Ionescu <sionescu@cddr.org>"
293   :licence "MIT"
294   :version (:read-file-form "version.sexp")
295   :defsystem-depends-on (:iolib.asdf :iolib/conf)
296   :depends-on (:iolib/base :iolib/syscalls)
297   :around-compile "iolib/asdf:compile-wrapper"
298   :encoding :utf-8
299   :pathname "src/pathnames/"
300   :components
301   ((:file "pkgdcl")
302    (:file "file-path")
303    (:file "file-path-os" :pathname #+unix "file-path-unix"))
304   :serial t)
306 (defsystem :iolib/os
307   :description "OS interface."
308   :author "Stelian Ionescu <sionescu@cddr.org>"
309   :licence "MIT"
310   :version (:read-file-form "version.sexp")
311   :defsystem-depends-on (:iolib.asdf :iolib/conf :iolib/grovel)
312   :depends-on (:iolib/base :iolib/grovel :iolib/syscalls
313                :iolib/streams :iolib/pathnames)
314   :around-compile "iolib/asdf:compile-wrapper"
315   :encoding :utf-8
316   :pathname "src/os/"
317   :components
318   ((:file "pkgdcl")
319    (:file "os" :pathname #+unix "os-unix")
320    (:iolib-grovel-file "ffi-types" :pathname #+unix "ffi-types-unix")
321    (:file "ffi-functions" :pathname #+unix "ffi-functions-unix")
322    (:file "create-process" :pathname #+unix "create-process-unix"))
323   :serial t)
325 (defsystem :iolib
326   :description "I/O library."
327   :author "Stelian Ionescu <sionescu@cddr.org>"
328   :licence "MIT"
329   :version (:read-file-form "version.sexp")
330   :defsystem-depends-on (:iolib.asdf :iolib/conf)
331   :depends-on (:iolib/base :iolib/multiplex :iolib/streams :iolib/sockets)
332   :around-compile "iolib/asdf:compile-wrapper"
333   :encoding :utf-8
334   :pathname "src/iolib/"
335   :components ((:file "pkgdcl")))
337 (defmethod perform ((o test-op)
338                     (c (eql (find-system :iolib))))
339   (load-system :iolib/tests)
340   (symbol-call :5am :run! :iolib))
342 (defsystem :iolib/tests
343   :description "IOLib test suite."
344   :author "Luis Oliveira <loliveira@common-lisp.net>"
345   :maintainer "Stelian Ionescu <sionescu@cddr.org>"
346   :licence "MIT"
347   :version (:read-file-form "version.sexp")
348   :defsystem-depends-on (:iolib/base)
349   :depends-on (:fiveam :iolib :iolib/pathnames)
350   :around-compile "iolib/asdf:compile-wrapper"
351   :encoding :utf-8
352   :pathname "tests/"
353   :components
354   ((:file "pkgdcl")
355    (:file "defsuites" :depends-on ("pkgdcl"))
356    (:file "base" :depends-on ("pkgdcl" "defsuites"))
357    (:file "file-paths-os" :depends-on ("pkgdcl" "defsuites")
358      :pathname #+unix "file-paths-unix")
359    (:file "events" :depends-on ("pkgdcl" "defsuites"))
360    (:file "streams" :depends-on ("pkgdcl" "defsuites"))
361    (:file "sockets" :depends-on ("pkgdcl" "defsuites"))))
363 (defsystem :iolib/examples
364   :description "Examples for IOLib tutorial at http://pages.cs.wisc.edu/~psilord/blog/data/iolib-tutorial/tutorial.html"
365   :author "Peter Keller <psilord@cs.wisc.edu>"
366   :maintainer "Stelian Ionescu <sionescu@cddr.org>"
367   :licence "MIT"
368   :version (:read-file-form "version.sexp")
369   :defsystem-depends-on (:iolib/base)
370   :depends-on (:iolib :bordeaux-threads)
371   :around-compile "iolib/asdf:compile-wrapper"
372   :pathname "examples/"
373   :components ((:file "package")
374                (:file "ex1-client" :depends-on ("package"))
375                (:file "ex2-client" :depends-on ("package"))
376                (:file "ex3-client" :depends-on ("package"))
377                (:file "ex4-client" :depends-on ("package"))
378                (:file "ex5a-client" :depends-on ("package"))
379                (:file "ex5b-client" :depends-on ("package"))
380                (:file "ex1-server" :depends-on ("package"))
381                (:file "ex2-server" :depends-on ("package"))
382                (:file "ex3-server" :depends-on ("package"))
383                (:file "ex4-server" :depends-on ("package"))
384                (:file "ex5-server" :depends-on ("package"))
385                (:file "ex6-server" :depends-on ("package"))
386                (:file "ex7-buffer" :depends-on ("package"))
387                (:file "ex7-server" :depends-on ("package" "ex7-buffer"))
388                (:file "ex8-buffer" :depends-on ("package"))
389                (:file "ex8-server" :depends-on ("package" "ex8-buffer"))))