Przeglądaj źródła

Makefile: Restore RULE_LAUNCH_COMPILE generation on compilation rules

Refactoring in commit 425cd167 (cmLocalGenerator: Remove the launcher
from RuleVariables, 2016-10-09) accidentally broke Makefile generator
handling of `RULE_LAUNCH_COMPILE`.  Responsibility moved from
`ExpandRuleVariables` to its call sites, and the Makefile generator call
site for compilations was not properly updated.  Fix it now.
Brad King 9 lat temu
rodzic
commit
c58a5198e5
1 zmienionych plików z 11 dodań i 1 usunięć
  1. 11 1
      Source/cmMakefileTargetGenerator.cxx

+ 11 - 1
Source/cmMakefileTargetGenerator.cxx

@@ -545,7 +545,6 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
     }
   }
   cmRulePlaceholderExpander::RuleVariables vars;
-  vars.RuleLauncher = "RULE_LAUNCH_COMPILE";
   vars.CMTargetName = this->GeneratorTarget->GetName().c_str();
   vars.CMTargetType =
     cmState::GetTargetTypeName(this->GeneratorTarget->GetType());
@@ -664,9 +663,20 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile(
       }
     }
 
+    std::string launcher;
+    {
+      const char* val = this->LocalGenerator->GetRuleLauncher(
+        this->GeneratorTarget, "RULE_LAUNCH_COMPILE");
+      if (val && *val) {
+        launcher = val;
+        launcher += " ";
+      }
+    }
+
     // Expand placeholders in the commands.
     for (std::vector<std::string>::iterator i = compileCommands.begin();
          i != compileCommands.end(); ++i) {
+      *i = launcher + *i;
       rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i,
                                                    vars);
     }