diff --git a/src/jbuild.ml b/src/jbuild.ml index 4ab84962..ffab7cf7 100644 --- a/src/jbuild.ml +++ b/src/jbuild.ml @@ -942,7 +942,7 @@ end module Menhir = struct type t = { merge_into : string option - ; flags : String_with_vars.t list + ; flags : Ordered_set_lang.Unexpanded.t ; modules : string list ; mode : Rule.Mode.t ; loc : Loc.t @@ -951,7 +951,7 @@ module Menhir = struct let v1 = record (field_o "merge_into" string >>= fun merge_into -> - field "flags" (list String_with_vars.t) ~default:[] >>= fun flags -> + field_oslu "flags" >>= fun flags -> field "modules" (list string) >>= fun modules -> Rule.Mode.field >>= fun mode -> return diff --git a/src/jbuild.mli b/src/jbuild.mli index e994d553..1ee4aba3 100644 --- a/src/jbuild.mli +++ b/src/jbuild.mli @@ -287,7 +287,7 @@ end module Menhir : sig type t = { merge_into : string option - ; flags : String_with_vars.t list + ; flags : Ordered_set_lang.Unexpanded.t ; modules : string list ; mode : Rule.Mode.t ; loc : Loc.t diff --git a/src/menhir.ml b/src/menhir.ml index fced8e68..66d31eb1 100644 --- a/src/menhir.ml +++ b/src/menhir.ml @@ -1,17 +1,22 @@ open Import +open Build.O +open! No_io let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) = let targets n = List.map ~f:(Path.relative dir) [n ^ ".ml"; n ^ ".mli"] in let flags = - List.map ~f:(Super_context.expand_vars sctx ~scope ~dir) t.flags in + Super_context.expand_and_eval_set sctx ~scope ~dir t.flags + ~standard:[] in let menhir = let menhir = Super_context.resolve_program sctx ~hint:"opam install menhir" "menhir" in - fun ~extra_targets -> - Build.run ~extra_targets - menhir - ~dir - ~context:(Super_context.context sctx) in + fun ~extra_targets args-> + flags + >>> (Build.run ~extra_targets + menhir + ~dir + ~context:(Super_context.context sctx) + args) in let add_rule_get_targets = Super_context.add_rule_get_targets sctx ~mode:t.mode ~loc:t.loc in let mly name = Path.relative dir (name ^ ".mly") in @@ -21,7 +26,7 @@ let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) = add_rule_get_targets ( menhir ~extra_targets:(targets name) - [ As flags + [ Dyn (fun x -> As x) ; Dep (mly name)] )) t.modules | Some merge_into -> @@ -29,7 +34,7 @@ let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) = menhir ~extra_targets:(targets merge_into) [ A "--base" ; A merge_into - ; As flags + ; Dyn (fun x -> As x) ; Deps (List.map ~f:mly t.modules) ] )