[Cmake-commits] CMake branch, next, updated. v3.8.0-714-g0cd590f

Kitware Robot kwrobot at kitware.com
Tue Apr 11 09:55:02 EDT 2017


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
  discards  dc2bac8b8f4dd8c1d003e828e3c2a33ef2593437 (commit)
  discards  51adb683f2c2f56e265513500e2a197db76b03cf (commit)
  discards  6db1761dfc8775897376c41d17ba581e7c5840b8 (commit)
  discards  972992f75be9c74820cd5620c111793fe18f9108 (commit)
       via  0cd590fbd0107804940c86e6b193dad512614af4 (commit)
       via  cb03887fe5f4e510294c2cc6fbccbc1222035fcc (commit)
       via  77cbbb361d53cc76ebe1d690ad1db35254e2d162 (commit)
       via  7ae40e560745a2aa857a210bfc28446bf98337fe (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (dc2bac8b8f4dd8c1d003e828e3c2a33ef2593437)
            \
             N -- N -- N (0cd590fbd0107804940c86e6b193dad512614af4)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

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=0cd590fbd0107804940c86e6b193dad512614af4
commit 0cd590fbd0107804940c86e6b193dad512614af4
Merge: 4a18347 cb03887
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Apr 11 13:46:35 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Apr 11 09:46:38 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=cb03887fe5f4e510294c2cc6fbccbc1222035fcc
commit cb03887fe5f4e510294c2cc6fbccbc1222035fcc
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Apr 10 14:50:53 2017 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Apr 11 09:45:01 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=77cbbb361d53cc76ebe1d690ad1db35254e2d162
commit 77cbbb361d53cc76ebe1d690ad1db35254e2d162
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Apr 10 14:14:59 2017 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Apr 11 09:45:01 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=7ae40e560745a2aa857a210bfc28446bf98337fe
commit 7ae40e560745a2aa857a210bfc28446bf98337fe
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Mon Apr 10 14:48:57 2017 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Tue Apr 11 09:45:01 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..54554ff 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -14,7 +14,6 @@
 #include "cmMakefile.h"
 #include "cmOutputConverter.h"
 #include "cmPolicies.h"
-#include "cmSourceFile.h"
 #include "cmStateTypes.h"
 #include "cmSystemTools.h"
 #include "cmTarget.h"
@@ -1265,6 +1264,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 +1279,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 |    1 -
 1 file changed, 1 deletion(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list