version = "%{version}%"
description = "Type-driven code generation"
ppx(-custom_ppx) = "./ppx_deriving"
requires = "ppx_deriving.runtime"

package "runtime" (
  version = "%{version}%"
  requires = "result"
  description = "Runtime component of built-in derivers"
  archive(byte) = "ppx_deriving_runtime.cma"
  archive(native) = "ppx_deriving_runtime.cmxa"
  exists_if = "ppx_deriving_runtime.cma"
)

package "api" (
  version = "%{version}%"
  description = "Plugin API for ppx_deriving"
  requires = "dynlink compiler-libs.common ppx_tools result ppx_derivers ocaml-migrate-parsetree"
  ppx_runtime_deps = "ppx_deriving.runtime"
  archive(byte) = "ppx_deriving.cma"
  archive(native) = "ppx_deriving.cmxa"
  exists_if = "ppx_deriving.cma"
)

package "main" (
  version = "%{version}%"
  description = "Runner for ppx_deriving"
  requires = "ppx_deriving.api"
  archive(byte) = "ppx_deriving_main.cma"
  archive(native) = "ppx_deriving_main.cmxa"
  exists_if = "ppx_deriving_main.cma"
)

package "std" (
  version = "%{version}%"
  description = "Meta-package for all built-in derivers"
  requires  = "ppx_deriving.show ppx_deriving.eq ppx_deriving.ord"
  requires += "ppx_deriving.enum ppx_deriving.iter ppx_deriving.map"
  requires += "ppx_deriving.fold ppx_deriving.create ppx_deriving.make"
)

package "show" (
  version = "%{version}%"
  description = "[@@deriving show]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_show.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_show.cma"
  archive(ppx_driver, native) = "ppx_deriving_show.cmxa"
  exists_if = "ppx_deriving_show.cma"
)

package "eq" (
  version = "%{version}%"
  description = "[@@deriving eq]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_eq.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_eq.cma"
  archive(ppx_driver, native) = "ppx_deriving_eq.cmxa"
  exists_if = "ppx_deriving_eq.cma"
)

package "ord" (
  version = "%{version}%"
  description = "[@@deriving ord]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_ord.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_ord.cma"
  archive(ppx_driver, native) = "ppx_deriving_ord.cmxa"
  exists_if = "ppx_deriving_ord.cma"
)

package "enum" (
  version = "%{version}%"
  description = "[@@deriving enum]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_enum.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_enum.cma"
  archive(ppx_driver, native) = "ppx_deriving_enum.cmxa"
  exists_if = "ppx_deriving_enum.cma"
)

package "iter" (
  version = "%{version}%"
  description = "[@@deriving iter]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_iter.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_iter.cma"
  archive(ppx_driver, native) = "ppx_deriving_iter.cmxa"
  exists_if = "ppx_deriving_iter.cma"
)

package "map" (
  version = "%{version}%"
  description = "[@@deriving map]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_map.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_map.cma"
  archive(ppx_driver, native) = "ppx_deriving_map.cmxa"
  exists_if = "ppx_deriving_map.cma"
)

package "fold" (
  version = "%{version}%"
  description = "[@@deriving fold]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_fold.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_fold.cma"
  archive(ppx_driver, native) = "ppx_deriving_fold.cmxa"
  exists_if = "ppx_deriving_fold.cma"
)

package "create" (
  version = "%{version}%"
  description = "[@@deriving create]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_create.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_create.cma"
  archive(ppx_driver, native) = "ppx_deriving_create.cmxa"
  exists_if = "ppx_deriving_create.cma"
)

package "make" (
  version = "%{version}%"
  description = "[@@deriving make]"
  requires(-ppx_driver) = "ppx_deriving"
  ppxopt(-ppx_driver,-custom_ppx) = "ppx_deriving,./ppx_deriving_make.cma"
  requires(ppx_driver) = "ppx_deriving.api"
  archive(ppx_driver, byte) = "ppx_deriving_make.cma"
  archive(ppx_driver, native) = "ppx_deriving_make.cmxa"
  exists_if = "ppx_deriving_make.cma"
)
