Description redacted.
--
PiperOrigin-RevId: 141483567
MOS_MIGRATED_REVID=141483567
diff --git a/src/main/cpp/option_processor.cc b/src/main/cpp/option_processor.cc
index f01d79a..55c9cfd 100644
--- a/src/main/cpp/option_processor.cc
+++ b/src/main/cpp/option_processor.cc
@@ -53,13 +53,15 @@
 
 blaze_exit_code::ExitCode OptionProcessor::RcFile::Parse(
     const string& workspace,
+    const WorkspaceLayout* workspace_layout,
     vector<RcFile*>* rcfiles,
     map<string, vector<RcOption> >* rcoptions,
     string* error) {
   list<string> initial_import_stack;
   initial_import_stack.push_back(filename_);
   return Parse(
-      workspace, filename_, index_, rcfiles, rcoptions, &initial_import_stack,
+      workspace, filename_, index_, workspace_layout,
+      rcfiles, rcoptions, &initial_import_stack,
       error);
 }
 
@@ -67,6 +69,7 @@
     const string& workspace,
     const string& filename_ref,
     const int index,
+    const WorkspaceLayout* workspace_layout,
     vector<RcFile*>* rcfiles,
     map<string, vector<RcOption> >* rcoptions,
     list<string>* import_stack,
@@ -113,9 +116,9 @@
 
     if (command == "import") {
       if (words.size() != 2
-          || (words[1].compare(0, WorkspaceLayout::WorkspacePrefixLength,
-                               WorkspaceLayout::WorkspacePrefix) == 0
-              && !WorkspaceLayout::WorkspaceRelativizeRcFilePath(
+          || (words[1].compare(0, workspace_layout->WorkspacePrefixLength,
+                               workspace_layout->WorkspacePrefix) == 0
+              && !workspace_layout->WorkspaceRelativizeRcFilePath(
                   workspace, &words[1]))) {
         blaze_util::StringPrintf(error,
             "Invalid import declaration in .blazerc file '%s': '%s'",
@@ -138,7 +141,7 @@
       import_stack->push_back(words[1]);
       blaze_exit_code::ExitCode parse_exit_code =
         RcFile::Parse(workspace, rcfiles->back()->Filename(),
-                      rcfiles->back()->Index(),
+                      rcfiles->back()->Index(), workspace_layout,
                       rcfiles, rcoptions, import_stack, error);
       if (parse_exit_code != blaze_exit_code::SUCCESS) {
         return parse_exit_code;
@@ -164,9 +167,11 @@
 }
 
 OptionProcessor::OptionProcessor(
-    std::unique_ptr<StartupOptions> default_startup_options) :
-    initialized_(false),
-    parsed_startup_options_(std::move(default_startup_options)) {
+    const WorkspaceLayout* workspace_layout,
+    std::unique_ptr<StartupOptions> default_startup_options)
+    : initialized_(false),
+      workspace_layout_(workspace_layout),
+      parsed_startup_options_(std::move(default_startup_options)) {
 }
 
 std::unique_ptr<CommandLine> OptionProcessor::SplitCommandLine(
@@ -319,14 +324,14 @@
   // Parse depot and user blazerc files.
   vector<string> candidate_blazerc_paths;
   if (use_master_blazerc) {
-    WorkspaceLayout::FindCandidateBlazercPaths(
+    workspace_layout_->FindCandidateBlazercPaths(
         workspace, cwd, cmdLine->path_to_binary, cmdLine->startup_args,
         &candidate_blazerc_paths);
   }
 
   string user_blazerc_path;
   blaze_exit_code::ExitCode find_blazerc_exit_code = FindUserBlazerc(
-      blazerc, WorkspaceLayout::RcBasename(), workspace, &user_blazerc_path,
+      blazerc, workspace_layout_->RcBasename(), workspace, &user_blazerc_path,
       error);
   if (find_blazerc_exit_code != blaze_exit_code::SUCCESS) {
     return find_blazerc_exit_code;
@@ -343,7 +348,8 @@
       blazercs_.push_back(
           new RcFile(candidate_blazerc_path, blazercs_.size()));
       blaze_exit_code::ExitCode parse_exit_code =
-          blazercs_.back()->Parse(workspace, &blazercs_, &rcoptions_, error);
+          blazercs_.back()->Parse(workspace, workspace_layout_, &blazercs_,
+                                  &rcoptions_, error);
       if (parse_exit_code != blaze_exit_code::SUCCESS) {
         return parse_exit_code;
       }