description = "Eliom: client-server Web and mobile applications"
version = "6.3.0"

package "server" (
  description = "Eliom: server-side"
  version = "[distributed with Eliom]"
  directory = "server"

  requires = "ocsigenserver,
              ocsigenserver.ext,
              ppx_deriving.runtime,
              js_of_ocaml.deriving,
              react,
              reactiveData,
              tyxml,
              lwt_react,
              cryptokit,
              reactiveData"
  archive(byte) = "server.cma"
  archive(native) = "server.cmxa"

  package "monitor" (
    directory = "monitor"
    description = "Eliom: monitoring"
    version = "[distributed with Eliom]"
    archive(byte) = "eliom_monitor.cma"
    archive(native) = "eliom_monitor.cmxa"
    package "start" (
      description = "Eliom: monitoring"
      version = "[distributed with Eliom]"
      require = "eliom.server.monitor"
      archive(byte) = "eliom_monitor_main.cma"
      archive(native) = "eliom_monitor_main.cmxa"
    )
  )
)

package "client" (
  description = "Eliom: client-side"
  version = "[distributed with Eliom]"
  directory = "client"

  requires = "ocsigenserver.cookies,
              ocsigenserver.polytables,
              ocsigenserver.baselib.base,
              ppx_deriving.runtime,
              js_of_ocaml,
              js_of_ocaml.deriving,
              js_of_ocaml-tyxml,
              js_of_ocaml-lwt,
              js_of_ocaml-lwt.logger,
              lwt_react,
              react,
              reactiveData,
              tyxml.functor"
  archive(byte) = "client.cma eliom_client_main.cmo"

  linkopts(javascript) = "+eliom.client/eliom_client.js"
)

package "syntax" (
  package "predef" (
    description = "Syntax extension: predefined commonly use syntaxes"
    version = "[distributed with Eliom]"

    requires(syntax, preprocessor) = "js_of_ocaml-camlp4,lwt_camlp4"
    requires(syntax, toploop) = "js_of_ocaml-camlp4,lwt_camlp4"
    archive(syntax, preprocessor) = "-ignore dummy"
  )

)

package "ppx" (
  directory = "ppx"
  package "server" (
    description = "Ppx syntax extension: server side"
    ppx(-ppx_driver,-custom_ppx) = "ppx_eliom_server"
    archive(ppx_driver,byte) = "ppx_eliom_server.cma"
    archive(ppx_driver,native) = "ppx_eliom_server.cmxa"
    plugin(ppx_driver,byte) = "ppx_eliom_server.cma"
    plugin(ppx_driver,native) = "ppx_eliom_server.cmxs"
    requires(ppx_driver) = "ocaml-migrate-parsetree ppx_tools_versioned"
    library_kind = "ppx_rewriter"
  )
  package "client" (
    description = "Ppx syntax extension: client side"
    ppx(-ppx_driver,-custom_ppx) = "ppx_eliom_client"
    archive(ppx_driver,byte) = "ppx_eliom_client.cma"
    archive(ppx_driver,native) = "ppx_eliom_client.cmxa"
    plugin(ppx_driver,byte) = "ppx_eliom_client.cma"
    plugin(ppx_driver,native) = "ppx_eliom_client.cmxs"
    requires(ppx_driver) = "ocaml-migrate-parsetree ppx_tools_versioned"
    library_kind = "ppx_rewriter"
  )
  package "type" (
    description = "Ppx syntax extension: type inference"
    ppx(-ppx_driver,-custom_ppx) = "ppx_eliom_types"
    archive(ppx_driver,byte) = "ppx_eliom_type.cma"
    archive(ppx_driver,native) = "ppx_eliom_type.cmxa"
    plugin(ppx_driver,byte) = "ppx_eliom_type.cma"
    plugin(ppx_driver,native) = "ppx_eliom_type.cmxs"
    requires(ppx_driver) = "ocaml-migrate-parsetree ppx_tools_versioned"
    library_kind = "ppx_rewriter"
  )
)


package "templates" (
  directory = "templates"
)

package "ocamlbuild" (
  description = "Eliom ocamlbuild plugin (js_of_ocaml part included)"
  version = "[distributed with Eliom]"
  directory = "ocamlbuild"
  requires = "js_of_ocaml-ocamlbuild"
  archive(byte) = "ocamlbuild_eliom.cma"
  archive(byte, plugin) = "ocamlbuild_eliom.cma"
  archive(native) = "ocamlbuild_eliom.cmxa"
  archive(native, plugin) = "ocamlbuild_eliom.cmxs"
)
