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

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

(test
 (package saturn)
 (name ws_deque_dscheck)
 (libraries atomic dscheck alcotest backoff multicore-magic-dscheck)
 (build_if
  (>= %{ocaml_version} 5))
 (modules ArrayExtra ws_deque ws_deque_dscheck)
 (flags
  (:standard -open Multicore_magic_dscheck)))

(test
 (package saturn)
 (name test_ws_deque)
 (libraries saturn domain_shims)
 (modules test_ws_deque))

(test
 (package saturn)
 (name qcheck_ws_deque)
 (libraries
  barrier
  saturn
  qcheck
  qcheck-core
  qcheck-alcotest
  domain_shims
  alcotest)
 (enabled_if
  (not
   (and
    (= %{arch_sixtyfour} false)
    (= %{architecture} arm))))
 (modules qcheck_ws_deque))

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