make sure ; expansion is done in all commands

This commit is contained in:
Bill Hoffman 2002-03-29 14:20:32 -05:00
parent 0223ba91f3
commit 7d76de4403
63 changed files with 283 additions and 263 deletions

View File

@ -17,13 +17,16 @@
#include "cmAbstractFilesCommand.h" #include "cmAbstractFilesCommand.h"
// cmAbstractFilesCommand // cmAbstractFilesCommand
bool cmAbstractFilesCommand::InitialPass(std::vector<std::string> const& args) bool cmAbstractFilesCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
bool ret = true; bool ret = true;
std::string m = "could not find source file(s):\n"; std::string m = "could not find source file(s):\n";

View File

@ -18,17 +18,19 @@
// cmAddCustomCommandCommand // cmAddCustomCommandCommand
bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& args) bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
/* Let's complain at the end of this function about the lack of a particular /* Let's complain at the end of this function about the lack of a particular
arg. For the moment, let's say that SOURCE, COMMAND, TARGET are always arg. For the moment, let's say that SOURCE, COMMAND, TARGET are always
required. required.
*/ */
if (args.size() < 6) if (argsIn.size() < 6)
{ {
this->SetError("called with wrong number of arguments."); this->SetError("called with wrong number of arguments.");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
std::string source, command, target; std::string source, command, target;
std::vector<std::string> command_args, depends, outputs; std::vector<std::string> command_args, depends, outputs;

View File

@ -17,15 +17,17 @@
#include "cmAddCustomTargetCommand.h" #include "cmAddCustomTargetCommand.h"
// cmAddCustomTargetCommand // cmAddCustomTargetCommand
bool cmAddCustomTargetCommand::InitialPass(std::vector<std::string> const& args) bool cmAddCustomTargetCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
bool all = false; bool all = false;
if(args.size() < 2 ) if(argsIn.size() < 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// all target option // all target option
std::string arguments; std::string arguments;

View File

@ -17,13 +17,16 @@
#include "cmAddDefinitionsCommand.h" #include "cmAddDefinitionsCommand.h"
// cmAddDefinitionsCommand // cmAddDefinitionsCommand
bool cmAddDefinitionsCommand::InitialPass(std::vector<std::string> const& args) bool cmAddDefinitionsCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
for(std::vector<std::string>::const_iterator i = args.begin(); for(std::vector<std::string>::const_iterator i = args.begin();
i != args.end(); ++i) i != args.end(); ++i)
{ {

View File

@ -18,14 +18,16 @@
#include "cmCacheManager.h" #include "cmCacheManager.h"
// cmDependenciesCommand // cmDependenciesCommand
bool cmAddDependenciesCommand::InitialPass(std::vector<std::string> const& args) bool cmAddDependenciesCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 2 ) if(argsIn.size() < 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
std::string target_name = args[0]; std::string target_name = args[0];
cmTargets &tgts = m_Makefile->GetTargets(); cmTargets &tgts = m_Makefile->GetTargets();

View File

@ -34,13 +34,7 @@ bool cmAddTestCommand::InitialPass(std::vector<std::string> const& args)
// also expand any CMake variables // also expand any CMake variables
m_Args.erase(m_Args.begin(), m_Args.end()); m_Args.erase(m_Args.begin(), m_Args.end());
std::string temp; cmSystemTools::ExpandListArguments(args, m_Args);
for (std::vector<std::string>::const_iterator j = args.begin();
j != args.end(); ++j)
{
m_Args.push_back(*j);
}
return true; return true;
} }

View File

@ -19,13 +19,15 @@
#include "cmTarget.h" #include "cmTarget.h"
// cmCableClassSetCommand // cmCableClassSetCommand
bool cmCableClassSetCommand::InitialPass(std::vector<std::string> const& args) bool cmCableClassSetCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 2) if(argsIn.size() < 2)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// The first argument is the name of the set. // The first argument is the name of the set.
std::vector<std::string>::const_iterator arg = args.begin(); std::vector<std::string>::const_iterator arg = args.begin();

View File

@ -122,17 +122,19 @@ cmCableWrapTclCommand::~cmCableWrapTclCommand()
// cmCableWrapTclCommand // cmCableWrapTclCommand
bool cmCableWrapTclCommand::InitialPass(std::vector<std::string> const& args) bool cmCableWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 2) if(argsIn.size() < 2)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Prepare to iterate through the arguments. // Prepare to iterate through the arguments.
std::vector<std::string>::const_iterator arg = args.begin(); std::vector<std::string>::const_iterator arg = args.begin();
// The first argument is the name of the target. // The first argument is the name of the target.
m_TargetName = *arg++; m_TargetName = *arg++;

View File

@ -68,7 +68,6 @@
#include "cmSetSourceFilesPropertiesCommand.cxx" #include "cmSetSourceFilesPropertiesCommand.cxx"
#include "cmSiteNameCommand.cxx" #include "cmSiteNameCommand.cxx"
#include "cmSourceFilesCommand.cxx" #include "cmSourceFilesCommand.cxx"
#include "cmSourceFilesFlagsCommand.cxx"
#include "cmSourceFilesRemoveCommand.cxx" #include "cmSourceFilesRemoveCommand.cxx"
#include "cmSourceGroupCommand.cxx" #include "cmSourceGroupCommand.cxx"
#include "cmSubdirCommand.cxx" #include "cmSubdirCommand.cxx"
@ -137,7 +136,6 @@ void GetPredefinedCommands(std::list<cmCommand*>& commands)
commands.push_back(new cmSetSourceFilesPropertiesCommand); commands.push_back(new cmSetSourceFilesPropertiesCommand);
commands.push_back(new cmSiteNameCommand); commands.push_back(new cmSiteNameCommand);
commands.push_back(new cmSourceFilesCommand); commands.push_back(new cmSourceFilesCommand);
commands.push_back(new cmSourceFilesFlagsCommand);
commands.push_back(new cmSourceFilesRemoveCommand); commands.push_back(new cmSourceFilesRemoveCommand);
commands.push_back(new cmSourceGroupCommand); commands.push_back(new cmSourceGroupCommand);
commands.push_back(new cmSubdirCommand); commands.push_back(new cmSubdirCommand);

View File

@ -27,7 +27,7 @@ bool cmCreateTestSourceList::InitialPass(std::vector<std::string> const& argsIn)
} }
std::vector<std::string> args; std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args, true); cmSystemTools::ExpandListArguments(argsIn, args);
std::vector<std::string>::iterator i = args.begin(); std::vector<std::string>::iterator i = args.begin();

View File

@ -19,7 +19,7 @@
// cmFLTKWrapUICommand // cmFLTKWrapUICommand
bool cmFLTKWrapUICommand::InitialPass(std::vector<std::string> const& args) bool cmFLTKWrapUICommand::InitialPass(std::vector<std::string> const& args)
{ {
if(args.size() < 2 ) if(args.size() != 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;

View File

@ -31,12 +31,12 @@ bool cmFindFileCommand::InitialPass(std::vector<std::string> const& argsIn)
std::string helpString = "Where can the "; std::string helpString = "Where can the ";
helpString += argsIn[1] + " file be found"; helpString += argsIn[1] + " file be found";
size_t size = argsIn.size(); size_t size = argsIn.size();
std::vector<std::string> args; std::vector<std::string> argst;
for(unsigned int j = 0; j < size; ++j) for(unsigned int j = 0; j < size; ++j)
{ {
if(argsIn[j] != "DOC") if(argsIn[j] != "DOC")
{ {
args.push_back(argsIn[j]); argst.push_back(argsIn[j]);
} }
else else
{ {
@ -47,6 +47,9 @@ bool cmFindFileCommand::InitialPass(std::vector<std::string> const& argsIn)
break; break;
} }
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argst, args);
std::vector<std::string>::const_iterator i = args.begin(); std::vector<std::string>::const_iterator i = args.begin();
// Use the first argument as the name of something to be defined // Use the first argument as the name of something to be defined
const char* define = (*i).c_str(); const char* define = (*i).c_str();

View File

@ -27,12 +27,12 @@ bool cmFindLibraryCommand::InitialPass(std::vector<std::string> const& argsIn)
} }
std::string helpString; std::string helpString;
size_t size = argsIn.size(); size_t size = argsIn.size();
std::vector<std::string> args; std::vector<std::string> argst;
for(unsigned int j = 0; j < size; ++j) for(unsigned int j = 0; j < size; ++j)
{ {
if(argsIn[j] != "DOC") if(argsIn[j] != "DOC")
{ {
args.push_back(argsIn[j]); argst.push_back(argsIn[j]);
} }
else else
{ {
@ -43,6 +43,8 @@ bool cmFindLibraryCommand::InitialPass(std::vector<std::string> const& argsIn)
break; break;
} }
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argst, args);
std::vector<std::string> path; std::vector<std::string> path;
std::vector<std::string> names; std::vector<std::string> names;

View File

@ -30,13 +30,13 @@ bool cmFindPathCommand::InitialPass(std::vector<std::string> const& argsIn)
// already, if so use that value and don't look for the program // already, if so use that value and don't look for the program
std::string helpString = "What is the path where the file "; std::string helpString = "What is the path where the file ";
helpString += argsIn[1] + " can be found"; helpString += argsIn[1] + " can be found";
std::vector<std::string> args; std::vector<std::string> argst;
size_t size = argsIn.size(); size_t size = argsIn.size();
for(unsigned int j = 0; j < size; ++j) for(unsigned int j = 0; j < size; ++j)
{ {
if(argsIn[j] != "DOC") if(argsIn[j] != "DOC")
{ {
args.push_back(argsIn[j]); argst.push_back(argsIn[j]);
} }
else else
{ {
@ -47,6 +47,9 @@ bool cmFindPathCommand::InitialPass(std::vector<std::string> const& argsIn)
break; break;
} }
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argst, args);
const char* cacheValue const char* cacheValue
= m_Makefile->GetDefinition(args[0].c_str()); = m_Makefile->GetDefinition(args[0].c_str());
if(cacheValue && strcmp(cacheValue, "NOTFOUND")) if(cacheValue && strcmp(cacheValue, "NOTFOUND"))

View File

@ -30,12 +30,12 @@ bool cmFindProgramCommand::InitialPass(std::vector<std::string> const& argsIn)
} }
std::string doc = "Path to a program."; std::string doc = "Path to a program.";
size_t size = argsIn.size(); size_t size = argsIn.size();
std::vector<std::string> args; std::vector<std::string> argst;
for(unsigned int j = 0; j < size; ++j) for(unsigned int j = 0; j < size; ++j)
{ {
if(argsIn[j] != "DOC") if(argsIn[j] != "DOC")
{ {
args.push_back(argsIn[j]); argst.push_back(argsIn[j]);
} }
else else
{ {
@ -46,6 +46,10 @@ bool cmFindProgramCommand::InitialPass(std::vector<std::string> const& argsIn)
break; break;
} }
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argst, args);
std::vector<std::string>::iterator i = args.begin(); std::vector<std::string>::iterator i = args.begin();
// Use the first argument as the name of something to be defined // Use the first argument as the name of something to be defined
const char* define = (*i).c_str(); const char* define = (*i).c_str();

View File

@ -20,7 +20,7 @@
bool cmGetSourceFilePropertyCommand::InitialPass(std::vector<std::string> const& bool cmGetSourceFilePropertyCommand::InitialPass(std::vector<std::string> const&
args) args)
{ {
if(args.size() < 3 ) if(args.size() != 3 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
@ -38,7 +38,7 @@ bool cmGetSourceFilePropertyCommand::InitialPass(std::vector<std::string> const&
{ {
m_Makefile->AddDefinition(var, sf->GetWrapExclude()); m_Makefile->AddDefinition(var, sf->GetWrapExclude());
} }
if(args[2] == "FLAGS") if(args[2] == "COMPILE_FLAGS")
{ {
m_Makefile->AddDefinition(var, sf->GetCompileFlags()); m_Makefile->AddDefinition(var, sf->GetCompileFlags());
} }

View File

@ -53,7 +53,7 @@ public:
virtual const char* GetFullDocumentation() virtual const char* GetFullDocumentation()
{ {
return return
"GET_SOURCE_FILE_PROPERTY(VAR file [ABSTRACT|WRAP_EXCLUDE|FLAGS]) " "GET_SOURCE_FILE_PROPERTY(VAR file [ABSTRACT|WRAP_EXCLUDE|COMPILE_FLAGS]) "
"Get a property from a source file. The value of the property is stored " "Get a property from a source file. The value of the property is stored "
"in the variable VAR."; "in the variable VAR.";
} }

View File

@ -17,13 +17,15 @@
#include "cmIncludeDirectoryCommand.h" #include "cmIncludeDirectoryCommand.h"
#include "cmCacheManager.h" #include "cmCacheManager.h"
// cmIncludeDirectoryCommand // cmIncludeDirectoryCommand
bool cmIncludeDirectoryCommand::InitialPass(std::vector<std::string> const& args) bool cmIncludeDirectoryCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
std::vector<std::string>::const_iterator i = args.begin(); std::vector<std::string>::const_iterator i = args.begin();

View File

@ -18,13 +18,15 @@
#include "cmCacheManager.h" #include "cmCacheManager.h"
// cmExecutableCommand // cmExecutableCommand
bool cmInstallFilesCommand::InitialPass(std::vector<std::string> const& args) bool cmInstallFilesCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 2) if(argsIn.size() < 2)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Create an INSTALL_FILES target specifically for this path. // Create an INSTALL_FILES target specifically for this path.
m_TargetName = "INSTALL_FILES_"+args[0]; m_TargetName = "INSTALL_FILES_"+args[0];

View File

@ -18,13 +18,15 @@
#include "cmCacheManager.h" #include "cmCacheManager.h"
// cmExecutableCommand // cmExecutableCommand
bool cmInstallProgramsCommand::InitialPass(std::vector<std::string> const& args) bool cmInstallProgramsCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 2) if(argsIn.size() < 2)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Create an INSTALL_PROGRAMS target specifically for this path. // Create an INSTALL_PROGRAMS target specifically for this path.
m_TargetName = "INSTALL_PROGRAMS_"+args[0]; m_TargetName = "INSTALL_PROGRAMS_"+args[0];

View File

@ -18,13 +18,15 @@
#include "cmCacheManager.h" #include "cmCacheManager.h"
// cmExecutableCommand // cmExecutableCommand
bool cmInstallTargetsCommand::InitialPass(std::vector<std::string> const& args) bool cmInstallTargetsCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 2 ) if(argsIn.size() < 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
cmTargets &tgts = m_Makefile->GetTargets(); cmTargets &tgts = m_Makefile->GetTargets();
std::vector<std::string>::const_iterator s = args.begin(); std::vector<std::string>::const_iterator s = args.begin();

View File

@ -17,13 +17,16 @@
#include "cmLinkDirectoriesCommand.h" #include "cmLinkDirectoriesCommand.h"
// cmLinkDirectoriesCommand // cmLinkDirectoriesCommand
bool cmLinkDirectoriesCommand::InitialPass(std::vector<std::string> const& args) bool cmLinkDirectoriesCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
for(std::vector<std::string>::const_iterator i = args.begin(); for(std::vector<std::string>::const_iterator i = args.begin();
i != args.end(); ++i) i != args.end(); ++i)
{ {

View File

@ -18,13 +18,15 @@
// cmLoadcacheCommand // cmLoadcacheCommand
bool cmLoadCacheCommand::InitialPass(std::vector<std::string> const& args) bool cmLoadCacheCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if (args.size()< 1) if (argsIn.size()< 1)
{ {
this->SetError("called with wrong number of arguments."); this->SetError("called with wrong number of arguments.");
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Cache entries to be excluded from the import list. // Cache entries to be excluded from the import list.
// If this set is empty, all cache entries are brought in // If this set is empty, all cache entries are brought in
// and they can not be overridden. // and they can not be overridden.

View File

@ -20,7 +20,7 @@
// cmMakeDirectoryCommand // cmMakeDirectoryCommand
bool cmMakeDirectoryCommand::InitialPass(std::vector<std::string> const& args) bool cmMakeDirectoryCommand::InitialPass(std::vector<std::string> const& args)
{ {
if(args.size() < 1 ) if(args.size() != 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;

View File

@ -17,13 +17,16 @@
#include "cmMarkAsAdvancedCommand.h" #include "cmMarkAsAdvancedCommand.h"
// cmMarkAsAdvancedCommand // cmMarkAsAdvancedCommand
bool cmMarkAsAdvancedCommand::InitialPass(std::vector<std::string> const& args) bool cmMarkAsAdvancedCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
unsigned int i =0; unsigned int i =0;
const char* value = "1"; const char* value = "1";
bool overwrite = false; bool overwrite = false;

View File

@ -159,7 +159,7 @@ void cmLBDepend::DependWalk(cmDependInformation* info)
// cmOutputRequiredFilesCommand // cmOutputRequiredFilesCommand
bool cmOutputRequiredFilesCommand::InitialPass(std::vector<std::string> const& args) bool cmOutputRequiredFilesCommand::InitialPass(std::vector<std::string> const& args)
{ {
if(args.size() < 2 ) if(args.size() != 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;

View File

@ -19,7 +19,7 @@
// cmProjectCommand // cmProjectCommand
bool cmProjectCommand::InitialPass(std::vector<std::string> const& args) bool cmProjectCommand::InitialPass(std::vector<std::string> const& args)
{ {
if(args.size() < 1 || args.size() > 1) if(args.size() != 1 )
{ {
this->SetError("PROJECT called with incorrect number of arguments"); this->SetError("PROJECT called with incorrect number of arguments");
return false; return false;

View File

@ -17,13 +17,15 @@
#include "cmQTWrapCPPCommand.h" #include "cmQTWrapCPPCommand.h"
// cmQTWrapCPPCommand // cmQTWrapCPPCommand
bool cmQTWrapCPPCommand::InitialPass(std::vector<std::string> const& args) bool cmQTWrapCPPCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 3 ) if(argsIn.size() < 3 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Now check and see if the value has been stored in the cache // Now check and see if the value has been stored in the cache
// already, if so use that value and don't look for the program // already, if so use that value and don't look for the program

View File

@ -17,13 +17,15 @@
#include "cmQTWrapUICommand.h" #include "cmQTWrapUICommand.h"
// cmQTWrapUICommand // cmQTWrapUICommand
bool cmQTWrapUICommand::InitialPass(std::vector<std::string> const& args) bool cmQTWrapUICommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 4 ) if(argsIn.size() < 4 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Now check and see if the value has been stored in the cache // Now check and see if the value has been stored in the cache
// already, if so use that value and don't look for the program // already, if so use that value and don't look for the program

View File

@ -18,14 +18,16 @@
// cmSetSourceFilesPropertiesCommand // cmSetSourceFilesPropertiesCommand
bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> const& bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> const&
args) argsIn)
{ {
if(args.size() < 2 ) if(argsIn.size() < 2 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
std::vector<std::string>::const_iterator j; std::vector<std::string>::const_iterator j;
// first collect up all the flags that need to be set on the file // first collect up all the flags that need to be set on the file
bool abstract = false; bool abstract = false;
@ -46,7 +48,7 @@ bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> con
{ {
generated = true; generated = true;
} }
else if(*j == "FLAGS") else if(*j == "COMPILE_FLAGS")
{ {
++j; ++j;
if(j == args.end()) if(j == args.end())
@ -61,7 +63,7 @@ bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> con
for(j = args.begin(); j != args.end(); ++j) for(j = args.begin(); j != args.end(); ++j)
{ {
// at the sign of the first property exit the loop // at the sign of the first property exit the loop
if(*j == "ABSTRACT" || *j == "WRAP_EXCLUDE" || *j == "FLAGS") if(*j == "ABSTRACT" || *j == "WRAP_EXCLUDE" || *j == "COMPILE_FLAGS")
{ {
break; break;
} }

View File

@ -53,7 +53,7 @@ public:
virtual const char* GetFullDocumentation() virtual const char* GetFullDocumentation()
{ {
return return
"SET_SOURCE_FILES_PROPERTIES(flags file1 file2 [ABSTRACT|WRAP_EXCLUDE|GENERATED|FLAGS] [flags]) " "SET_SOURCE_FILES_PROPERTIES(flags file1 file2 [ABSTRACT|WRAP_EXCLUDE|GENERATED|COMPILE_FLAGS] [flags]) "
"Set properties on a file. The syntax for the command is to list all the files you want " "Set properties on a file. The syntax for the command is to list all the files you want "
"to change, and then provide the values you want to set next."; "to change, and then provide the values you want to set next.";
} }

View File

@ -19,7 +19,7 @@
// cmSiteNameCommand // cmSiteNameCommand
bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args) bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
{ {
if(args.size() < 1 ) if(args.size() != 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;

View File

@ -17,14 +17,16 @@
#include "cmSourceFilesCommand.h" #include "cmSourceFilesCommand.h"
// cmSourceFilesCommand // cmSourceFilesCommand
bool cmSourceFilesCommand::InitialPass(std::vector<std::string> const& args) bool cmSourceFilesCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
std::string name = args[0]; std::string name = args[0];
int generated = 0; int generated = 0;

View File

@ -1,49 +0,0 @@
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Insight Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include "cmSourceFilesFlagsCommand.h"
// cmSourceFilesFlagsCommand
bool cmSourceFilesFlagsCommand::InitialPass(std::vector<std::string> const&
args)
{
if(args.size() < 2 )
{
this->SetError("called with incorrect number of arguments");
return false;
}
std::vector<std::string>::const_iterator j = args.begin();
std::string flags = *j;
++j;
for(;j != args.end(); ++j)
{
cmSourceFile* sf = m_Makefile->GetSource(j->c_str());
if(sf)
{
sf->SetCompileFlags(flags.c_str());
}
else
{
std::string m = "could not find source file ";
m += *j;
this->SetError(m.c_str());
return false;
}
}
return true;
}

View File

@ -1,64 +0,0 @@
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Insight Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef cmSourceFilesFlagsCommand_h
#define cmSourceFilesFlagsCommand_h
#include "cmStandardIncludes.h"
#include "cmCommand.h"
class cmSourceFilesFlagsCommand : public cmCommand
{
public:
virtual cmCommand* Clone()
{
return new cmSourceFilesFlagsCommand;
}
/**
* This is called when the command is first encountered in
* the input file.
*/
virtual bool InitialPass(std::vector<std::string> const& args);
/**
* The name of the command as specified in CMakeList.txt.
*/
virtual const char* GetName() { return "SOURCE_FILES_FLAGS";}
/**
* Succinct documentation.
*/
virtual const char* GetTerseDocumentation()
{
return "Set compile flags for a specific list of files.";
}
/**
* Longer documentation.
*/
virtual const char* GetFullDocumentation()
{
return
"SOURCE_FILES_FLAGS(flags file1 file2 ..)";
}
cmTypeMacro(cmSourceFilesFlagsCommand, cmCommand);
};
#endif

View File

@ -17,13 +17,16 @@
#include "cmSourceFilesRemoveCommand.h" #include "cmSourceFilesRemoveCommand.h"
// cmSourceFilesRemoveCommand // cmSourceFilesRemoveCommand
bool cmSourceFilesRemoveCommand::InitialPass(std::vector<std::string> const& args) bool cmSourceFilesRemoveCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
int generated = 0; int generated = 0;
for(std::vector<std::string>::const_iterator i = (args.begin() + 1); for(std::vector<std::string>::const_iterator i = (args.begin() + 1);
i != args.end(); ++i) i != args.end(); ++i)

View File

@ -17,13 +17,16 @@
#include "cmSubdirCommand.h" #include "cmSubdirCommand.h"
// cmSubdirCommand // cmSubdirCommand
bool cmSubdirCommand::InitialPass(std::vector<std::string> const& args) bool cmSubdirCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
for(std::vector<std::string>::const_iterator i = args.begin(); for(std::vector<std::string>::const_iterator i = args.begin();
i != args.end(); ++i) i != args.end(); ++i)
{ {

View File

@ -1045,10 +1045,16 @@ bool RunCommandViaSystem(const char* command,
cmSystemTools::RemoveFile(tempFile.c_str()); cmSystemTools::RemoveFile(tempFile.c_str());
return false; return false;
} }
bool multiLine = false;
while(fin) while(fin)
{ {
fin.getline(buffer, BUFFER_SIZE); fin.getline(buffer, BUFFER_SIZE);
output += buffer; output += buffer;
if(multiLine)
{
output += "\n";
}
multiLine = true;
} }
fin.close(); fin.close();
cmSystemTools::RemoveFile(tempFile.c_str()); cmSystemTools::RemoveFile(tempFile.c_str());
@ -1609,8 +1615,7 @@ void cmSystemTools::GlobDirs(const char *fullPath,
void cmSystemTools::ExpandListArguments(std::vector<std::string> const& arguments, void cmSystemTools::ExpandListArguments(std::vector<std::string> const& arguments,
std::vector<std::string>& newargs, std::vector<std::string>& newargs)
bool ignore_empty)
{ {
std::vector<std::string>::const_iterator i; std::vector<std::string>::const_iterator i;
for(i = arguments.begin();i != arguments.end(); ++i) for(i = arguments.begin();i != arguments.end(); ++i)
@ -1631,7 +1636,7 @@ void cmSystemTools::ExpandListArguments(std::vector<std::string> const& argument
{ {
len = i->size()-start; len = i->size()-start;
} }
if (ignore_empty == false || len > 0) if (len > 0)
{ {
newargs.push_back(i->substr(start, len)); newargs.push_back(i->substr(start, len));
} }

View File

@ -48,8 +48,7 @@ public:
* containing the expanded versions of all arguments in argsIn. * containing the expanded versions of all arguments in argsIn.
*/ */
static void ExpandListArguments(std::vector<std::string> const& argsIn, static void ExpandListArguments(std::vector<std::string> const& argsIn,
std::vector<std::string>& argsOut, std::vector<std::string>& argsOut);
bool ignore_empty = false);
/** /**
* Look for and replace registry values in a string * Look for and replace registry values in a string

View File

@ -23,7 +23,7 @@ bool cmUseMangledMesaCommand::InitialPass(std::vector<std::string> const& args)
// expected two arguments: // expected two arguments:
// arguement one: the full path to gl_mangle.h // arguement one: the full path to gl_mangle.h
// arguement two : directory for output of edited headers // arguement two : directory for output of edited headers
if(args.size() < 2) if(args.size() != 2)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;

View File

@ -62,8 +62,8 @@ public:
virtual const char* GetFullDocumentation() virtual const char* GetFullDocumentation()
{ {
return return
"USE_MANGLED_MESA(\"path to mesa includes, should contain gl_mangle.h\"" "USE_MANGLED_MESA(PATH_TO_MESA OUTPUT_DIRECTORY)\n"
" \"directory for output\" )"; "The path to mesa includes, should contain gl_mangle.h. ";
} }
protected: protected:

View File

@ -17,14 +17,16 @@
#include "cmUtilitySourceCommand.h" #include "cmUtilitySourceCommand.h"
// cmUtilitySourceCommand // cmUtilitySourceCommand
bool cmUtilitySourceCommand::InitialPass(std::vector<std::string> const& args) bool cmUtilitySourceCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 3) if(argsIn.size() < 3)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
std::vector<std::string>::const_iterator arg = args.begin(); std::vector<std::string>::const_iterator arg = args.begin();
// The first argument is the cache entry name. // The first argument is the cache entry name.

View File

@ -20,14 +20,16 @@
bool bool
cmVTKMakeInstantiatorCommand cmVTKMakeInstantiatorCommand
::InitialPass(std::vector<std::string> const& args) ::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 3) if(argsIn.size() < 3)
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
m_ClassName = args[0]; m_ClassName = args[0];
std::string outSourceList = args[1]; std::string outSourceList = args[1];

View File

@ -17,13 +17,15 @@
#include "cmVTKWrapJavaCommand.h" #include "cmVTKWrapJavaCommand.h"
// cmVTKWrapJavaCommand // cmVTKWrapJavaCommand
bool cmVTKWrapJavaCommand::InitialPass(std::vector<std::string> const& args) bool cmVTKWrapJavaCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 3 ) if(argsIn.size() < 3 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Now check and see if the value has been stored in the cache // Now check and see if the value has been stored in the cache
// already, if so use that value and don't look for the program // already, if so use that value and don't look for the program

View File

@ -17,13 +17,15 @@
#include "cmVTKWrapPythonCommand.h" #include "cmVTKWrapPythonCommand.h"
// cmVTKWrapPythonCommand // cmVTKWrapPythonCommand
bool cmVTKWrapPythonCommand::InitialPass(std::vector<std::string> const& args) bool cmVTKWrapPythonCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 3 ) if(argsIn.size() < 3 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// Now check and see if the value has been stored in the cache // Now check and see if the value has been stored in the cache
// already, if so use that value and don't look for the program // already, if so use that value and don't look for the program

View File

@ -17,14 +17,15 @@
#include "cmVTKWrapTclCommand.h" #include "cmVTKWrapTclCommand.h"
// cmVTKWrapTclCommand // cmVTKWrapTclCommand
bool cmVTKWrapTclCommand::InitialPass(std::vector<std::string> const& args) bool cmVTKWrapTclCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 3 ) if(argsIn.size() < 3 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
// keep the library name // keep the library name
m_LibraryName = args[0]; m_LibraryName = args[0];

View File

@ -25,7 +25,7 @@ bool cmVariableRequiresCommand::InitialPass(std::vector<std::string> const& args
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
m_Arguments = args; cmSystemTools::ExpandListArguments(args, m_Arguments);
return true; return true;
} }

View File

@ -17,14 +17,15 @@
#include "cmWrapExcludeFilesCommand.h" #include "cmWrapExcludeFilesCommand.h"
// cmWrapExcludeFilesCommand // cmWrapExcludeFilesCommand
bool cmWrapExcludeFilesCommand::InitialPass(std::vector<std::string> const& args) bool cmWrapExcludeFilesCommand::InitialPass(std::vector<std::string> const& argsIn)
{ {
if(args.size() < 1 ) if(argsIn.size() < 1 )
{ {
this->SetError("called with incorrect number of arguments"); this->SetError("called with incorrect number of arguments");
return false; return false;
} }
std::vector<std::string> args;
cmSystemTools::ExpandListArguments(argsIn, args);
cmMakefile::SourceMap &Classes = m_Makefile->GetSources(); cmMakefile::SourceMap &Classes = m_Makefile->GetSources();
for(std::vector<std::string>::const_iterator j = args.begin(); for(std::vector<std::string>::const_iterator j = args.begin();
j != args.end(); ++j) j != args.end(); ++j)

View File

@ -1,8 +1,8 @@
# #
# Create exe. # Create exe.
# #
SET_SOURCE_FILES_PROPERTIES(complex COMPILE_FLAGS "-DSET_SOURCE_FILES_PROPERTIES")
ADD_EXECUTABLE(complex complex) ADD_EXECUTABLE(complex complex)
SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared) SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared)
TARGET_LINK_LIBRARIES(complex ${COMPLEX_LIBS}) TARGET_LINK_LIBRARIES(complex ${COMPLEX_LIBS})

View File

@ -95,6 +95,11 @@ void TestDir(const char* filename)
int main() int main()
{ {
#ifdef SET_SOURCE_FILES_PROPERTIES
cmPassed("SET_SOURCE_FILES_PROPERTIES set FLAGS passed on an ADD_EXECUTABLE source");
#else
cmFailed("SET_SOURCE_FILES_PROPERTIES set FLAGS passed on an ADD_EXECUTABLE source");
#endif
if(sharedFunction() != 1) if(sharedFunction() != 1)
{ {
cmFailed("Call to sharedFunction from shared library failed."); cmFailed("Call to sharedFunction from shared library failed.");
@ -121,6 +126,14 @@ int main()
{ {
cmPassed("Call to file2 function returned 1."); cmPassed("Call to file2 function returned 1.");
} }
if(PropertyTest() != 1)
{
cmFailed("Call to PropertyTest function from library failed.");
}
else
{
cmPassed("Call to PropertyTest function returned 1.");
}
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// Test ADD_DEFINITIONS // Test ADD_DEFINITIONS

View File

@ -25,26 +25,16 @@ ADD_LIBRARY(CMakeTestLibrary LibrarySources)
# #
# test SET_SOURCE_FILES_PROPERTIES # test SET_SOURCE_FILES_PROPERTIES
SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE FLAGS "-foo -bar") SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE COMPILE_FLAGS "-foo -bar")
GET_SOURCE_FILE_PROPERTY(ISABS nonexisting_file2 ABSTRACT) GET_SOURCE_FILE_PROPERTY(ISABS nonexisting_file2 ABSTRACT)
GET_SOURCE_FILE_PROPERTY(WRAPEX nonexisting_file2 WRAP_EXCLUDE) GET_SOURCE_FILE_PROPERTY(WRAPEX nonexisting_file2 WRAP_EXCLUDE)
GET_SOURCE_FILE_PROPERTY(FLAGS nonexisting_file2 FLAGS) GET_SOURCE_FILE_PROPERTY(FLAGS nonexisting_file2 COMPILE_FLAGS)
MESSAGE("ISABS = ${ISABS} WRAPEX = ${WRAPEX} FLAGS = ${FLAGS}") MESSAGE("ISABS = ${ISABS} WRAPEX = ${WRAPEX} FLAGS = ${FLAGS}")
# to force a failed test add a source file that does not exist with
# the name of the failed test
IF(NOT ISABS)
SOURCE_FILES(ISABS IS_ABSTRACT_FailTest)
ENDIF(NOT ISABS)
IF(NOT WRAPEX) CONFIGURE_FILE(
SOURCE_FILES(WRAPEX IS_WRAP_EXCLUDE_FailTest) ${Complex_SOURCE_DIR}/Library/cmTestLibraryConfigure.h.in
ENDIF(NOT WRAPEX) ${Complex_BINARY_DIR}/Library/cmTestLibraryConfigure.h)
IF(FLAGS MATCHES "-foo -bar")
MESSAGE("Flags are set correctly ")
ELSE(FLAGS MATCHES "-foo -bar")
SOURCE_FILES(WRAPEX FLAGS_FailTest)
ENDIF(FLAGS MATCHES "-foo -bar")
@ -52,7 +42,7 @@ SOURCE_FILES(SharedLibrarySources nonexisting_file2)
SOURCE_FILES_REMOVE(SharedLibrarySources GENERATED nonexisting_file2) SOURCE_FILES_REMOVE(SharedLibrarySources GENERATED nonexisting_file2)
SET_SOURCE_FILES_PROPERTIES(fileFlags FLAGS "-DEXTRA_FLAG" ) SET_SOURCE_FILES_PROPERTIES(fileFlags COMPILE_FLAGS "-DEXTRA_FLAG" )
SOURCE_FILES(SharedLibrarySources sharedFile fileFlags) SOURCE_FILES(SharedLibrarySources sharedFile fileFlags)
ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources) ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources)

View File

@ -1,4 +1,23 @@
#include <Library/cmTestLibraryConfigure.h>
#include <string.h>
int file2() int file2()
{ {
return 1; return 1;
} }
int PropertyTest()
{
int ret = 1;
#ifndef ISABS
ret = 0;
#endif
#ifndef WRAPEX
ret = 0;
#endif
if(strcmp(FLAGS,"-foo -bar") != 0)
{
ret =0;
}
return ret;
}

View File

@ -1 +1,2 @@
int file2(); int file2();
int PropertyTest();

View File

@ -1,8 +1,8 @@
# #
# Create exe. # Create exe.
# #
SET_SOURCE_FILES_PROPERTIES(complex COMPILE_FLAGS "-DSET_SOURCE_FILES_PROPERTIES")
ADD_EXECUTABLE(complex complex) ADD_EXECUTABLE(complex complex)
SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared) SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared)
TARGET_LINK_LIBRARIES(complex ${COMPLEX_LIBS}) TARGET_LINK_LIBRARIES(complex ${COMPLEX_LIBS})

View File

@ -95,6 +95,11 @@ void TestDir(const char* filename)
int main() int main()
{ {
#ifdef SET_SOURCE_FILES_PROPERTIES
cmPassed("SET_SOURCE_FILES_PROPERTIES set FLAGS passed on an ADD_EXECUTABLE source");
#else
cmFailed("SET_SOURCE_FILES_PROPERTIES set FLAGS passed on an ADD_EXECUTABLE source");
#endif
if(sharedFunction() != 1) if(sharedFunction() != 1)
{ {
cmFailed("Call to sharedFunction from shared library failed."); cmFailed("Call to sharedFunction from shared library failed.");
@ -121,6 +126,14 @@ int main()
{ {
cmPassed("Call to file2 function returned 1."); cmPassed("Call to file2 function returned 1.");
} }
if(PropertyTest() != 1)
{
cmFailed("Call to PropertyTest function from library failed.");
}
else
{
cmPassed("Call to PropertyTest function returned 1.");
}
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// Test ADD_DEFINITIONS // Test ADD_DEFINITIONS

View File

@ -25,26 +25,16 @@ ADD_LIBRARY(CMakeTestLibrary LibrarySources)
# #
# test SET_SOURCE_FILES_PROPERTIES # test SET_SOURCE_FILES_PROPERTIES
SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE FLAGS "-foo -bar") SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE COMPILE_FLAGS "-foo -bar")
GET_SOURCE_FILE_PROPERTY(ISABS nonexisting_file2 ABSTRACT) GET_SOURCE_FILE_PROPERTY(ISABS nonexisting_file2 ABSTRACT)
GET_SOURCE_FILE_PROPERTY(WRAPEX nonexisting_file2 WRAP_EXCLUDE) GET_SOURCE_FILE_PROPERTY(WRAPEX nonexisting_file2 WRAP_EXCLUDE)
GET_SOURCE_FILE_PROPERTY(FLAGS nonexisting_file2 FLAGS) GET_SOURCE_FILE_PROPERTY(FLAGS nonexisting_file2 COMPILE_FLAGS)
MESSAGE("ISABS = ${ISABS} WRAPEX = ${WRAPEX} FLAGS = ${FLAGS}") MESSAGE("ISABS = ${ISABS} WRAPEX = ${WRAPEX} FLAGS = ${FLAGS}")
# to force a failed test add a source file that does not exist with
# the name of the failed test
IF(NOT ISABS)
SOURCE_FILES(ISABS IS_ABSTRACT_FailTest)
ENDIF(NOT ISABS)
IF(NOT WRAPEX) CONFIGURE_FILE(
SOURCE_FILES(WRAPEX IS_WRAP_EXCLUDE_FailTest) ${Complex_SOURCE_DIR}/Library/cmTestLibraryConfigure.h.in
ENDIF(NOT WRAPEX) ${Complex_BINARY_DIR}/Library/cmTestLibraryConfigure.h)
IF(FLAGS MATCHES "-foo -bar")
MESSAGE("Flags are set correctly ")
ELSE(FLAGS MATCHES "-foo -bar")
SOURCE_FILES(WRAPEX FLAGS_FailTest)
ENDIF(FLAGS MATCHES "-foo -bar")
@ -52,7 +42,7 @@ SOURCE_FILES(SharedLibrarySources nonexisting_file2)
SOURCE_FILES_REMOVE(SharedLibrarySources GENERATED nonexisting_file2) SOURCE_FILES_REMOVE(SharedLibrarySources GENERATED nonexisting_file2)
SET_SOURCE_FILES_PROPERTIES(fileFlags FLAGS "-DEXTRA_FLAG" ) SET_SOURCE_FILES_PROPERTIES(fileFlags COMPILE_FLAGS "-DEXTRA_FLAG" )
SOURCE_FILES(SharedLibrarySources sharedFile fileFlags) SOURCE_FILES(SharedLibrarySources sharedFile fileFlags)
ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources) ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources)

View File

@ -1,4 +1,23 @@
#include <Library/cmTestLibraryConfigure.h>
#include <string.h>
int file2() int file2()
{ {
return 1; return 1;
} }
int PropertyTest()
{
int ret = 1;
#ifndef ISABS
ret = 0;
#endif
#ifndef WRAPEX
ret = 0;
#endif
if(strcmp(FLAGS,"-foo -bar") != 0)
{
ret =0;
}
return ret;
}

View File

@ -1 +1,2 @@
int file2(); int file2();
int PropertyTest();

View File

@ -1,8 +1,8 @@
# #
# Create exe. # Create exe.
# #
SET_SOURCE_FILES_PROPERTIES(complex COMPILE_FLAGS "-DSET_SOURCE_FILES_PROPERTIES")
ADD_EXECUTABLE(complex complex) ADD_EXECUTABLE(complex complex)
SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared) SET(COMPLEX_LIBS CMakeTestLibrary;CMakeTestLibraryShared)
TARGET_LINK_LIBRARIES(complex ${COMPLEX_LIBS}) TARGET_LINK_LIBRARIES(complex ${COMPLEX_LIBS})

View File

@ -95,6 +95,11 @@ void TestDir(const char* filename)
int main() int main()
{ {
#ifdef SET_SOURCE_FILES_PROPERTIES
cmPassed("SET_SOURCE_FILES_PROPERTIES set FLAGS passed on an ADD_EXECUTABLE source");
#else
cmFailed("SET_SOURCE_FILES_PROPERTIES set FLAGS passed on an ADD_EXECUTABLE source");
#endif
if(sharedFunction() != 1) if(sharedFunction() != 1)
{ {
cmFailed("Call to sharedFunction from shared library failed."); cmFailed("Call to sharedFunction from shared library failed.");
@ -121,6 +126,14 @@ int main()
{ {
cmPassed("Call to file2 function returned 1."); cmPassed("Call to file2 function returned 1.");
} }
if(PropertyTest() != 1)
{
cmFailed("Call to PropertyTest function from library failed.");
}
else
{
cmPassed("Call to PropertyTest function returned 1.");
}
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// Test ADD_DEFINITIONS // Test ADD_DEFINITIONS

View File

@ -25,26 +25,16 @@ ADD_LIBRARY(CMakeTestLibrary LibrarySources)
# #
# test SET_SOURCE_FILES_PROPERTIES # test SET_SOURCE_FILES_PROPERTIES
SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE FLAGS "-foo -bar") SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE COMPILE_FLAGS "-foo -bar")
GET_SOURCE_FILE_PROPERTY(ISABS nonexisting_file2 ABSTRACT) GET_SOURCE_FILE_PROPERTY(ISABS nonexisting_file2 ABSTRACT)
GET_SOURCE_FILE_PROPERTY(WRAPEX nonexisting_file2 WRAP_EXCLUDE) GET_SOURCE_FILE_PROPERTY(WRAPEX nonexisting_file2 WRAP_EXCLUDE)
GET_SOURCE_FILE_PROPERTY(FLAGS nonexisting_file2 FLAGS) GET_SOURCE_FILE_PROPERTY(FLAGS nonexisting_file2 COMPILE_FLAGS)
MESSAGE("ISABS = ${ISABS} WRAPEX = ${WRAPEX} FLAGS = ${FLAGS}") MESSAGE("ISABS = ${ISABS} WRAPEX = ${WRAPEX} FLAGS = ${FLAGS}")
# to force a failed test add a source file that does not exist with
# the name of the failed test
IF(NOT ISABS)
SOURCE_FILES(ISABS IS_ABSTRACT_FailTest)
ENDIF(NOT ISABS)
IF(NOT WRAPEX) CONFIGURE_FILE(
SOURCE_FILES(WRAPEX IS_WRAP_EXCLUDE_FailTest) ${Complex_SOURCE_DIR}/Library/cmTestLibraryConfigure.h.in
ENDIF(NOT WRAPEX) ${Complex_BINARY_DIR}/Library/cmTestLibraryConfigure.h)
IF(FLAGS MATCHES "-foo -bar")
MESSAGE("Flags are set correctly ")
ELSE(FLAGS MATCHES "-foo -bar")
SOURCE_FILES(WRAPEX FLAGS_FailTest)
ENDIF(FLAGS MATCHES "-foo -bar")
@ -52,7 +42,7 @@ SOURCE_FILES(SharedLibrarySources nonexisting_file2)
SOURCE_FILES_REMOVE(SharedLibrarySources GENERATED nonexisting_file2) SOURCE_FILES_REMOVE(SharedLibrarySources GENERATED nonexisting_file2)
SET_SOURCE_FILES_PROPERTIES(fileFlags FLAGS "-DEXTRA_FLAG" ) SET_SOURCE_FILES_PROPERTIES(fileFlags COMPILE_FLAGS "-DEXTRA_FLAG" )
SOURCE_FILES(SharedLibrarySources sharedFile fileFlags) SOURCE_FILES(SharedLibrarySources sharedFile fileFlags)
ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources) ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources)

View File

@ -1,4 +1,23 @@
#include <Library/cmTestLibraryConfigure.h>
#include <string.h>
int file2() int file2()
{ {
return 1; return 1;
} }
int PropertyTest()
{
int ret = 1;
#ifndef ISABS
ret = 0;
#endif
#ifndef WRAPEX
ret = 0;
#endif
if(strcmp(FLAGS,"-foo -bar") != 0)
{
ret =0;
}
return ret;
}

View File

@ -1 +1,2 @@
int file2(); int file2();
int PropertyTest();