diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 39576414a6966b6d77441aa026dd14afb22c471b..35430193165df54be070450bad5a0524d01c75f3 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -733,6 +733,18 @@ std::string cmLocalGenerator::ExpandRuleVariable(
       this->Makefile->GetSafeDefinition(compilerOptionExternalToolchain);
     variableMappings[compilerOptionSysroot] =
       this->Makefile->GetSafeDefinition(compilerOptionSysroot);
+
+    for (const char* const* replaceIter = cmArrayBegin(ruleReplaceVars);
+         replaceIter != cmArrayEnd(ruleReplaceVars); ++replaceIter) {
+      std::string const& lang = *i;
+      std::string actualReplace = *replaceIter;
+      if (actualReplace.find("${LANG}") != actualReplace.npos) {
+        cmSystemTools::ReplaceString(actualReplace, "${LANG}", lang);
+      }
+
+      variableMappings[actualReplace] =
+        this->Makefile->GetSafeDefinition(actualReplace);
+    }
   }
 
   std::map<std::string, std::string>::iterator compIt =
@@ -781,20 +793,6 @@ std::string cmLocalGenerator::ExpandRuleVariable(
     return ret;
   }
 
-  for (const char* const* replaceIter = cmArrayBegin(ruleReplaceVars);
-       replaceIter != cmArrayEnd(ruleReplaceVars); ++replaceIter) {
-    for (std::vector<std::string>::iterator i = enabledLanguages.begin();
-         i != enabledLanguages.end(); ++i) {
-      std::string const& lang = *i;
-      std::string actualReplace = *replaceIter;
-      if (actualReplace.find("${LANG}") != actualReplace.npos) {
-        cmSystemTools::ReplaceString(actualReplace, "${LANG}", lang);
-      }
-
-      variableMappings[actualReplace] =
-        this->Makefile->GetSafeDefinition(actualReplace);
-    }
-  }
   std::map<std::string, std::string>::iterator mapIt =
     variableMappings.find(variable);
   if (mapIt != variableMappings.end()) {