diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e95ecf75..bb0a2fe46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,8 @@ IF (BUILD_TESTING) # Dart server configuration SET (CVS_WEB_URL "http://${DROP_SITE}/cgi-bin/cmakecvsweb.cgi/CMake/" CACHE INTERNAL "URL for revision control system") + SET (CVS_WEB_CVSROOT "CMake" CACHE INTERNAL + "Symbolic name for the CVSROOT in cvsweb") SET (DOXYGEN_URL "http://${DROP_SITE}/CMake/Doxygen/html/" CACHE INTERNAL "URL for source code documentation") SET (GNATS_WEB_URL "http://${DROP_SITE}/cgi-bin/gnatsweb.pl/CMake/" diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 2472b34d7..26e4ff36c 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -61,7 +61,27 @@ void cmTarget::GenerateSourceFilesFromSourceLists(const cmMakefile &mf) { const std::vector &clsList = mf.GetSources().find(temps)->second; - m_SourceFiles.insert(m_SourceFiles.end(), clsList.begin(), clsList.end()); + // if we ahave a limited build list, use it + if (m_LimitedBuildList.empty()) + { + m_SourceFiles.insert(m_SourceFiles.end(), + clsList.begin(), + clsList.end()); + } + else + { + std::vector::const_iterator si = clsList.begin(); + for (; si != clsList.end(); ++si) + { + // is it on the approved list ? + if (std::find(m_LimitedBuildList.begin(), + m_LimitedBuildList.end(), + si->GetFullPath()) != m_LimitedBuildList.end()) + { + m_SourceFiles.push_back(*si); + } + } + } } // if one wasn't found then assume it is a single class else @@ -69,7 +89,19 @@ void cmTarget::GenerateSourceFilesFromSourceLists(const cmMakefile &mf) cmSourceFile file; file.SetIsAnAbstractClass(false); file.SetName(temps.c_str(), mf.GetCurrentDirectory()); - m_SourceFiles.push_back(file); + if (m_LimitedBuildList.empty()) + { + m_SourceFiles.push_back(file); + } + else + { + if (std::find(m_LimitedBuildList.begin(), + m_LimitedBuildList.end(), + file.GetFullPath()) != m_LimitedBuildList.end()) + { + m_SourceFiles.push_back(file); + } + } } } diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 89068edda..50d81d75c 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -86,6 +86,13 @@ public: {return m_SourceLists;} std::vector &GetSourceLists() {return m_SourceLists;} + /** + * Get the list of the source lists used by this target + */ + const std::vector &GetLimitedBuildList() const + {return m_LimitedBuildList;} + std::vector &GetLimitedBuildList() {return m_LimitedBuildList;} + /** * Get the list of the source files used by this target */ @@ -126,7 +133,9 @@ public: void AddUtility(const char* u) { m_Utilities.insert(u);} ///! Get the utilities used by this target std::setconst& GetUtilities() const { return m_Utilities; } + private: + std::vector m_LimitedBuildList; std::vector m_CustomCommands; std::vector m_SourceLists; TargetType m_TargetType;