summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-02-10 13:51:15 (GMT)
committerBrad King <brad.king@kitware.com>2009-02-10 13:51:15 (GMT)
commitb604b98c5690c49109ad464190c1b8a7562410b0 (patch)
treed477ac9d52d7328848deb4e460628deb775a29fd /Source/cmLocalGenerator.cxx
parentc895d9f2e0dac609a8e3e126cc05a0400e9740a9 (diff)
downloadCMake-b604b98c5690c49109ad464190c1b8a7562410b0.zip
CMake-b604b98c5690c49109ad464190c1b8a7562410b0.tar.gz
CMake-b604b98c5690c49109ad464190c1b8a7562410b0.tar.bz2
ENH: Define RULE_LAUNCH_* properties
This defines global, directory, and target properties RULE_LAUNCH_COMPILE, RULE_LAUNCH_LINK, and RULE_LAUNCH_CUSTOM. Their values specify 'launcher' command lines which are prefixed to compile, link, and custom build rules by Makefile generators.
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index c496686..8555064 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1034,6 +1034,8 @@ cmLocalGenerator::ExpandRuleVariables(std::string& s,
{
std::vector<std::string> enabledLanguages;
this->GlobalGenerator->GetEnabledLanguages(enabledLanguages);
+ this->InsertRuleLauncher(s, replaceValues.CMTarget,
+ replaceValues.RuleLauncher);
std::string::size_type start = s.find('<');
// no variables to expand
if(start == s.npos)
@@ -1076,6 +1078,32 @@ cmLocalGenerator::ExpandRuleVariables(std::string& s,
}
//----------------------------------------------------------------------------
+const char* cmLocalGenerator::GetRuleLauncher(cmTarget* target,
+ const char* prop)
+{
+ if(target)
+ {
+ return target->GetProperty(prop);
+ }
+ else
+ {
+ return this->Makefile->GetProperty(prop);
+ }
+}
+
+//----------------------------------------------------------------------------
+void cmLocalGenerator::InsertRuleLauncher(std::string& s, cmTarget* target,
+ const char* prop)
+{
+ if(const char* val = this->GetRuleLauncher(target, prop))
+ {
+ cmOStringStream wrapped;
+ wrapped << val << " " << s;
+ s = wrapped.str();
+ }
+}
+
+//----------------------------------------------------------------------------
std::string
cmLocalGenerator::ConvertToOutputForExistingCommon(const char* remote,
std::string const& result)