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