1;;; -*-  Lisp -*-
2
3(defsystem :sb-bsd-sockets
4  :version "0.59"
5  :defsystem-depends-on (sb-grovel)
6  #+sb-building-contrib :pathname
7  #+sb-building-contrib #p"SYS:CONTRIB;SB-BSD-SOCKETS;"
8  :components
9  ((:file "defpackage")
10   (:file "win32-lib" :if-feature :win32)
11   (:sb-grovel-constants-file "constants"
12    :package :sockint
13    :depends-on ("defpackage")
14    :if-feature (:not :win32))
15   (:sb-grovel-constants-file "win32-constants"
16    :package :sockint
17    :depends-on ("defpackage" "win32-lib")
18    :if-feature :win32)
19   (:file "util" :depends-on ("defpackage" "constants"))
20   (:file "protocol" :depends-on ("defpackage"))
21   (:file "win32-sockets" :depends-on ("protocol" "win32-constants")
22    :if-feature :win32)
23   (:file "sockets" :depends-on ("util" "constants" "protocol" "win32-sockets"))
24   (:file "sockopt" :depends-on ("util" "sockets"))
25   (:file "inet" :depends-on ("protocol" "sockets"))
26   (:file "inet4" :depends-on ("protocol" "sockets"))
27   (:file "inet6" :depends-on ("protocol" "sockets")
28    :if-feature (:not :win32))
29   (:file "local" :depends-on ("protocol" "sockets"))
30   (:file "name-service" :depends-on ("protocol" "sockets"))
31   (:file "misc" :depends-on ("sockets"))
32
33   ;; FIXME at least NEWS and TODO actually exist in the
34   ;; filesystem. However, their all-uppercase names are translated to
35   ;; all-lowercase in logical pathname translation.
36   ;; (:static-file "NEWS")
37   ;; (:static-file "INSTALL")
38   ;; (:static-file "README")
39   ;; (:static-file "index.html")
40   ;; (:static-file "TODO")
41   )
42  :perform (load-op :after (o c) (provide 'sb-bsd-sockets))
43  :perform (test-op (o c) (test-system 'sb-bsd-sockets/tests)))
44
45(defsystem :sb-bsd-sockets/tests
46  :depends-on (sb-rt sb-bsd-sockets #-win32 sb-posix)
47  :components ((:file "tests"))
48  :perform (test-op (o c)
49             (multiple-value-bind (soft strict pending)
50                 (funcall (intern "DO-TESTS" (find-package "SB-RT")))
51               (declare (ignorable pending))
52               (fresh-line)
53               (unless strict
54                 #+sb-testing-contrib
55                 ;; We create TEST-PASSED from a shell script if tests passed.  But
56                 ;; since the shell script only `touch'es it, we can actually create
57                 ;; it ahead of time -- as long as we're certain that tests truly
58                 ;; passed, hence the check for SOFT.
59                 (when soft
60                   (with-open-file (s #p"SYS:CONTRIB;SB-BSD-SOCKETS;TEST-PASSED.TEST-REPORT"
61                                      :direction :output)
62                     (dolist (pend pending)
63                       (format s "Expected failure: ~A~%" pend))))
64                 (warn "ignoring expected failures in test-op"))
65               (unless soft
66                 (error "test-op failed with unexpected failures")))))
67