summaryrefslogtreecommitdiffstats
path: root/Source/cmStringCommand.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2004-03-04 15:05:14 (GMT)
committerBrad King <brad.king@kitware.com>2004-03-04 15:05:14 (GMT)
commit4990e1481d378e89a0d07d1a25d882a38530db31 (patch)
treea1fae72b8f0e2c723d47ee06844e71eff8e61a75 /Source/cmStringCommand.cxx
parent1dd718457fe1d410314d9443fa5d82462c5ae8ea (diff)
downloadCMake-4990e1481d378e89a0d07d1a25d882a38530db31.zip
CMake-4990e1481d378e89a0d07d1a25d882a38530db31.tar.gz
CMake-4990e1481d378e89a0d07d1a25d882a38530db31.tar.bz2
ENH: Added STRING(CONFIGURE ...) command.
Diffstat (limited to 'Source/cmStringCommand.cxx')
-rw-r--r--Source/cmStringCommand.cxx51
1 files changed, 51 insertions, 0 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx
index 6acb72c..76d60e0 100644
--- a/Source/cmStringCommand.cxx
+++ b/Source/cmStringCommand.cxx
@@ -49,6 +49,10 @@ bool cmStringCommand::InitialPass(std::vector<std::string> const& args)
{
return this->HandleAsciiCommand(args);
}
+ else if(subCommand == "CONFIGURE")
+ {
+ return this->HandleConfigureCommand(args);
+ }
std::string e = "does not recognize sub-command "+subCommand;
this->SetError(e.c_str());
@@ -115,6 +119,53 @@ bool cmStringCommand::HandleAsciiCommand(std::vector<std::string> const& args)
}
//----------------------------------------------------------------------------
+bool cmStringCommand::HandleConfigureCommand(
+ std::vector<std::string> const& args)
+{
+ if ( args.size() < 2 )
+ {
+ this->SetError("No input string specified.");
+ return false;
+ }
+ else if ( args.size() < 3 )
+ {
+ this->SetError("No output variable specified.");
+ return false;
+ }
+
+ // Parse options.
+ bool escapeQuotes = false;
+ bool atOnly = false;
+ for(unsigned int i = 3; i < args.size(); ++i)
+ {
+ if(args[i] == "@ONLY")
+ {
+ atOnly = true;
+ }
+ else if(args[i] == "ESCAPE_QUOTES")
+ {
+ escapeQuotes = true;
+ }
+ else
+ {
+ cmOStringStream err;
+ err << "Unrecognized argument \"" << args[i] << "\"";
+ this->SetError(err.str().c_str());
+ return false;
+ }
+ }
+
+ // Configure the string.
+ std::string output;
+ m_Makefile->ConfigureString(args[1], output, atOnly, escapeQuotes);
+
+ // Store the output in the provided variable.
+ m_Makefile->AddDefinition(args[2].c_str(), output.c_str());
+
+ return true;
+}
+
+//----------------------------------------------------------------------------
bool cmStringCommand::HandleRegexCommand(std::vector<std::string> const& args)
{
if(args.size() < 2)