open Import

val foreign_rules
  :  Foreign_library.t
  -> sctx:Super_context.t
  -> expander:Expander.t
  -> dir:Path.Build.t
  -> dir_contents:Dir_contents.t
  -> unit Memo.t

val compile_context
  :  Library.t
  -> sctx:Super_context.t
  -> dir_contents:Dir_contents.t
  -> expander:Expander.t
  -> scope:Scope.t
  -> for_:Compilation_mode.t
  -> Compilation_context.t Memo.t

val rules
  :  Library.t
  -> sctx:Super_context.t
  -> dir_contents:Dir_contents.t
  -> expander:Expander.t
  -> scope:Scope.t
  -> (Compilation_context.t * Merlin.t) option Compilation_mode.By_mode.t Memo.t
