|
| 1 | +open B0_kit.V000 |
| 2 | +open B00_std |
| 3 | + |
| 4 | +(* OCaml library names *) |
| 5 | + |
| 6 | +let mtime = B0_ocaml.libname "mtime" |
| 7 | +let mtime_clock_os = B0_ocaml.libname "mtime.clock.os" |
| 8 | +let unix = B0_ocaml.libname "unix" |
| 9 | +let threads = B0_ocaml.libname "threads.posix" |
| 10 | +let cmdliner = B0_ocaml.libname "cmdliner" |
| 11 | +let fmt = B0_ocaml.libname "fmt" |
| 12 | +let fmt_tty = B0_ocaml.libname "fmt.tty" |
| 13 | +let fmt_cli = B0_ocaml.libname "fmt.cli" |
| 14 | +let lwt = B0_ocaml.libname "lwt" |
| 15 | +let lwt_unix = B0_ocaml.libname "lwt.unix" |
| 16 | +let js_of_ocaml_compiler_runtime = |
| 17 | + B0_ocaml.libname "js_of_ocaml-compiler.runtime" |
| 18 | + |
| 19 | +let logs = B0_ocaml.libname "logs" |
| 20 | +let logs_fmt = B0_ocaml.libname "logs.fmt" |
| 21 | +let logs_browser = B0_ocaml.libname "logs.browser" |
| 22 | +let logs_cli = B0_ocaml.libname "logs.cli" |
| 23 | +let logs_lwt = B0_ocaml.libname "logs.lwt" |
| 24 | +let logs_threaded = B0_ocaml.libname "logs.threaded" |
| 25 | + |
| 26 | +(* Libraries *) |
| 27 | + |
| 28 | +let mod_srcs m = |
| 29 | + let mli = Fmt.str "src/%s.mli" m and ml = Fmt.str "src/%s.ml" m in |
| 30 | + Fpath.[ `File (v mli); `File (v ml) ] |
| 31 | + |
| 32 | +let logs_lib = |
| 33 | + let srcs = mod_srcs "logs" in |
| 34 | + B0_ocaml.lib logs ~doc:"The logs library" ~srcs ~requires:[] |
| 35 | + |
| 36 | +let logs_fmt_lib = |
| 37 | + let srcs = mod_srcs "logs_fmt" in |
| 38 | + let requires = [logs; fmt] in |
| 39 | + B0_ocaml.lib logs_fmt ~doc:"The logs.fmt library" ~srcs ~requires |
| 40 | + |
| 41 | +let logs_browser_lib = |
| 42 | + let srcs = mod_srcs "logs_browser" in |
| 43 | + let requires = [logs; js_of_ocaml_compiler_runtime] in |
| 44 | + B0_ocaml.lib logs_browser ~doc:"The logs.browser library" ~srcs ~requires |
| 45 | + |
| 46 | +let logs_threaded_lib = |
| 47 | + let srcs = mod_srcs "logs_threaded" in |
| 48 | + let requires = [logs; threads] in |
| 49 | + B0_ocaml.lib logs_threaded ~doc:"The logs.threaded library" ~srcs ~requires |
| 50 | + |
| 51 | +let logs_cli_lib = |
| 52 | + let srcs = mod_srcs "logs_cli" in |
| 53 | + let requires = [logs; cmdliner] in |
| 54 | + B0_ocaml.lib logs_cli ~doc:"The logs.cli library" ~srcs ~requires |
| 55 | + |
| 56 | +let logs_lwt_lib = |
| 57 | + let srcs = mod_srcs "logs_lwt" in |
| 58 | + let requires = [logs; lwt] in |
| 59 | + B0_ocaml.lib logs_lwt ~doc:"The logs.lwt library" ~srcs ~requires |
| 60 | + |
| 61 | +(* Tools *) |
| 62 | + |
| 63 | +(* Tests *) |
| 64 | + |
| 65 | +let test ?doc base ~requires = |
| 66 | + let srcs = Fpath.[`File (v (Fmt.str "test/%s.ml" base))] in |
| 67 | + B0_ocaml.exe base ?doc ~srcs ~requires |
| 68 | + |
| 69 | +let test_fmt = test "test_fmt" ~requires:[logs; logs_fmt; fmt_tty] |
| 70 | +let test_tool = |
| 71 | + let requires = [logs; logs_fmt; logs_cli; fmt_cli; fmt_tty; cmdliner] in |
| 72 | + test "tool" ~requires |
| 73 | + |
| 74 | +let test_tags = test "tags" ~requires:[logs; mtime; mtime_clock_os] |
| 75 | +let test_formatter = test "test_formatter" ~requires:[logs] |
| 76 | +let test_multi = test "test_multi" ~requires:[logs; logs_fmt; fmt_tty] |
| 77 | +let test_threaded = |
| 78 | + let requires = [logs; logs_fmt; logs_threaded; threads] in |
| 79 | + test "test_threaded" ~requires |
| 80 | + |
| 81 | +let test_lwt = |
| 82 | + let requires = [logs; logs_fmt; logs_lwt; fmt; fmt_tty; lwt; lwt_unix] in |
| 83 | + test "test_lwt" ~requires |
| 84 | + |
| 85 | +(* Packs *) |
| 86 | + |
| 87 | +let default = |
| 88 | + let meta = |
| 89 | + let open B0_meta in |
| 90 | + empty |
| 91 | + |> add authors ["The logs programmers"] |
| 92 | + |> add maintainers [ "Daniel Bünzli <daniel.buenzl [email protected]>"] |
| 93 | + |> add homepage "https://erratique.ch/software/logs" |
| 94 | + |> add online_doc "https://erratique.ch/software/logs/doc" |
| 95 | + |> add licenses ["ISC"] |
| 96 | + |> add repo "git+https://erratique.ch/repos/logs.git" |
| 97 | + |> add issues "https://github.com/dbuenzli/logs/issues" |
| 98 | + |> add description_tags ["log"; "system"; "org:erratique"; ] |
| 99 | + |> add B0_opam.Meta.build |
| 100 | + {|[["ocaml" "pkg/pkg.ml" "build" "--dev-pkg" "%{dev}%" |
| 101 | + "--with-js_of_ocaml" "%{js_of_ocaml:installed}%" |
| 102 | + "--with-fmt" "%{fmt:installed}%" |
| 103 | + "--with-cmdliner" "%{cmdliner:installed}%" |
| 104 | + "--with-lwt" "%{lwt:installed}%" |
| 105 | + "--with-base-threads" "%{base-threads:installed}%"]]|} |
| 106 | + |> add B0_opam.Meta.depopts ["cmdliner", ""; |
| 107 | + "js_of_ocaml", ""; |
| 108 | + "fmt", ""; |
| 109 | + "lwt", ""; |
| 110 | + "base-threads", ""] |
| 111 | + |> add B0_opam.Meta.conflicts [ |
| 112 | + "cmdliner", {|< "1.1.0"|}; |
| 113 | + "js_of_ocaml", {|< "4.0.0"|}; |
| 114 | + "fmt", {|< "0.9.0"|}; ] |
| 115 | + |> add B0_opam.Meta.depends |
| 116 | + [ "ocaml", {|>= "4.08.0"|}; |
| 117 | + "ocamlfind", {|build|}; |
| 118 | + "ocamlbuild", {|build|}; |
| 119 | + "topkg", {|build & >= "1.0.3"|}; |
| 120 | + "mtime", {|with-test|};] |
| 121 | + |> tag B0_opam.tag |
| 122 | + in |
| 123 | + B0_pack.v "default" ~doc:"logs package" ~meta ~locked:true @@ |
| 124 | + B0_unit.list () |
0 commit comments