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

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

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

  package "ext" (
    directory = "extensions"
    description = "Eliom: server-side extensions"
    version = "[distributed with Eliom]"
    require = "eliom.server"
    archive(byte) = "extensions.cma"
    archive(native) = "extensions.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,
              deriving.runtime,
              js_of_ocaml,
	    	      js_of_ocaml.deriving,
              js_of_ocaml.tyxml,
              js_of_ocaml.log,
              js_of_ocaml.weak,
              lwt.react,
              react,
              reactiveData,
              tyxml.functor"
  archive(byte) = "client.cma eliom_client_main.cmo"

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

package "syntax" (
  directory = "syntax"
  package "common" (
    description = "Syntax extension: spliting client and server code (base)"
    version = "[distributed with Eliom]"
    requires = "camlp4"
    requires(preprocessor, syntax, pkg_type_conv) = "type_conv"
    archive(syntax, preprocessor) = "pa_eliom_seed.cmo"
  )

  package "client" (
    description = "Syntax extension: spliting client and server code (client side)"
    version = "[distributed with Eliom]"
    requires(syntax, preprocessor) = "eliom.syntax.common"
    requires(syntax, toploop) = "eliom.syntax.common"
    archive(syntax, preprocessor) = "pa_eliom_client_client.cmo"
    archive(syntax, toploop) = "pa_eliom_client_client.cmo"
  )

  package "server" (
    description = "Syntax extension: spliting client and server code (server side)"
    version = "[distributed with Eliom]"
    requires(syntax, preprocessor) = "eliom.syntax.common"
    requires(syntax, toploop) = "eliom.syntax.common"
    archive(syntax, preprocessor) = "pa_eliom_client_server.cmo"
    archive(syntax, toploop) = "pa_eliom_client_server.cmo"
  )

  package "type" (
    description = "Syntax extension: spliting client and server code (type inference)"
    version = "[distributed with Eliom]"
    requires(syntax, preprocessor) = "eliom.syntax.common"
    archive(syntax, preprocessor) = "pa_eliom_type_filter.cmo"
  )

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

    requires(syntax, preprocessor) = "js_of_ocaml.syntax,js_of_ocaml.deriving.syntax,lwt.syntax,tyxml.syntax"
    requires(syntax, toploop) = "js_of_ocaml.syntax,js_of_ocaml.deriving.syntax,lwt.syntax,tyxml.syntax"
    archive(syntax, preprocessor) = "-ignore dummy"
  )

)

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"
)
