; Singular benchmark

(executable
 (name benchmark_stream)
 (modules benchmark_stream)
 (libraries benchmark caqti caqti.platform lwt lwt.unix))

; Main benchmark suite with executables for concurrency flavours

(library
 (name benchmark_all)
 (flags (:standard -alert -caqti_unstable))
 (modules
    common
    benchmark_fetch_many
    benchmark_all)
 (libraries
    bechamel
    bechamel-notty
    caqti
    caqti.plugin
    notty.unix
    testlib))

(executable
 (name main_blocking)
 (modules main_blocking)
 (libraries
    benchmark_all
    caqti.blocking
    unix))

(executable
 (name main_eio_unix)
 (modules main_eio_unix)
 (enabled_if (>= %{ocaml_version} "5.0"))
 (libraries
    benchmark_all
    caqti-eio.unix
    caqti-tls-eio
    eio
    eio_main
    mirage-crypto-rng.unix))

(executable
 (name main_lwt_unix)
 (modules main_lwt_unix)
 (libraries
    benchmark_all
    caqti-lwt
    caqti-lwt.unix
    caqti-tls-lwt.unix
    lwt
    lwt.unix))

(executable
 (name main_miou_unix)
 (modules main_miou_unix)
 (libraries
    benchmark_all
    caqti-miou
    caqti_miou_unix
    caqti-tls-miou
    miou
    miou.unix
    mirage-crypto-rng-miou-unix
    threads))

; TODO: Can we run async under a benchamel test?
