This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via 32277a80d15fbd5710c1321dcd851de55811a2bb (commit) via 51adb683f2c2f56e265513500e2a197db76b03cf (commit) via 6db1761dfc8775897376c41d17ba581e7c5840b8 (commit) via 972992f75be9c74820cd5620c111793fe18f9108 (commit) from 97266364da55924cac94c8d8645231d7bc4bb3ba (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=32277a80d15fbd5710c1321dcd851de55811a2bb commit 32277a80d15fbd5710c1321dcd851de55811a2bb Merge: 9726636 51adb68 Author: Brad King <brad.k...@kitware.com> AuthorDate: Mon Apr 10 23:25:34 2017 +0000 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Mon Apr 10 19:26:01 2017 -0400 Stage topic 'vs-remove-UseObjectLibraries' Topic-id: 23581 Topic-url: https://gitlab.kitware.com/cmake/cmake/merge_requests/686 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=51adb683f2c2f56e265513500e2a197db76b03cf commit 51adb683f2c2f56e265513500e2a197db76b03cf Author: Brad King <brad.k...@kitware.com> AuthorDate: Mon Apr 10 14:50:53 2017 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Mon Apr 10 16:28:12 2017 -0400 VS: Simplify logic collecting object library files as sources Object library files are already included by `GetExternalObjects` and `GetConfigCommonSourceFiles` so we don't need to call `UseObjectLibraries` to get them. diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 260a84b..9e83c77 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1306,14 +1306,21 @@ void cmLocalVisualStudio7GeneratorInternals::OutputObjects( // list object library content on the link line instead. cmLocalVisualStudio7Generator* lg = this->LocalGenerator; std::string currentBinDir = lg->GetCurrentBinaryDirectory(); - std::vector<std::string> objs; - gt->UseObjectLibraries(objs, ""); + + std::vector<cmSourceFile*> sources; + if (!gt->GetConfigCommonSourceFiles(sources)) { + return; + } + const char* sep = isep ? isep : ""; - for (std::vector<std::string>::const_iterator oi = objs.begin(); - oi != objs.end(); ++oi) { - std::string rel = lg->ConvertToRelativePath(currentBinDir, oi->c_str()); - fout << sep << lg->ConvertToXMLOutputPath(rel.c_str()); - sep = " "; + for (std::vector<cmSourceFile*>::const_iterator i = sources.begin(); + i != sources.end(); i++) { + if (!(*i)->GetObjectLibrary().empty()) { + std::string const& objFile = (*i)->GetFullPath(); + std::string rel = lg->ConvertToRelativePath(currentBinDir, objFile); + fout << sep << lg->ConvertToXMLOutputPath(rel.c_str()); + sep = " "; + } } } @@ -1370,7 +1377,13 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout, for (std::vector<cmSourceFile*>::const_iterator i = classes.begin(); i != classes.end(); i++) { if (!(*i)->GetObjectLibrary().empty()) { - continue; + if (this->GetVersion() < cmGlobalVisualStudioGenerator::VS8 || + this->FortranProject) { + // VS < 8 does not support per-config source locations so we + // list object library content on the link line instead. + // See OutputObjects. + continue; + } } // Add the file to the list of sources. std::string source = (*i)->GetFullPath(); @@ -1392,24 +1405,6 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout, this->WriteGroup(&sg, target, fout, libName, configs); } - if (this->GetVersion() >= cmGlobalVisualStudioGenerator::VS8 && - !this->FortranProject) { - // VS >= 8 support per-config source locations so we - // list object library content as external objects. - std::vector<std::string> objs; - target->UseObjectLibraries(objs, ""); - if (!objs.empty()) { - // TODO: Separate sub-filter for each object library used? - fout << "\t\t<Filter Name=\"Object Libraries\">\n"; - for (std::vector<std::string>::const_iterator oi = objs.begin(); - oi != objs.end(); ++oi) { - std::string o = this->ConvertToXMLOutputPathSingle(oi->c_str()); - fout << "\t\t\t<File RelativePath=\"" << o << "\" />\n"; - } - fout << "\t\t</Filter>\n"; - } - } - fout << "\t</Files>\n"; // Write the VCProj file's footer. diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index a9ccc68..419989a 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1337,23 +1337,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() this->WriteString("</ItemGroup>\n", 1); } - // Add object library contents as external objects. - std::vector<std::string> objs; - this->GeneratorTarget->UseObjectLibraries(objs, ""); - if (!objs.empty()) { - this->WriteString("<ItemGroup>\n", 1); - for (std::vector<std::string>::const_iterator oi = objs.begin(); - oi != objs.end(); ++oi) { - std::string obj = *oi; - this->WriteString("<Object Include=\"", 2); - this->ConvertToWindowsSlash(obj); - (*this->BuildFileStream) << cmVS10EscapeXML(obj) << "\">\n"; - this->WriteString("<Filter>Object Libraries</Filter>\n", 3); - this->WriteString("</Object>\n", 2); - } - this->WriteString("</ItemGroup>\n", 1); - } - this->WriteString("<ItemGroup>\n", 1); for (std::set<cmSourceGroup*>::iterator g = groupsUsed.begin(); g != groupsUsed.end(); ++g) { @@ -1371,15 +1354,6 @@ void cmVisualStudio10TargetGenerator::WriteGroups() this->WriteString("</Filter>\n", 2); } } - if (!objs.empty()) { - this->WriteString("<Filter Include=\"Object Libraries\">\n", 2); - std::string guidName = "SG_Filter_Object Libraries"; - this->WriteString("<UniqueIdentifier>", 3); - std::string guid = this->GlobalGenerator->GetGUID(guidName.c_str()); - (*this->BuildFileStream) << "{" << guid << "}" - << "</UniqueIdentifier>\n"; - this->WriteString("</Filter>\n", 2); - } if (!resxObjs.empty() || !this->AddedFiles.empty()) { this->WriteString("<Filter Include=\"Resource Files\">\n", 2); @@ -1824,14 +1798,6 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() std::vector<cmSourceFile const*> externalObjects; this->GeneratorTarget->GetExternalObjects(externalObjects, ""); - for (std::vector<cmSourceFile const*>::iterator si = externalObjects.begin(); - si != externalObjects.end();) { - if (!(*si)->GetObjectLibrary().empty()) { - si = externalObjects.erase(si); - } else { - ++si; - } - } if (this->LocalGenerator->GetVersion() > cmGlobalVisualStudioGenerator::VS10) { // For VS >= 11 we use LinkObjects to avoid linking custom command @@ -1857,17 +1823,6 @@ void cmVisualStudio10TargetGenerator::WriteAllSources() this->WriteExtraSource(*si); } - // Add object library contents as external objects. - std::vector<std::string> objs; - this->GeneratorTarget->UseObjectLibraries(objs, ""); - for (std::vector<std::string>::const_iterator oi = objs.begin(); - oi != objs.end(); ++oi) { - std::string obj = *oi; - this->WriteString("<Object Include=\"", 2); - this->ConvertToWindowsSlash(obj); - (*this->BuildFileStream) << cmVS10EscapeXML(obj) << "\" />\n"; - } - std::vector<cmSourceFile const*> defSources; this->GeneratorTarget->GetModuleDefinitionSources(defSources, ""); this->WriteSources("None", defSources); https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6db1761dfc8775897376c41d17ba581e7c5840b8 commit 6db1761dfc8775897376c41d17ba581e7c5840b8 Author: Brad King <brad.k...@kitware.com> AuthorDate: Mon Apr 10 14:14:59 2017 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Mon Apr 10 16:28:11 2017 -0400 VS: Simplify use of object libraries in WINDOWS_EXPORT_ALL_SYMBOLS Object library files are already included by `GetExternalObjects` so we don't need to call `UseObjectLibraries` to get them. diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 6d16881..eae1dc4 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -887,7 +887,6 @@ void cmGlobalVisualStudioGenerator::AddSymbolExportCommand( objs.push_back((*it)->GetFullPath()); } - gt->UseObjectLibraries(objs, configName); for (std::vector<std::string>::iterator it = objs.begin(); it != objs.end(); ++it) { std::string objFile = *it; https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=972992f75be9c74820cd5620c111793fe18f9108 commit 972992f75be9c74820cd5620c111793fe18f9108 Author: Brad King <brad.k...@kitware.com> AuthorDate: Mon Apr 10 14:48:57 2017 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Mon Apr 10 16:28:05 2017 -0400 cmMakefile: Create an explicit "Object Libraries" source group The generators should not need special logic to place object library object files in this group. diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 4443499..f0195a9 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -1265,6 +1265,8 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode gt->LocalGenerator->ComputeObjectFilenames(mapping, gt); + cmMakefile* mf = context->LG->GetMakefile(); + std::string obj_dir = gt->ObjectDirectory; std::string result; const char* sep = ""; @@ -1278,10 +1280,7 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode assert(!map_it->second.empty()); result += sep; std::string objFile = obj_dir + map_it->second; - cmSourceFile* sf = - context->LG->GetMakefile()->GetOrCreateSource(objFile, true); - sf->SetObjectLibrary(tgtName); - sf->SetProperty("EXTERNAL_OBJECT", "1"); + mf->AddTargetObject(tgtName, objFile); result += objFile; sep = ";"; } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index f7d822a..9c68ccf 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -94,6 +94,10 @@ cmMakefile::cmMakefile(cmGlobalGenerator* globalGenerator, this->AddSourceGroup("CMake Rules", "\\.rule$"); this->AddSourceGroup("Resources", "\\.plist$"); this->AddSourceGroup("Object Files", "\\.(lo|o|obj)$"); + + this->ObjectLibrariesSourceGroupIndex = this->SourceGroups.size(); + this->SourceGroups.push_back( + cmSourceGroup("Object Libraries", "^MATCH_NO_SOURCES$")); #endif } @@ -3124,6 +3128,18 @@ cmSourceFile* cmMakefile::GetOrCreateSource(const std::string& sourceName, return this->CreateSource(sourceName, generated); } +void cmMakefile::AddTargetObject(std::string const& tgtName, + std::string const& objFile) +{ + cmSourceFile* sf = this->GetOrCreateSource(objFile, true); + sf->SetObjectLibrary(tgtName); + sf->SetProperty("EXTERNAL_OBJECT", "1"); +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->SourceGroups[this->ObjectLibrariesSourceGroupIndex].AddGroupFile( + sf->GetFullPath()); +#endif +} + void cmMakefile::EnableLanguage(std::vector<std::string> const& lang, bool optional) { diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 4e48c88..e242142 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -406,6 +406,8 @@ public: cmSourceFile* GetOrCreateSource(const std::string& sourceName, bool generated = false); + void AddTargetObject(std::string const& tgtName, std::string const& objFile); + /** * Given a variable name, return its value (as a string). * If the variable is not found in this makefile instance, the @@ -817,6 +819,7 @@ protected: #if defined(CMAKE_BUILD_WITH_CMAKE) std::vector<cmSourceGroup> SourceGroups; + size_t ObjectLibrariesSourceGroupIndex; #endif std::vector<cmCommand*> FinalPassCommands; ----------------------------------------------------------------------- Summary of changes: Source/cmGeneratorExpressionNode.cxx | 7 ++--- Source/cmGlobalVisualStudioGenerator.cxx | 1 - Source/cmLocalVisualStudio7Generator.cxx | 47 +++++++++++++--------------- Source/cmMakefile.cxx | 16 ++++++++++ Source/cmMakefile.h | 3 ++ Source/cmVisualStudio10TargetGenerator.cxx | 45 -------------------------- 6 files changed, 43 insertions(+), 76 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits