(rule
 (targets generated_stubs.c)
 (action
  (run %{exe:stub-generator/driver.exe} --c-file %{targets})))

(rule
 (targets generated_bindings.ml)
 (action
  (run %{exe:stub-generator/driver.exe} --ml-file %{targets})))

(rule
 (targets generated_struct_stubs.c)
 (action
  (run %{exe:stub-generator/driver.exe} --c-struct-file %{targets})))

(rule
 (targets ml-stub-generator.exe)
 (deps
  generated_struct_stubs.c
  ../clib/test_functions.h
  ../config/test-cflags)
 (action
  (run
   %{cc}
   %{read-lines:../config/test-cflags}
   -I
   ../clib
   -I
   %{ocaml-config:standard_library}
   -o
   %{targets}
   generated_struct_stubs.c)))

(rule
 (targets generated_struct_bindings.ml)
 (deps ml-stub-generator.exe)
 (action
  (with-stdout-to
   %{targets}
   (run %{deps}))))

(library
 (name test_lwt_preemptive_bindings)
 (wrapped false)
 (foreign_stubs
  (language c)
  (names generated_stubs))
 (modules generated_bindings generated_struct_bindings)
 (libraries ctypes test_functions lwt.unix))

(test
 (name test_lwt_jobs)
 (modules test_lwt_jobs)
 (package ctypes-foreign)
 (action
  (run %{test} -runner sequential))
 (libraries
  ounit2
  ctypes
  ctypes.stubs
  ctypes-foreign
  test_lwt_preemptive_stubs
  test_functions
  test_lwt_preemptive_bindings
  tests_common))
