2 Copyright 2006,2007 Greg Pfeil
4 Distributed under the MIT license (see LICENSE file)
7 (defpackage bordeaux-threads-system
10 (in-package :bordeaux-threads-system)
12 (eval-when (:compile-toplevel :load-toplevel :execute)
13 #+allegro (require :process)
14 #+corman (require :threads))
16 (eval-when (:compile-toplevel :load-toplevel :execute)
17 #+(or (and allegro multiprocessing)
22 (and digitool ccl-5.1)
25 (and openmcl openmcl-native-threads)
28 (pushnew :thread-support *features*))
30 (defsystem :bordeaux-threads
31 :author "Greg Pfeil <greg@technomadic.org>"
32 ;; based on original Bordeaux-MP spec by Dan Barlow <dan@telent.net>
34 ;; Attila Lendvai <attila.lendvai@gmail.com>
35 ;; - better handling of unsupported Lisps
36 ;; Vladimir Sekissov <svg@surnet.ru>
37 ;; - fixes for CMUCL implementation
38 ;; Pierre Thierry <nowhere.man@levallois.eu.org>
39 ;; - added license information
40 ;; Stelian Ionescu <sionescu@common-lisp.net>
41 ;; - finished conversion from generic functions
42 ;; - enabled running thread-safe code in unthreaded lisps
43 ;; Douglas Crosher <dtc@scieneer.com>
44 ;; - added Scieneer Common Lisp support
47 :components ((:module "src"
50 ((:file "bordeaux-threads")
51 (:file #+(and thread-support allegro) "allegro"
52 #+(and thread-support armedbear) "armedbear"
53 #+(and thread-support cmu) "cmu"
54 #+(and thread-support scl) "scl"
55 #+(and thread-support corman) "corman"
56 #+(and thread-support digitool) "mcl"
57 #+(and thread-support ecl) "ecl"
58 #+(and thread-support lispworks) "lispworks"
59 #+(and thread-support openmcl) "openmcl"
60 #+(and thread-support sbcl) "sbcl"
61 #+(and thread-support clisp) "clisp"
62 #-thread-support "unsupported")
63 (:file "default-implementations")
65 (or armedbear ecl lispworks digitool))
66 (:file "condition-variables"))))
67 :in-order-to ((test-op (load-op bordeaux-threads-test)))
68 :perform (test-op :after (op c)
70 (funcall (intern (string '#:run-tests) :lift)
71 :suite (intern (string '#:test-bordeaux-threads)
72 :bordeaux-threads-test)))))
74 (defmethod operation-done-p ((op test-op)
75 (c (eql (find-system :bordeaux-threads))))