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.
This commit is contained in:
parent
b604b98c56
commit
15c52e9891
|
@ -972,6 +972,31 @@ cmLocalGenerator::ExpandRuleVariable(std::string const& variable,
|
||||||
return replaceValues.LinkLibraries;
|
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")
|
if(variable == "CMAKE_COMMAND")
|
||||||
{
|
{
|
||||||
const char* cmcommand =
|
const char* cmcommand =
|
||||||
|
|
|
@ -214,6 +214,7 @@ public:
|
||||||
const char* Source;
|
const char* Source;
|
||||||
const char* AssemblySource;
|
const char* AssemblySource;
|
||||||
const char* PreprocessedSource;
|
const char* PreprocessedSource;
|
||||||
|
const char* Output;
|
||||||
const char* Object;
|
const char* Object;
|
||||||
const char* ObjectDir;
|
const char* ObjectDir;
|
||||||
const char* Flags;
|
const char* Flags;
|
||||||
|
|
|
@ -1114,6 +1114,13 @@ cmLocalUnixMakefileGenerator3::MakeLauncher(const cmCustomCommand& cc,
|
||||||
RuleVariables vars;
|
RuleVariables vars;
|
||||||
vars.RuleLauncher = prop;
|
vars.RuleLauncher = prop;
|
||||||
vars.CMTarget = target;
|
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;
|
std::string launcher;
|
||||||
this->ExpandRuleVariables(launcher, vars);
|
this->ExpandRuleVariables(launcher, vars);
|
||||||
|
|
Loading…
Reference in New Issue