(rule
 (action
  (copy ../../src/spsc_queue/spsc_queue.ml spsc_queue.ml))
 (package saturn))

(rule
 (action
  (copy ../../src/spsc_queue/spsc_queue_unsafe.ml spsc_queue_unsafe.ml))
 (package saturn))

(rule
 (action
  (copy ../../src/spsc_queue/spsc_queue_intf.mli spsc_queue_intf.ml))
 (package saturn))

(test
 (package saturn)
 (name spsc_queue_dscheck)
 (libraries alcotest atomic dscheck multicore-magic-dscheck)
 (build_if
  (>= %{ocaml_version} 5))
 (modules spsc_queue spsc_queue_unsafe spsc_queue_intf spsc_queue_dscheck)
 (flags
  (:standard -open Multicore_magic_dscheck)))

(test
 (package saturn)
 (name test_spsc_queue)
 (libraries spsc_queues domain_shims)
 (modules test_spsc_queue))

(test
 (package saturn)
 (name qcheck_spsc_queue)
 (libraries
  spsc_queues
  barrier
  qcheck
  qcheck-core
  qcheck-alcotest
  domain_shims
  alcotest)
 (modules qcheck_spsc_queue))

(test
 (package saturn)
 (name stm_spsc_queue)
 (modules stm_spsc_queue)
 (libraries
  spsc_queues
  qcheck-core
  qcheck-multicoretests-util
  qcheck-stm.stm
  stm_run))
