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

Reply via email to