Browse Source

Merge topic 'vs2019-v142' into release-4.2

8c332a3c7f VS: Restore support for VS 2019 with toolset v142 versions before 14.29

Acked-by: Kitware Robot <[email protected]>
Merge-request: !11480
Brad King 1 month ago
parent
commit
7d113b9b84
1 changed files with 13 additions and 0 deletions
  1. 13 0
      Source/cmVisualStudio10TargetGenerator.cxx

+ 13 - 0
Source/cmVisualStudio10TargetGenerator.cxx

@@ -170,11 +170,17 @@ public:
       std::string const cond =
         this->TargetGenerator->CalcCondition(this->GetConfiguration());
       this->Parent->WritePlatformConfigTag(tag, cond, content);
+    } else if (!this->SuppressStartupBannerCondition.empty() &&
+               tag == "SuppressStartupBanner"_s) {
+      this->Parent->WritePlatformConfigTag(
+        tag, this->SuppressStartupBannerCondition, content);
     } else {
       this->Parent->Element(tag, content);
     }
   }
 
+  std::string SuppressStartupBannerCondition;
+
 private:
   cmVisualStudio10TargetGenerator* const TargetGenerator;
   Elem* Parent = nullptr;
@@ -3704,6 +3710,13 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
     }
     if (!clOptions.HasFlag("RemoveUnreferencedCodeData")) {
       clOptions.AddFlag("RemoveUnreferencedCodeData", "");
+      // Visual Studio 2019 with toolset v142 versions 14.20 to 14.28.16.9
+      // fails if both RemoveUnreferencedCodeData and SuppressStartupBanner
+      // are empty.  Since the latter is incidental, make it conditional.
+      if (this->GlobalGenerator->GetPlatformToolsetString() == "v142"_s) {
+        clOptions.SuppressStartupBannerCondition =
+          "'$(VCToolsVersion)' >= '14.29'";
+      }
     }
     if (!clOptions.HasFlag("RuntimeLibrary")) {
       clOptions.AddFlag("RuntimeLibrary", "");