summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/cmAddExecutableCommand.cxx7
-rw-r--r--Source/cmAddLibraryCommand.cxx7
-rw-r--r--Source/cmSetCommand.cxx20
-rw-r--r--Source/cmSetCommand.h4
4 files changed, 30 insertions, 8 deletions
diff --git a/Source/cmAddExecutableCommand.cxx b/Source/cmAddExecutableCommand.cxx
index 83ca862f00..d41549fe6e 100644
--- a/Source/cmAddExecutableCommand.cxx
+++ b/Source/cmAddExecutableCommand.cxx
@@ -18,14 +18,15 @@
#include "cmCacheManager.h"
// cmExecutableCommand
-bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args)
+bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& argsIn)
{
- if(args.size() < 2 )
+ if(argsIn.size() < 2 )
{
this->SetError("called with incorrect number of arguments");
return false;
}
-
+ std::vector<std::string> args;
+ cmSystemTools::ExpandListArguments(argsIn, args);
std::vector<std::string>::const_iterator s = args.begin();
std::string exename = *s;
diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx
index 445d40535f..a066585b26 100644
--- a/Source/cmAddLibraryCommand.cxx
+++ b/Source/cmAddLibraryCommand.cxx
@@ -18,14 +18,15 @@
#include "cmCacheManager.h"
// cmLibraryCommand
-bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args)
+bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& argsIn)
{
- if(args.size() < 1 )
+ if(argsIn.size() < 1 )
{
this->SetError("called with incorrect number of arguments");
return false;
}
-
+ std::vector<std::string> args;
+ cmSystemTools::ExpandListArguments(argsIn, args);
// Library type defaults to value of BUILD_SHARED_LIBS, if it exists,
// otherwise it defaults to static library.
int shared = !cmSystemTools::IsOff(m_Makefile->GetDefinition("BUILD_SHARED_LIBS"));
diff --git a/Source/cmSetCommand.cxx b/Source/cmSetCommand.cxx
index 122df61b86..8ab33e4995 100644
--- a/Source/cmSetCommand.cxx
+++ b/Source/cmSetCommand.cxx
@@ -41,7 +41,25 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
cmCacheManager::CacheEntryType type = cmCacheManager::STRING; // required if cache
const char* docstring = 0; // required if cache
std::string::size_type cacheStart = 0;
-
+
+ // check for SET(VAR v1 v2 ... vn)
+ // and create
+ if(args.size() > 2)
+ {
+ if(args[1] != "CACHE" && args[2] != "CACHE")
+ {
+ value = args[1];
+ for(int i =2; i < args.size(); ++i)
+ {
+ value += ";";
+ value += args[i];
+ }
+ m_Makefile->AddDefinition(variable, value.c_str());
+ return true;
+ }
+ }
+
+
if(args.size() == 2)
{
// SET (VAR value )
diff --git a/Source/cmSetCommand.h b/Source/cmSetCommand.h
index f89e34a16b..720a805ea4 100644
--- a/Source/cmSetCommand.h
+++ b/Source/cmSetCommand.h
@@ -73,7 +73,9 @@ public:
" TYPE and DOCSTRING are required. If TYPE is INTERNAL, then the "
" VALUE is Always written into the cache, replacing any values "
"existing in the cache. If it is not a CACHE VAR, then this always "
- "writes into the current makefile.";
+ "writes into the current makefile.\n"
+ "An optional syntax is SET(VAR VALUE1 ... VALUEN).\n"
+ "In this case VAR is set to a ; separated list of values.";
}
cmTypeMacro(cmSetCommand, cmCommand);