diff --git a/src/domain/dune b/src/domain/dune new file mode 100644 index 00000000..c75ee3c4 --- /dev/null +++ b/src/domain/dune @@ -0,0 +1,14 @@ +(library + (name opentelemetry_domain) + (synopsis "Compatibility package for the Domain module for opentelemetry") + (public_name opentelemetry.domain) + (modules opentelemetry_domain)) + +(executable + (modules gen) + (name gen)) + +(rule + (targets opentelemetry_domain.ml) + (action + (run ./gen.exe))) diff --git a/src/domain/gen.ml b/src/domain/gen.ml new file mode 100644 index 00000000..f1cf82e6 --- /dev/null +++ b/src/domain/gen.ml @@ -0,0 +1,26 @@ +let domain_4 = + {| +let cpu_relax = ignore +let relax_loop : int -> unit = ignore + |} + +let domain_5 = + {| +let cpu_relax = Domain.cpu_relax +let relax_loop i = + for _j = 1 to i do cpu_relax () done +|} + +let write_file file s = + let oc = open_out file in + output_string oc s; + close_out oc + +let () = + let version = Scanf.sscanf Sys.ocaml_version "%d.%d.%s" (fun x y _ -> x, y) in + write_file "opentelemetry_domain.ml" + (if version >= (5, 0) then + domain_5 + else + domain_4); + () diff --git a/src/domain/opentelemetry_domain.mli b/src/domain/opentelemetry_domain.mli new file mode 100644 index 00000000..36f5929e --- /dev/null +++ b/src/domain/opentelemetry_domain.mli @@ -0,0 +1,4 @@ +val cpu_relax : unit -> unit + +val relax_loop : int -> unit +(** Call {!cpu_relax} n times *)