(rule
 (copy# "dl_stubs.c.%{read-lines:backend.sexp}" dl_stubs.c))

(rule
 (copy# "dl.ml.%{read-lines:backend.sexp}" dl.ml))

(rule
 (with-stdout-to
  libffi_abi.ml
  (run ./config/gen_libffi_abi.exe -cflags "%{read-lines:c_flags}")))

(library
 (name ctypes_foreign)
 (public_name ctypes-foreign)
 (instrumentation
  (backend bisect_ppx))
 (wrapped false)
 (private_modules ctypes_foreign_threaded_stubs)
 (libraries ctypes threads)
 (c_library_flags
  :standard
  (:include c_library_flags.sexp))
 (foreign_stubs
  (language c)
  (names dl_stubs ffi_call_stubs ffi_type_stubs foreign_threaded_stubs)
  (flags
   :standard
   (:include c_flags.sexp))))

(rule
 (targets c_flags c_flags.sexp c_library_flags.sexp backend.sexp)
 (action
  (run ./config/discover.exe)))
