(env
 (dev
  (flags
   (:standard -warn-error -A))))

(library
 (name posix_errno)
 (public_name posix-errno)
 (synopsis
  "posix-errno provides POSIX errno handling and Unix error conversion")
 (foreign_stubs
  (language c)
  (names posix_errno_generated_stubs))
 (modules
  posix_errno
  posix_errno_type
  posix_errno_conversions
  posix_errno_is_native_impl
  posix_errno_generated_constants
  posix_errno_generated_stubs)
 (libraries unix ctypes posix-errno.constants posix-errno.stubs))

(rule
 (targets posix_errno_generated_constants.ml)
 (enabled_if
  (<> %{ocaml-config:host} %{ocaml-config:target}))
 (deps
  (:exec ../../posix-base/src/exec.sh)
  (:gen ./generator/gen_constants_c_target.exe))
 (action
  (with-stdout-to
   %{targets}
   (system "%{exec} %{ocaml-config:system} %{gen}"))))

(rule
 (targets posix_errno_generated_constants.ml)
 (enabled_if
  (= %{ocaml-config:host} %{ocaml-config:target}))
 (deps
  (:gen ./generator/gen_constants_c_target.exe))
 (action
  (with-stdout-to
   %{targets}
   (run %{gen}))))

(rule
 (targets posix_errno_generated_stubs.ml)
 (action
  (run ./generator/gen_stubs.exe ml %{targets})))

(rule
 (targets posix_errno_generated_stubs.c)
 (action
  (run ./generator/gen_stubs.exe c %{targets})))

(rule
 (targets posix_errno_type.ml)
 (deps ./generator/gen_errno_type.exe)
 (action
  (with-stdout-to
   %{targets}
   (run ./generator/gen_errno_type.exe))))

(rule
 (targets posix_errno_conversions.ml)
 (deps ./generator/gen_errno_conversions.exe)
 (action
  (with-stdout-to
   %{targets}
   (run ./generator/gen_errno_conversions.exe))))

(rule
 (targets posix_errno_is_native_impl.ml)
 (enabled_if
  (<> %{ocaml-config:host} %{ocaml-config:target}))
 (deps
  (:exec ../../posix-base/src/exec.sh)
  (:gen ./generator/target_is_native_detector.exe))
 (action
  (with-stdout-to
   %{targets}
   (system "%{exec} %{ocaml-config:system} %{gen}"))))

(rule
 (targets posix_errno_is_native_impl.ml)
 (enabled_if
  (= %{ocaml-config:host} %{ocaml-config:target}))
 (deps
  (:gen ./generator/target_is_native_detector.exe))
 (action
  (with-stdout-to
   %{targets}
   (run %{gen}))))
