(jbuild_version 1)

(library
  ((name opam_client)
   (public_name opam-client)
   (synopsis "OCaml Package Manager client and CLI library")
   (modules (:standard \ opamMain opamManifest get-git-version))
   (libraries (opam-state opam-solver re cmdliner))
   (flags (:standard
           (:include ../ocaml-flags-standard.sexp)
           (:include ../ocaml-context-flags.sexp)))
   (wrapped false)))

(executable
  ((name opamMain)
   (public_name opam)
   (package opam)
   (modules (opamMain opamManifest))
   (flags (:standard
           (:include ../ocaml-flags-standard.sexp)
           (:include ../ocaml-context-flags.sexp)
           (:include linking.sexp)))
   (link_flags (:include manifest.sexp))
   (libraries (opam-client))))

(rule
  ((targets (manifest.sexp))
   (deps    (../../shell/subst_var.ml ../../config.status manifest.sexp.in))
   (action  (with-stdout-to ${@} (run ocaml ../../shell/subst_var.ml CONF_MANIFEST_O "" manifest.sexp.in)))))

(include opamManifest.inc)

(include manifest.inc)

(rule
  ((targets (git-sha))
   (deps    ((universe)))
   (action  (ignore-stderr (with-stdout-to ${@} (system "git rev-parse --quiet --verify HEAD || echo ."))))))

(rule
  (with-stdout-to get-git-version.ml (echo "print_string @@ let v = \"${read-lines:git-sha}\" in if v = \".\" then \"let version = None\" else \"let version = Some \\\"\" ^ v ^ \"\\\"\"")))

(rule
  (with-stdout-to opamGitVersion.ml (run ocaml ${path:get-git-version.ml})))

(rule
  (with-stdout-to linking.sexp (run echo "()")))
