Browse Source

Add GENERATED to cmSourceFilesRemoveCommand

Andy Cedilnik 24 years ago
parent
commit
21224d0bf1

+ 37 - 4
Source/cmSourceFilesRemoveCommand.cxx

@@ -43,18 +43,51 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 // cmSourceFilesRemoveCommand
 bool cmSourceFilesRemoveCommand::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;
     }
+  int generated = 0;
   for(std::vector<std::string>::const_iterator i = (args.begin() + 1);
       i != args.end(); ++i)
     {
+    std::string copy = *i;
+    if ( copy == "GENERATED" )
+      {
+      generated = 1;
+      continue;
+      }
     cmSourceFile file;
-    file.SetName((*i).c_str(), m_Makefile->GetCurrentDirectory(),
-                 m_Makefile->GetSourceExtensions(),
-                 m_Makefile->GetHeaderExtensions());
+    if ( generated )
+      {
+      // This file will be generated, so we should not check
+      // if it exist. 
+      std::string ext = cmSystemTools::GetFilenameExtension(copy);
+      std::string path = cmSystemTools::GetFilenamePath(copy);
+      std::string name_no_ext = cmSystemTools::GetFilenameName(copy.c_str());
+      name_no_ext = name_no_ext.substr(0, name_no_ext.length()-ext.length());
+      if ( ext[0] == '.' )
+	{
+	ext = ext.substr(1);
+	}
+      if((path.size() && path[0] == '/') ||
+	 (path.size() > 1 && path[1] == ':'))
+	{
+	file.SetName(name_no_ext.c_str(), path.c_str(), ext.c_str(), false);
+	}
+      else
+	{
+	file.SetName(name_no_ext.c_str(), m_Makefile->GetCurrentOutputDirectory(), 
+		     ext.c_str(), false);
+	}
+      }
+    else
+      {
+      file.SetName((*i).c_str(), m_Makefile->GetCurrentDirectory(),
+		   m_Makefile->GetSourceExtensions(),
+		   m_Makefile->GetHeaderExtensions());
+      }
     m_Makefile->RemoveSource(file, args[0].c_str());
     }
   return true;

+ 2 - 2
Tests/Complex/Library/CMakeLists.txt

@@ -1,8 +1,8 @@
 AUX_SOURCE_DIRECTORY(ExtraSources LibrarySources)
 
 # SOURCE_FILES_REMOVE is used for Coverage
-SOURCE_FILES(LibrarySources file2 create_file.cxx)
-SOURCE_FILES_REMOVE(LibrarySources create_file.cxx) 
+SOURCE_FILES(LibrarySources file2 GENERATED nonexisting_file)
+SOURCE_FILES_REMOVE(LibrarySources GENERATED nonexisting_file) 
 ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 
 SOURCE_FILES(SharedLibrarySources sharedFile)

+ 2 - 2
Tests/ComplexOneConfig/Library/CMakeLists.txt

@@ -1,8 +1,8 @@
 AUX_SOURCE_DIRECTORY(ExtraSources LibrarySources)
 
 # SOURCE_FILES_REMOVE is used for Coverage
-SOURCE_FILES(LibrarySources file2 create_file.cxx)
-SOURCE_FILES_REMOVE(LibrarySources create_file.cxx) 
+SOURCE_FILES(LibrarySources file2 GENERATED nonexisting_file)
+SOURCE_FILES_REMOVE(LibrarySources GENERATED nonexisting_file) 
 ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 
 SOURCE_FILES(SharedLibrarySources sharedFile)

+ 2 - 2
Tests/ComplexRelativePaths/Library/CMakeLists.txt

@@ -1,8 +1,8 @@
 AUX_SOURCE_DIRECTORY(ExtraSources LibrarySources)
 
 # SOURCE_FILES_REMOVE is used for Coverage
-SOURCE_FILES(LibrarySources file2 create_file.cxx)
-SOURCE_FILES_REMOVE(LibrarySources create_file.cxx) 
+SOURCE_FILES(LibrarySources file2 GENERATED nonexisting_file)
+SOURCE_FILES_REMOVE(LibrarySources GENERATED nonexisting_file) 
 ADD_LIBRARY(CMakeTestLibrary LibrarySources)
 
 SOURCE_FILES(SharedLibrarySources sharedFile)