File: dune

package info (click to toggle)
camlp-streams 5.0.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 164 kB
  • sloc: ml: 380; makefile: 3
file content (63 lines) | stat: -rw-r--r-- 1,883 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
(* -*- tuareg -*- *)

(* camlp-streams is built in three different ways, depending on the version of
   OCaml it's built for:
   - 4.07 and earlier: empty library; Standard Library Stream and Genlex used
     directly, since it's not possible in these versions to override the modules
   - 4.08-4.14: Standard Library Stream and Genlex re-exported (without
     deprecation for 4.14)
   - 5.0+: modules in src/ are compiled
 *)

open Jbuild_plugin.V1

let modules =
  let version = Scanf.sscanf ocaml_version "%u.%u" (fun a b -> (a, b)) in
  if version >= (4, 08) then ":standard" else ""

let dune_fragment_for mod_name basename =
  Printf.sprintf {|
(rule
  (target %s.mli)
  (action (copy src/%%{target} %%{target}))
  (enabled_if (>= %%{ocaml_version} 5.0)))

(rule
  (target %s.ml)
  (action (copy src/%%{target} %%{target}))
  (enabled_if (>= %%{ocaml_version} 5.0)))

(rule
  (target %s.mli)
  (action (with-stdout-to %%{target}
    (echo "include module type of struct include %s end")))
  (enabled_if (< %%{ocaml_version} 5.0)))

(rule
  (target %s.ml)
  (action (with-stdout-to %%{target}
    (echo "include %s")))
  (enabled_if (< %%{ocaml_version} 5.0)))|}
    basename basename basename mod_name basename mod_name

let () =
  let stream = dune_fragment_for "Stream" "stream" in
  let genlex = dune_fragment_for "Genlex" "genlex" in
  Printf.ksprintf send {|
%s %s
(rule
  (action (with-stdout-to flags.sexp (echo "(-w -9)")))
  (enabled_if (>= %%{ocaml_version} 5.0)))
(rule
  (action (with-stdout-to flags.sexp (echo "(-w -3)")))
  (enabled_if (and (>= %%{ocaml_version} 4.14) (< %%{ocaml_version} 5.0))))
(rule
  (action (with-stdout-to flags.sexp (echo "()")))
  (enabled_if (< %%{ocaml_version} 4.14)))

(library
  (name camlp_streams)
  (public_name camlp-streams)
  (modules %s)
  (wrapped false)
  (flags :standard (:include flags.sexp)))|} stream genlex modules