summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-02-10 13:52:07 (GMT)
committerBrad King <brad.king@kitware.com>2009-02-10 13:52:07 (GMT)
commit15c52e98913b68270be8af1aa0288604c302866b (patch)
tree76e046ce8fa22a2caac6b1874ad805935896a515
parentb604b98c5690c49109ad464190c1b8a7562410b0 (diff)
downloadCMake-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.cxx25
-rw-r--r--Source/cmLocalGenerator.h1
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx7
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);