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."))
7 (error "Unfortunately, IOlib lacks support for non-Unix OSes (like Windows).")
9 (defsystem :iolib/syscalls
10 :description "Syscalls and foreign types."
11 :author "Stelian Ionescu <sionescu@cddr.org>"
13 :version (:read-file-form "version.sexp")
14 :defsystem-depends-on (:iolib.asdf :iolib.conf :cffi-grovel)
15 :depends-on (:trivial-features :cffi :iolib.base)
16 :around-compile "iolib/asdf:compile-wrapper"
18 :pathname "src/syscalls/"
22 (:file "syscall-path-strings" :pathname "unix-syscall-path-strings")
23 ;; Platform-specific files
24 (:cffi-grovel-file "ffi-types" :pathname #+unix "ffi-types-unix")
26 (:file "os-conditions" :pathname #+unix "os-conditions-unix")
29 (:file "ffi-functions" :pathname #+unix "ffi-functions-unix"))
32 (defsystem :iolib/multiplex
33 :description "I/O multiplexing library."
34 :author "Stelian Ionescu <sionescu@cddr.org>"
36 :version (:read-file-form "version.sexp")
37 :defsystem-depends-on (:iolib.asdf :iolib.conf)
38 :depends-on (:iolib.base :iolib/syscalls :cffi)
39 :around-compile "iolib/asdf:compile-wrapper"
41 :pathname "src/multiplex/"
46 (:file "utils" :depends-on ("pkgdcl"))
47 (:file "timers" :depends-on ("pkgdcl"))
48 (:file "queue" :depends-on ("pkgdcl"))
49 (:file "scheduler" :depends-on ("pkgdcl" "timers" "queue"))
52 (:file "fd-entry" :depends-on ("pkgdcl" "timers"))
53 (:file "multiplexer" :depends-on ("pkgdcl" "utils" "fd-entry"))
54 (:file "event-loop" :depends-on ("pkgdcl" "timers" "queue" "scheduler"
55 "fd-entry" "multiplexer"))
58 (:file "fd-wait" :depends-on ("pkgdcl" "utils"))
61 (:file "backend-select"
62 :depends-on ("pkgdcl" "utils" "fd-entry" "multiplexer"))
64 (:file "backend-epoll"
65 :depends-on ("pkgdcl" "utils" "fd-entry" "multiplexer"))
67 (:file "backend-kqueue"
68 :depends-on ("pkgdcl" "utils" "fd-entry" "multiplexer"))
70 :depends-on ("pkgdcl" "multiplexer" "backend-select"
71 #+linux "backend-epoll" #+bsd "backend-kqueue"))))
73 (defsystem :iolib/streams
74 :description "Gray streams."
75 :author "Stelian Ionescu <sionescu@cddr.org>"
77 :version (:read-file-form "version.sexp")
78 :defsystem-depends-on (:iolib.asdf :iolib.conf)
79 :depends-on (:iolib.base :iolib/multiplex :cffi)
80 :around-compile "iolib/asdf:compile-wrapper"
82 :pathname "src/streams/gray/"
85 (:file "classes" :depends-on ("pkgdcl"))
86 (:file "conditions" :depends-on ("pkgdcl"))
87 (:file "buffer" :depends-on ("pkgdcl" "classes"))
88 (:file "fd-mixin" :depends-on ("pkgdcl" "classes"))
90 :depends-on ("pkgdcl" "classes" "conditions" "buffer" "fd-mixin"))
91 (:file "gray-stream-methods"
92 :depends-on ("pkgdcl" "classes" "conditions" "buffer" "fd-mixin"
95 (defsystem :iolib/zstreams
96 :description "Zeta streams."
97 :author "Stelian Ionescu <sionescu@cddr.org>"
99 :version (:read-file-form "version.sexp")
100 :defsystem-depends-on (:iolib.asdf)
101 :depends-on (:iolib.base :iolib/syscalls :iolib/pathnames :cffi :bordeaux-threads)
102 :around-compile "iolib.asdf:compile-wrapper"
104 :pathname "src/streams/zeta/"
107 (:file "types" :depends-on ("pkgdcl"))
108 (:file "conditions" :depends-on ("pkgdcl"))
110 ;; Platform-specific files
111 (:file "ffi-functions" :pathname #+unix "ffi-functions-unix"
112 :depends-on ("pkgdcl" "conditions"))
114 ;; Device interface definition
115 (:file "device" :depends-on ("pkgdcl" "types"))
118 (:file "iobuf" :depends-on ("pkgdcl" "types"))
121 (:file "stream" :depends-on ("pkgdcl" "types" "conditions" "device" "iobuf"))
124 (:file "file" :pathname #+unix "file-unix"
125 :depends-on ("pkgdcl" "types" "conditions" "ffi-functions" "device" "stream"))))
127 (defsystem :iolib/sockets
128 :description "Socket library."
129 :author "Stelian Ionescu <sionescu@cddr.org>"
131 :version (:read-file-form "version.sexp")
132 :defsystem-depends-on (:iolib.asdf :iolib.conf :cffi-grovel)
133 :depends-on (:iolib.base :iolib/syscalls :iolib/streams
134 :babel :cffi :bordeaux-threads
136 :around-compile "iolib/asdf:compile-wrapper"
138 :pathname "src/sockets/"
141 (:cffi-grovel-file "grovel" :depends-on ("pkgdcl"))
142 (:file "conditions" :depends-on ("pkgdcl" "grovel"))
143 (:file "bsd" :depends-on ("pkgdcl" "grovel" "conditions"))
144 (:file "common" :depends-on ("pkgdcl" "grovel" "bsd"))
145 (:file "config" :depends-on ("pkgdcl" "grovel" "bsd"))
147 (:file "iface" :depends-on ("pkgdcl" "grovel" "bsd" "common"))
149 (:file "address" :depends-on ("pkgdcl" "common"))
150 (:file "address-predicates" :depends-on ("pkgdcl" "common" "address"))
151 (:file "address-arithmetic" :depends-on ("pkgdcl" "common" "address" "address-predicates"))
153 (:file "base-sockets" :depends-on ("pkgdcl" "bsd" "common" "config"))
154 (:file "socket-options"
155 :depends-on ("pkgdcl" "grovel" "conditions" "bsd" "common" "config" "base-sockets"))
157 ;; Local file configuration (/etc/hosts etc...)
158 (:file "etc-files" :pathname "namedb/etc-files"
159 :depends-on ("pkgdcl"))
160 (:file "file-monitor" :pathname "namedb/file-monitor"
161 :depends-on ("pkgdcl"))
162 (:file "protocols" :pathname "namedb/protocols"
163 :depends-on ("pkgdcl" "common" "etc-files" "file-monitor"))
164 (:file "services" :pathname "namedb/services"
165 :depends-on ("pkgdcl" "common" "etc-files" "file-monitor"))
166 (:file "hosts" :pathname "namedb/hosts"
167 :depends-on ("pkgdcl" "address" "address-predicates" "etc-files" "file-monitor"))
169 (:file "socket-methods"
170 :depends-on ("pkgdcl" "grovel" "conditions" "bsd" "common" "config"
171 "address" "address-predicates" "base-sockets" "socket-options"
172 "protocols" "services"))
174 :depends-on ("pkgdcl" "grovel" "common" "config" "address" "address-predicates"
175 "base-sockets" "socket-options" "services" "socket-methods"))
178 (:file "dns-common" :pathname "dns/common"
179 :depends-on ("pkgdcl" "common"))
180 (:file "nameservers" :pathname "dns/nameservers"
181 :depends-on ("pkgdcl" "address" "address-predicates" "etc-files" "file-monitor"))
182 (:file "message":pathname "dns/message"
183 :depends-on ("pkgdcl" "common" "dns-common"))
184 (:file "query" :pathname "dns/query"
185 :depends-on ("pkgdcl" "conditions" "address" "address-predicates"
186 "socket-options" "socket-methods" "make-socket" "dns-common"
187 "nameservers" "message"))
188 (:file "dns-conditions" :pathname "dns/conditions"
189 :depends-on ("pkgdcl"))
190 (:file "lookup" :pathname "dns/lookup"
191 :depends-on ("pkgdcl" "address" "address-predicates" "file-monitor" "hosts"
192 "nameservers" "message" "query" "dns-conditions"))))
194 (defsystem :iolib/trivial-sockets
195 :description "Trivial-Sockets compatibility layer."
196 :author "Dan Barlow <dan@telent.net>"
197 :maintainer "Stelian Ionescu <sionescu@cddr.org>"
199 :version (:read-file-form "version.sexp")
200 :defsystem-depends-on (:iolib.asdf :iolib.conf)
201 :depends-on (:iolib.base :iolib/sockets)
202 :around-compile "iolib/asdf:compile-wrapper"
204 :pathname "src/sockets/"
206 ((:file "trivial-sockets")))
208 (defsystem :iolib/pathnames
209 :description "New pathnames."
210 :author "Stelian Ionescu <sionescu@cddr.org>"
212 :version (:read-file-form "version.sexp")
213 :defsystem-depends-on (:iolib.asdf :iolib.conf)
214 :depends-on (:iolib.base :iolib/syscalls)
215 :around-compile "iolib/asdf:compile-wrapper"
217 :pathname "src/pathnames/"
221 (:file "file-path-os" :pathname #+unix "file-path-unix"))
225 :description "OS interface."
226 :author "Stelian Ionescu <sionescu@cddr.org>"
228 :version (:read-file-form "version.sexp")
229 :defsystem-depends-on (:iolib.asdf :iolib.conf :cffi-grovel)
230 :depends-on (:iolib.base :iolib/syscalls
231 :iolib/streams :iolib/pathnames)
232 :around-compile "iolib/asdf:compile-wrapper"
237 (:file "os" :pathname #+unix "os-unix")
238 (:cffi-grovel-file "ffi-types" :pathname #+unix "ffi-types-unix")
239 (:file "ffi-functions" :pathname #+unix "ffi-functions-unix")
240 (:file "create-process" :pathname #+unix "create-process-unix"))
244 :description "I/O library."
245 :author "Stelian Ionescu <sionescu@cddr.org>"
247 :version (:read-file-form "version.sexp")
248 :defsystem-depends-on (:iolib.asdf :iolib.conf)
249 :depends-on (:iolib.base :iolib/multiplex :iolib/streams :iolib/sockets)
250 :around-compile "iolib/asdf:compile-wrapper"
252 :pathname "src/iolib/"
253 :components ((:file "pkgdcl"))
254 :in-order-to ((test-op (test-op :iolib/tests))))
256 (defsystem :iolib/tests
257 :description "IOLib test suite."
258 :author "Luis Oliveira <loliveira@common-lisp.net>"
259 :maintainer "Stelian Ionescu <sionescu@cddr.org>"
261 :version (:read-file-form "version.sexp")
262 :defsystem-depends-on (:iolib.base)
263 :depends-on (:fiveam :iolib :iolib/pathnames)
264 :around-compile "iolib/asdf:compile-wrapper"
269 (:file "defsuites" :depends-on ("pkgdcl"))
270 (:file "base" :depends-on ("pkgdcl" "defsuites"))
271 (:file "file-paths-os" :depends-on ("pkgdcl" "defsuites")
272 :pathname #+unix "file-paths-unix")
273 (:file "multiplex" :depends-on ("pkgdcl" "defsuites"))
274 (:file "streams" :depends-on ("pkgdcl" "defsuites"))
275 (:file "sockets" :depends-on ("pkgdcl" "defsuites")))
276 :perform (test-op (o c) (symbol-call :5am :run! :iolib)))