version = "0.8.1"
description = "Deriving"

requires = "deriving.runtime, deriving.syntax"
archive(syntax, preprocessor) = "-ignore dummy"

error(pkg_type_conv, pkg_deriving) = "Could not be loaded together with 'type_conv'. Please use deriving.tc instead."

package "runtime" (

  archive(byte) = "deriving.cma"
  archive(native) = "deriving.cmxa"
  archive(byte, pkg_num) += "deriving_num.cma"
  archive(native, pkg_num) += "deriving_num.cmxa"

  requires = "bytes"

)

package "syntax" (

  requires(syntax, preprocessor) = "deriving.syntax.std, deriving.syntax.classes"
  requires(toploop) = "deriving.syntax.std, deriving.syntax.classes"
  archive(syntax, preprocessor) = "-ignore dummy"

  error(pkg_type_conv, pkg_deriving.syntax, -pkg_deriving) = "Could not be loaded together with 'type_conv'. Please use deriving.syntax_tc instead."

  package "common" (

    requires(syntax, preprocessor) = "unix, camlp4"
    requires(toploop) = "unix, camlp4"

    archive(syntax, preprocessor) = "pa_deriving_common.cma"
    archive(syntax, toploop) = "pa_deriving_common.cma"

  )

  package "std" (

    description = "Deriving syntax extension"
    version = "0.8.1"

    requires(syntax, preprocessor) = "deriving.syntax.common"
    requires(toploop) = "deriving.syntax.common"

    error(pkg_type_conv, -pkg_deriving.syntax, -pkg_deriving) = "Could not be loaded together with 'type_conv'. Please use deriving.syntax.tc instead."

    exists_if = "pa_deriving_std.cma"

    archive(syntax, preprocessor) = "pa_deriving_std.cma"
    archive(syntax, toploop) = "pa_deriving_std.cma"

  )

  package "tc" (

    description = "Deriving syntax extension (type_conv compatible syntax)"
    version = "0.8.1"

    requires(syntax, preprocessor) = "deriving.syntax.common, type_conv"
    requires(toploop) = "deriving.syntax.common, type_conv"

    exists_if = "pa_deriving_tc.cma"

    archive(syntax, preprocessor) = "pa_deriving_tc.cma"
    archive(syntax, toploop) = "pa_deriving_tc.cma"

  )

  package "classes" (

    description = "Deriving syntax extension (predefined classes)"
    version = "0.8.1"

    requires(syntax, preprocessor) = "deriving.syntax.common"
    requires(toploop) = "deriving.syntax.common"

    exists_if = "pa_deriving_classes.cma"

    archive(syntax, preprocessor) = "pa_deriving_classes.cma"
    archive(syntax, toploop) = "pa_deriving_classes.cma"

  )

)

package "tc" (
  requires = "deriving.runtime, deriving.syntax_tc"
  archive(syntax, preprocessor) = "-ignore dummy"
)

package "syntax_tc" (
  requires(syntax, preprocessor) = "deriving.syntax.tc, deriving.syntax.classes"
  requires(toploop) = "deriving.syntax.tc, deriving.syntax.classes"
  archive(syntax, preprocessor) = "-ignore dummy"
)
