فهرست منبع

make sure ; expansion is done in all commands

Bill Hoffman 24 سال پیش
والد
کامیت
7d76de4403
63فایلهای تغییر یافته به همراه289 افزوده شده و 269 حذف شده
  1. 5 2
      Source/cmAbstractFilesCommand.cxx
  2. 4 2
      Source/cmAddCustomCommandCommand.cxx
  3. 4 2
      Source/cmAddCustomTargetCommand.cxx
  4. 5 2
      Source/cmAddDefinitionsCommand.cxx
  5. 5 3
      Source/cmAddDependenciesCommand.cxx
  6. 1 7
      Source/cmAddTestCommand.cxx
  7. 4 2
      Source/cmCableClassSetCommand.cxx
  8. 5 3
      Source/cmCableWrapTclCommand.cxx
  9. 0 2
      Source/cmCommands.cxx
  10. 1 1
      Source/cmCreateTestSourceList.cxx
  11. 1 1
      Source/cmFLTKWrapUICommand.cxx
  12. 5 2
      Source/cmFindFileCommand.cxx
  13. 4 2
      Source/cmFindLibraryCommand.cxx
  14. 5 2
      Source/cmFindPathCommand.cxx
  15. 6 2
      Source/cmFindProgramCommand.cxx
  16. 2 2
      Source/cmGetSourceFilePropertyCommand.cxx
  17. 1 1
      Source/cmGetSourceFilePropertyCommand.h
  18. 4 2
      Source/cmIncludeDirectoryCommand.cxx
  19. 4 2
      Source/cmInstallFilesCommand.cxx
  20. 4 2
      Source/cmInstallProgramsCommand.cxx
  21. 4 2
      Source/cmInstallTargetsCommand.cxx
  22. 5 2
      Source/cmLinkDirectoriesCommand.cxx
  23. 5 3
      Source/cmLoadCacheCommand.cxx
  24. 1 1
      Source/cmMakeDirectoryCommand.cxx
  25. 5 2
      Source/cmMarkAsAdvancedCommand.cxx
  26. 1 1
      Source/cmOutputRequiredFilesCommand.cxx
  27. 1 1
      Source/cmProjectCommand.cxx
  28. 4 2
      Source/cmQTWrapCPPCommand.cxx
  29. 4 2
      Source/cmQTWrapUICommand.cxx
  30. 7 5
      Source/cmSetSourceFilesPropertiesCommand.cxx
  31. 1 1
      Source/cmSetSourceFilesPropertiesCommand.h
  32. 1 1
      Source/cmSiteNameCommand.cxx
  33. 5 3
      Source/cmSourceFilesCommand.cxx
  34. 0 49
      Source/cmSourceFilesFlagsCommand.cxx
  35. 0 64
      Source/cmSourceFilesFlagsCommand.h
  36. 5 2
      Source/cmSourceFilesRemoveCommand.cxx
  37. 5 2
      Source/cmSubdirCommand.cxx
  38. 8 3
      Source/cmSystemTools.cxx
  39. 1 2
      Source/cmSystemTools.h
  40. 1 1
      Source/cmUseMangledMesaCommand.cxx
  41. 2 2
      Source/cmUseMangledMesaCommand.h
  42. 5 3
      Source/cmUtilitySourceCommand.cxx
  43. 5 3
      Source/cmVTKMakeInstantiatorCommand.cxx
  44. 4 2
      Source/cmVTKWrapJavaCommand.cxx
  45. 4 2
      Source/cmVTKWrapPythonCommand.cxx
  46. 4 3
      Source/cmVTKWrapTclCommand.cxx
  47. 1 1
      Source/cmVariableRequiresCommand.cxx
  48. 4 3
      Source/cmWrapExcludeFilesCommand.cxx
  49. 1 1
      Tests/Complex/Executable/CMakeLists.txt
  50. 13 0
      Tests/Complex/Executable/complex.cxx
  51. 8 18
      Tests/Complex/Library/CMakeLists.txt
  52. 19 0
      Tests/Complex/Library/file2.cxx
  53. 1 0
      Tests/Complex/Library/file2.h
  54. 1 1
      Tests/ComplexOneConfig/Executable/CMakeLists.txt
  55. 13 0
      Tests/ComplexOneConfig/Executable/complex.cxx
  56. 8 18
      Tests/ComplexOneConfig/Library/CMakeLists.txt
  57. 19 0
      Tests/ComplexOneConfig/Library/file2.cxx
  58. 1 0
      Tests/ComplexOneConfig/Library/file2.h
  59. 1 1
      Tests/ComplexRelativePaths/Executable/CMakeLists.txt
  60. 13 0
      Tests/ComplexRelativePaths/Executable/complex.cxx
  61. 8 18
      Tests/ComplexRelativePaths/Library/CMakeLists.txt
  62. 19 0
      Tests/ComplexRelativePaths/Library/file2.cxx
  63. 1 0
      Tests/ComplexRelativePaths/Library/file2.h

+ 5 - 2
Source/cmAbstractFilesCommand.cxx

@@ -17,13 +17,16 @@
 #include "cmAbstractFilesCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   bool ret = true;
   std::string m = "could not find source file(s):\n";
 

+ 4 - 2
Source/cmAddCustomCommandCommand.cxx

@@ -18,17 +18,19 @@
 
 
 // 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
      arg. For the moment, let's say that SOURCE, COMMAND, TARGET are always 
      required.
   */
-  if (args.size() < 6)
+  if (argsIn.size() < 6)
     {
       this->SetError("called with wrong number of arguments.");
       return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   std::string source, command, target;
   std::vector<std::string> command_args, depends, outputs;

+ 4 - 2
Source/cmAddCustomTargetCommand.cxx

@@ -17,15 +17,17 @@
 #include "cmAddCustomTargetCommand.h"
 
 // cmAddCustomTargetCommand
-bool cmAddCustomTargetCommand::InitialPass(std::vector<std::string> const& args)
+bool cmAddCustomTargetCommand::InitialPass(std::vector<std::string> const& argsIn)
 {
   bool all = false;
   
-  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);
 
   // all target option
   std::string arguments;

+ 5 - 2
Source/cmAddDefinitionsCommand.cxx

@@ -17,13 +17,16 @@
 #include "cmAddDefinitionsCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   for(std::vector<std::string>::const_iterator i = args.begin();
       i != args.end(); ++i)
     {

+ 5 - 3
Source/cmAddDependenciesCommand.cxx

@@ -18,14 +18,16 @@
 #include "cmCacheManager.h"
 
 // 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");
     return false;
     }
-  
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   std::string target_name = args[0];
 
   cmTargets &tgts = m_Makefile->GetTargets();

+ 1 - 7
Source/cmAddTestCommand.cxx

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

+ 4 - 2
Source/cmCableClassSetCommand.cxx

@@ -19,13 +19,15 @@
 #include "cmTarget.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // The first argument is the name of the set.
   std::vector<std::string>::const_iterator arg = args.begin();

+ 5 - 3
Source/cmCableWrapTclCommand.cxx

@@ -122,17 +122,19 @@ 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // Prepare to iterate through the arguments.
   std::vector<std::string>::const_iterator arg = args.begin();
-  
+
   // The first argument is the name of the target.
   m_TargetName = *arg++;
   

+ 0 - 2
Source/cmCommands.cxx

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

+ 1 - 1
Source/cmCreateTestSourceList.cxx

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

+ 1 - 1
Source/cmFLTKWrapUICommand.cxx

@@ -19,7 +19,7 @@
 // cmFLTKWrapUICommand
 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");
     return false;

+ 5 - 2
Source/cmFindFileCommand.cxx

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

+ 4 - 2
Source/cmFindLibraryCommand.cxx

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

+ 5 - 2
Source/cmFindPathCommand.cxx

@@ -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
   std::string helpString = "What is the path where the file ";
   helpString += argsIn[1] + " can be found";
-  std::vector<std::string> args;
+  std::vector<std::string> argst;
   size_t size = argsIn.size();
   for(unsigned int j = 0; j < size; ++j)
     {
     if(argsIn[j] != "DOC")
       {
-      args.push_back(argsIn[j]);
+      argst.push_back(argsIn[j]);
       }
     else
       {
@@ -47,6 +47,9 @@ bool cmFindPathCommand::InitialPass(std::vector<std::string> const& argsIn)
       break;
       }
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argst, args);
+
   const char* cacheValue
     = m_Makefile->GetDefinition(args[0].c_str());
   if(cacheValue && strcmp(cacheValue, "NOTFOUND"))

+ 6 - 2
Source/cmFindProgramCommand.cxx

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

+ 2 - 2
Source/cmGetSourceFilePropertyCommand.cxx

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

+ 1 - 1
Source/cmGetSourceFilePropertyCommand.h

@@ -53,7 +53,7 @@ public:
   virtual const char* GetFullDocumentation()
     {
       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  "
         "in the variable VAR.";
     }

+ 4 - 2
Source/cmIncludeDirectoryCommand.cxx

@@ -17,13 +17,15 @@
 #include "cmIncludeDirectoryCommand.h"
 #include "cmCacheManager.h"
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   std::vector<std::string>::const_iterator i = args.begin();
 

+ 4 - 2
Source/cmInstallFilesCommand.cxx

@@ -18,13 +18,15 @@
 #include "cmCacheManager.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // Create an INSTALL_FILES target specifically for this path.
   m_TargetName = "INSTALL_FILES_"+args[0];

+ 4 - 2
Source/cmInstallProgramsCommand.cxx

@@ -18,13 +18,15 @@
 #include "cmCacheManager.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // Create an INSTALL_PROGRAMS target specifically for this path.
   m_TargetName = "INSTALL_PROGRAMS_"+args[0];

+ 4 - 2
Source/cmInstallTargetsCommand.cxx

@@ -18,13 +18,15 @@
 #include "cmCacheManager.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   cmTargets &tgts = m_Makefile->GetTargets();
   std::vector<std::string>::const_iterator s = args.begin();

+ 5 - 2
Source/cmLinkDirectoriesCommand.cxx

@@ -17,13 +17,16 @@
 #include "cmLinkDirectoriesCommand.h"
 
 // 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");
     return false;
     }
+ std::vector<std::string> args;
+ cmSystemTools::ExpandListArguments(argsIn, args);
+
   for(std::vector<std::string>::const_iterator i = args.begin();
       i != args.end(); ++i)
     {

+ 5 - 3
Source/cmLoadCacheCommand.cxx

@@ -18,13 +18,15 @@
 
 
 // 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.");
     }
-  
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   // Cache entries to be excluded from the import list.
   // If this set is empty, all cache entries are brought in
   // and they can not be overridden.

+ 1 - 1
Source/cmMakeDirectoryCommand.cxx

@@ -20,7 +20,7 @@
 // cmMakeDirectoryCommand
 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");
     return false;

+ 5 - 2
Source/cmMarkAsAdvancedCommand.cxx

@@ -17,13 +17,16 @@
 #include "cmMarkAsAdvancedCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   unsigned int i =0;
   const char* value = "1";
   bool overwrite = false;

+ 1 - 1
Source/cmOutputRequiredFilesCommand.cxx

@@ -159,7 +159,7 @@ void cmLBDepend::DependWalk(cmDependInformation* info)
 // cmOutputRequiredFilesCommand
 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");
     return false;

+ 1 - 1
Source/cmProjectCommand.cxx

@@ -19,7 +19,7 @@
 // cmProjectCommand
 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");
     return false;

+ 4 - 2
Source/cmQTWrapCPPCommand.cxx

@@ -17,13 +17,15 @@
 #include "cmQTWrapCPPCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // 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

+ 4 - 2
Source/cmQTWrapUICommand.cxx

@@ -17,13 +17,15 @@
 #include "cmQTWrapUICommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // 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

+ 7 - 5
Source/cmSetSourceFilesPropertiesCommand.cxx

@@ -18,14 +18,16 @@
 
 // cmSetSourceFilesPropertiesCommand
 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");
     return false;
     }
-  
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   std::vector<std::string>::const_iterator j;
   // first collect up all the flags that need to be set on the file
   bool abstract = false;
@@ -46,7 +48,7 @@ bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> con
       {
       generated = true;
       }
-    else if(*j == "FLAGS")
+    else if(*j == "COMPILE_FLAGS")
       {
       ++j;
       if(j == args.end())
@@ -61,7 +63,7 @@ bool cmSetSourceFilesPropertiesCommand::InitialPass(std::vector<std::string> con
   for(j = args.begin(); j != args.end(); ++j)
     {   
     // 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;
       }

+ 1 - 1
Source/cmSetSourceFilesPropertiesCommand.h

@@ -53,7 +53,7 @@ public:
   virtual const char* GetFullDocumentation()
     {
       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 "
         "to change, and then provide the values you want to set next.";
     }

+ 1 - 1
Source/cmSiteNameCommand.cxx

@@ -19,7 +19,7 @@
 // cmSiteNameCommand
 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");
     return false;

+ 5 - 3
Source/cmSourceFilesCommand.cxx

@@ -17,14 +17,16 @@
 #include "cmSourceFilesCommand.h"
 
 // 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");
     return false;
     }
-  
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   std::string name = args[0];
   
   int generated = 0;

+ 0 - 49
Source/cmSourceFilesFlagsCommand.cxx

@@ -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;
-}
-

+ 0 - 64
Source/cmSourceFilesFlagsCommand.h

@@ -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

+ 5 - 2
Source/cmSourceFilesRemoveCommand.cxx

@@ -17,13 +17,16 @@
 #include "cmSourceFilesRemoveCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   int generated = 0;
   for(std::vector<std::string>::const_iterator i = (args.begin() + 1);
       i != args.end(); ++i)

+ 5 - 2
Source/cmSubdirCommand.cxx

@@ -17,13 +17,16 @@
 #include "cmSubdirCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   for(std::vector<std::string>::const_iterator i = args.begin();
       i != args.end(); ++i)
     {

+ 8 - 3
Source/cmSystemTools.cxx

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

+ 1 - 2
Source/cmSystemTools.h

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

+ 1 - 1
Source/cmUseMangledMesaCommand.cxx

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

+ 2 - 2
Source/cmUseMangledMesaCommand.h

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

+ 5 - 3
Source/cmUtilitySourceCommand.cxx

@@ -17,14 +17,16 @@
 #include "cmUtilitySourceCommand.h"
 
 // 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");
     return false;
     }
-  
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   std::vector<std::string>::const_iterator arg = args.begin();
   
   // The first argument is the cache entry name.

+ 5 - 3
Source/cmVTKMakeInstantiatorCommand.cxx

@@ -20,14 +20,16 @@
 
 bool
 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");
     return false;
     }
-  
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
+
   m_ClassName = args[0];
   
   std::string outSourceList = args[1];

+ 4 - 2
Source/cmVTKWrapJavaCommand.cxx

@@ -17,13 +17,15 @@
 #include "cmVTKWrapJavaCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // 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

+ 4 - 2
Source/cmVTKWrapPythonCommand.cxx

@@ -17,13 +17,15 @@
 #include "cmVTKWrapPythonCommand.h"
 
 // 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");
     return false;
     }
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
 
   // 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

+ 4 - 3
Source/cmVTKWrapTclCommand.cxx

@@ -17,14 +17,15 @@
 #include "cmVTKWrapTclCommand.h"
 
 // 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");
     return false;
     }
-
+  std::vector<std::string> args;
+  cmSystemTools::ExpandListArguments(argsIn, args);
   // keep the library name
   m_LibraryName = args[0];
 

+ 1 - 1
Source/cmVariableRequiresCommand.cxx

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

+ 4 - 3
Source/cmWrapExcludeFilesCommand.cxx

@@ -17,14 +17,15 @@
 #include "cmWrapExcludeFilesCommand.h"
 
 // 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");
     return false;
     }
-
+  std::vector<std::string> args; 
+  cmSystemTools::ExpandListArguments(argsIn, args);
   cmMakefile::SourceMap &Classes = m_Makefile->GetSources();
   for(std::vector<std::string>::const_iterator j = args.begin();
       j != args.end(); ++j)

+ 1 - 1
Tests/Complex/Executable/CMakeLists.txt

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

+ 13 - 0
Tests/Complex/Executable/complex.cxx

@@ -95,6 +95,11 @@ void TestDir(const char* filename)
 
 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)
     {
     cmFailed("Call to sharedFunction from shared library failed.");
@@ -121,6 +126,14 @@ int main()
     {
     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

+ 8 - 18
Tests/Complex/Library/CMakeLists.txt

@@ -25,26 +25,16 @@ ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 #
 
 # 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(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}")
-# 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)
-  SOURCE_FILES(WRAPEX IS_WRAP_EXCLUDE_FailTest)
-ENDIF(NOT WRAPEX)
-
-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")
+
+CONFIGURE_FILE(
+  ${Complex_SOURCE_DIR}/Library/cmTestLibraryConfigure.h.in
+  ${Complex_BINARY_DIR}/Library/cmTestLibraryConfigure.h)
+
 
   
 
@@ -52,7 +42,7 @@ SOURCE_FILES(SharedLibrarySources 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)
 ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources)
 

+ 19 - 0
Tests/Complex/Library/file2.cxx

@@ -1,4 +1,23 @@
+#include <Library/cmTestLibraryConfigure.h>
+#include <string.h>
+
 int file2()
 {
   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;
+}

+ 1 - 0
Tests/Complex/Library/file2.h

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

+ 1 - 1
Tests/ComplexOneConfig/Executable/CMakeLists.txt

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

+ 13 - 0
Tests/ComplexOneConfig/Executable/complex.cxx

@@ -95,6 +95,11 @@ void TestDir(const char* filename)
 
 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)
     {
     cmFailed("Call to sharedFunction from shared library failed.");
@@ -121,6 +126,14 @@ int main()
     {
     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

+ 8 - 18
Tests/ComplexOneConfig/Library/CMakeLists.txt

@@ -25,26 +25,16 @@ ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 #
 
 # 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(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}")
-# 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)
-  SOURCE_FILES(WRAPEX IS_WRAP_EXCLUDE_FailTest)
-ENDIF(NOT WRAPEX)
-
-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")
+
+CONFIGURE_FILE(
+  ${Complex_SOURCE_DIR}/Library/cmTestLibraryConfigure.h.in
+  ${Complex_BINARY_DIR}/Library/cmTestLibraryConfigure.h)
+
 
   
 
@@ -52,7 +42,7 @@ SOURCE_FILES(SharedLibrarySources 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)
 ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources)
 

+ 19 - 0
Tests/ComplexOneConfig/Library/file2.cxx

@@ -1,4 +1,23 @@
+#include <Library/cmTestLibraryConfigure.h>
+#include <string.h>
+
 int file2()
 {
   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;
+}

+ 1 - 0
Tests/ComplexOneConfig/Library/file2.h

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

+ 1 - 1
Tests/ComplexRelativePaths/Executable/CMakeLists.txt

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

+ 13 - 0
Tests/ComplexRelativePaths/Executable/complex.cxx

@@ -95,6 +95,11 @@ void TestDir(const char* filename)
 
 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)
     {
     cmFailed("Call to sharedFunction from shared library failed.");
@@ -121,6 +126,14 @@ int main()
     {
     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

+ 8 - 18
Tests/ComplexRelativePaths/Library/CMakeLists.txt

@@ -25,26 +25,16 @@ ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 #
 
 # 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(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}")
-# 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)
-  SOURCE_FILES(WRAPEX IS_WRAP_EXCLUDE_FailTest)
-ENDIF(NOT WRAPEX)
-
-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")
+
+CONFIGURE_FILE(
+  ${Complex_SOURCE_DIR}/Library/cmTestLibraryConfigure.h.in
+  ${Complex_BINARY_DIR}/Library/cmTestLibraryConfigure.h)
+
 
   
 
@@ -52,7 +42,7 @@ SOURCE_FILES(SharedLibrarySources 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)
 ADD_LIBRARY(CMakeTestLibraryShared SHARED SharedLibrarySources)
 

+ 19 - 0
Tests/ComplexRelativePaths/Library/file2.cxx

@@ -1,4 +1,23 @@
+#include <Library/cmTestLibraryConfigure.h>
+#include <string.h>
+
 int file2()
 {
   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;
+}

+ 1 - 0
Tests/ComplexRelativePaths/Library/file2.h

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