diff options
author | Brad King <brad.king@kitware.com> | 2009-02-10 13:52:07 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-02-10 13:52:07 (GMT) |
commit | 15c52e98913b68270be8af1aa0288604c302866b (patch) | |
tree | 76e046ce8fa22a2caac6b1874ad805935896a515 | |
parent | b604b98c5690c49109ad464190c1b8a7562410b0 (diff) | |
download | CMake-15c52e98913b68270be8af1aa0288604c302866b.zip CMake-15c52e98913b68270be8af1aa0288604c302866b.tar.gz CMake-15c52e98913b68270be8af1aa0288604c302866b.tar.bz2 |
ENH: Add rule substitutions useful for launchers
This defines make rule substitutions <LANGUAGE>, <TARGET_NAME>,
<TARGET_TYPE>, and <OUTPUT>. They will be useful for RULE_LAUNCH_*
property values.
-rw-r--r-- | Source/cmLocalGenerator.cxx | 25 | ||||
-rw-r--r-- | Source/cmLocalGenerator.h | 1 | ||||
-rw-r--r-- | Source/cmLocalUnixMakefileGenerator3.cxx | 7 |
3 files changed, 33 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8555064..0f1c4ee 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -972,6 +972,31 @@ cmLocalGenerator::ExpandRuleVariable(std::string const& variable, return replaceValues.LinkLibraries; } } + if(replaceValues.Language) + { + if(variable == "LANGUAGE") + { + return replaceValues.Language; + } + } + if(replaceValues.CMTarget) + { + if(variable == "TARGET_NAME") + { + return replaceValues.CMTarget->GetName(); + } + if(variable == "TARGET_TYPE") + { + return cmTarget::TargetTypeNames[replaceValues.CMTarget->GetType()]; + } + } + if(replaceValues.Output) + { + if(variable == "OUTPUT") + { + return replaceValues.Output; + } + } if(variable == "CMAKE_COMMAND") { const char* cmcommand = diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index a624e66..10ec3b8 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -214,6 +214,7 @@ public: const char* Source; const char* AssemblySource; const char* PreprocessedSource; + const char* Output; const char* Object; const char* ObjectDir; const char* Flags; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 3910bc1..a65d7c6 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -1114,6 +1114,13 @@ cmLocalUnixMakefileGenerator3::MakeLauncher(const cmCustomCommand& cc, RuleVariables vars; vars.RuleLauncher = prop; vars.CMTarget = target; + std::string output; + const std::vector<std::string>& outputs = cc.GetOutputs(); + if(!outputs.empty()) + { + output = this->Convert(outputs[0].c_str(), relative, SHELL); + } + vars.Output = output.c_str(); std::string launcher; this->ExpandRuleVariables(launcher, vars); |