From 21224d0bf1904e86c35d232593aabbfb531eae83 Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Fri, 18 Jan 2002 15:39:24 -0500 Subject: [PATCH] Add GENERATED to cmSourceFilesRemoveCommand --- Source/cmSourceFilesRemoveCommand.cxx | 41 +++++++++++++++++-- Tests/Complex/Library/CMakeLists.txt | 4 +- Tests/ComplexOneConfig/Library/CMakeLists.txt | 4 +- .../Library/CMakeLists.txt | 4 +- 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/Source/cmSourceFilesRemoveCommand.cxx b/Source/cmSourceFilesRemoveCommand.cxx index 86efc2f41..0d1d4de42 100644 --- a/Source/cmSourceFilesRemoveCommand.cxx +++ b/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 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::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; diff --git a/Tests/Complex/Library/CMakeLists.txt b/Tests/Complex/Library/CMakeLists.txt index 40b2f2d9e..798b6e1e0 100644 --- a/Tests/Complex/Library/CMakeLists.txt +++ b/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) diff --git a/Tests/ComplexOneConfig/Library/CMakeLists.txt b/Tests/ComplexOneConfig/Library/CMakeLists.txt index 40b2f2d9e..798b6e1e0 100644 --- a/Tests/ComplexOneConfig/Library/CMakeLists.txt +++ b/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) diff --git a/Tests/ComplexRelativePaths/Library/CMakeLists.txt b/Tests/ComplexRelativePaths/Library/CMakeLists.txt index 40b2f2d9e..798b6e1e0 100644 --- a/Tests/ComplexRelativePaths/Library/CMakeLists.txt +++ b/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)