diff options
Diffstat (limited to 'Source/cmCustomCommandGenerator.cxx')
-rw-r--r-- | Source/cmCustomCommandGenerator.cxx | 111 |
1 files changed, 47 insertions, 64 deletions
diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index 4a19160..99bb601 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -17,11 +17,16 @@ #include "cmMakefile.h" #include "cmOutputConverter.h" -cmCustomCommandGenerator::cmCustomCommandGenerator( - cmCustomCommand const& cc, const std::string& config, cmLocalGenerator* lg): - CC(cc), Config(config), LG(lg), - OldStyle(cc.GetEscapeOldStyle()), MakeVars(cc.GetEscapeAllowMakeVars()), - GE(new cmGeneratorExpression(cc.GetBacktrace())), DependsDone(false) +cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc, + const std::string& config, + cmLocalGenerator* lg) + : CC(cc) + , Config(config) + , LG(lg) + , OldStyle(cc.GetEscapeOldStyle()) + , MakeVars(cc.GetEscapeAllowMakeVars()) + , GE(new cmGeneratorExpression(cc.GetBacktrace())) + , DependsDone(false) { } @@ -38,34 +43,28 @@ unsigned int cmCustomCommandGenerator::GetNumberOfCommands() const bool cmCustomCommandGenerator::UseCrossCompilingEmulator(unsigned int c) const { std::string const& argv0 = this->CC.GetCommandLines()[c][0]; - cmGeneratorTarget* target = - this->LG->FindGeneratorTargetToUse(argv0); - if(target && target->GetType() == cmState::EXECUTABLE) - { + cmGeneratorTarget* target = this->LG->FindGeneratorTargetToUse(argv0); + if (target && target->GetType() == cmState::EXECUTABLE) { return target->GetProperty("CROSSCOMPILING_EMULATOR") != 0; - } + } return false; } std::string cmCustomCommandGenerator::GetCommand(unsigned int c) const { std::string const& argv0 = this->CC.GetCommandLines()[c][0]; - cmGeneratorTarget* target = - this->LG->FindGeneratorTargetToUse(argv0); - if(target && target->GetType() == cmState::EXECUTABLE && - (target->IsImported() - || !this->LG->GetMakefile()->IsOn("CMAKE_CROSSCOMPILING"))) - { + cmGeneratorTarget* target = this->LG->FindGeneratorTargetToUse(argv0); + if (target && target->GetType() == cmState::EXECUTABLE && + (target->IsImported() || + !this->LG->GetMakefile()->IsOn("CMAKE_CROSSCOMPILING"))) { return target->GetLocation(this->Config); - } - if (target && target->GetType() == cmState::EXECUTABLE) - { + } + if (target && target->GetType() == cmState::EXECUTABLE) { const char* emulator = target->GetProperty("CROSSCOMPILING_EMULATOR"); - if (emulator) - { - return std::string(emulator); - } + if (emulator) { + return std::string(emulator); } + } cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = this->GE->Parse(argv0); std::string exe = cge->Evaluate(this->LG, this->Config); @@ -80,53 +79,43 @@ std::string escapeForShellOldStyle(const std::string& str) // if there are spaces std::string temp = str; if (temp.find(" ") != std::string::npos && - temp.find("\"")==std::string::npos) - { + temp.find("\"") == std::string::npos) { result = "\""; result += str; result += "\""; return result; - } + } return str; #else - for(const char* ch = str.c_str(); *ch != '\0'; ++ch) - { - if(*ch == ' ') - { + for (const char* ch = str.c_str(); *ch != '\0'; ++ch) { + if (*ch == ' ') { result += '\\'; - } - result += *ch; } + result += *ch; + } return result; #endif } -void -cmCustomCommandGenerator -::AppendArguments(unsigned int c, std::string& cmd) const +void cmCustomCommandGenerator::AppendArguments(unsigned int c, + std::string& cmd) const { unsigned int offset = 1; - if (this->UseCrossCompilingEmulator(c)) - { + if (this->UseCrossCompilingEmulator(c)) { offset = 0; - } + } cmCustomCommandLine const& commandLine = this->CC.GetCommandLines()[c]; - for(unsigned int j=offset;j < commandLine.size(); ++j) - { + for (unsigned int j = offset; j < commandLine.size(); ++j) { std::string arg = - this->GE->Parse(commandLine[j])->Evaluate(this->LG, - this->Config); + this->GE->Parse(commandLine[j])->Evaluate(this->LG, this->Config); cmd += " "; - if(this->OldStyle) - { + if (this->OldStyle) { cmd += escapeForShellOldStyle(arg); - } - else - { + } else { cmOutputConverter converter(this->LG->GetStateSnapshot()); cmd += converter.EscapeForShell(arg, this->MakeVars); - } } + } } const char* cmCustomCommandGenerator::GetComment() const @@ -151,29 +140,23 @@ std::vector<std::string> const& cmCustomCommandGenerator::GetByproducts() const std::vector<std::string> const& cmCustomCommandGenerator::GetDepends() const { - if (!this->DependsDone) - { + if (!this->DependsDone) { this->DependsDone = true; std::vector<std::string> depends = this->CC.GetDepends(); - for(std::vector<std::string>::const_iterator - i = depends.begin(); - i != depends.end(); ++i) - { - cmsys::auto_ptr<cmCompiledGeneratorExpression> cge - = this->GE->Parse(*i); + for (std::vector<std::string>::const_iterator i = depends.begin(); + i != depends.end(); ++i) { + cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = this->GE->Parse(*i); std::vector<std::string> result; - cmSystemTools::ExpandListArgument( - cge->Evaluate(this->LG, this->Config), result); + cmSystemTools::ExpandListArgument(cge->Evaluate(this->LG, this->Config), + result); for (std::vector<std::string>::iterator it = result.begin(); - it != result.end(); ++it) - { - if (cmSystemTools::FileIsFullPath(it->c_str())) - { + it != result.end(); ++it) { + if (cmSystemTools::FileIsFullPath(it->c_str())) { *it = cmSystemTools::CollapseFullPath(*it); - } } - this->Depends.insert(this->Depends.end(), result.begin(), result.end()); } + this->Depends.insert(this->Depends.end(), result.begin(), result.end()); } + } return this->Depends; } |