let path_and_context_of_string s =
  if Pathname.is_implicit s then
    let b = Pathname.basename s in
    let d = Pathname.dirname s in
    if d <> Pathname.current_dir_name then
      let () = Pathname.define_context d [d] in
      [s]
    else
      let include_dirs = Pathname.include_dirs_of d in
      List.map (fun include_dir -> include_dir/b) include_dirs
  else [s]