Skip to content
Snippets Groups Projects
Commit cd73f373 authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'vs-map-external-warnings' into release-3.20


947f0c8b VS: Do not apply '/external:W*' flag table mapping on VS < 16.10
e59a208b cmGlobalVisualStudio10Generator: Adopt GetVSInstanceVersion method
d6d4af0e cmGlobalVisualStudio10Generator: Move static functions to anonymous namespace

Acked-by: default avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !6233
parents a9ff600a 947f0c8b
No related branches found
No related tags found
No related merge requests found
......@@ -1313,8 +1313,12 @@ static unsigned int cmLoadFlagTableSpecial(Json::Value entry,
return value;
}
static cmIDEFlagTable const* cmLoadFlagTableJson(
std::string const& flagJsonPath)
namespace {
unsigned long long const vsVer16_10_0 = 4503644629696790;
cmIDEFlagTable const* cmLoadFlagTableJson(
std::string const& flagJsonPath, cm::optional<unsigned long long> vsver)
{
cmIDEFlagTable* ret = nullptr;
auto savedFlagIterator = loadedFlagJsonFiles.find(flagJsonPath);
......@@ -1336,6 +1340,11 @@ static cmIDEFlagTable const* cmLoadFlagTableJson(
flagEntry.comment = cmLoadFlagTableString(flag, "comment");
flagEntry.value = cmLoadFlagTableString(flag, "value");
flagEntry.special = cmLoadFlagTableSpecial(flag, "flags");
// FIXME: Port this version check to a Json field.
if (vsver && *vsver < vsVer16_10_0 &&
flagEntry.IDEName == "ExternalWarningLevel") {
continue;
}
flagTable.push_back(flagEntry);
}
cmIDEFlagTable endFlag{ "", "", "", "", 0 };
......@@ -1349,12 +1358,13 @@ static cmIDEFlagTable const* cmLoadFlagTableJson(
return ret;
}
static std::string cmGetFlagTableName(std::string const& toolsetName,
std::string const& table)
std::string cmGetFlagTableName(std::string const& toolsetName,
std::string const& table)
{
return cmSystemTools::GetCMakeRoot() + "/Templates/MSBuild/FlagTables/" +
toolsetName + "_" + table + ".json";
}
}
cmIDEFlagTable const* cmGlobalVisualStudio10Generator::LoadFlagTable(
std::string const& optionsName, std::string const& toolsetName,
......@@ -1362,17 +1372,19 @@ cmIDEFlagTable const* cmGlobalVisualStudio10Generator::LoadFlagTable(
{
cmIDEFlagTable const* ret = nullptr;
cm::optional<unsigned long long> vsver = this->GetVSInstanceVersion();
std::string filename;
if (!optionsName.empty()) {
filename = cmGetFlagTableName(optionsName, table);
ret = cmLoadFlagTableJson(filename);
ret = cmLoadFlagTableJson(filename, vsver);
} else {
filename = cmGetFlagTableName(toolsetName, table);
if (cmSystemTools::FileExists(filename)) {
ret = cmLoadFlagTableJson(filename);
ret = cmLoadFlagTableJson(filename, vsver);
} else {
filename = cmGetFlagTableName(defaultName, table);
ret = cmLoadFlagTableJson(filename);
ret = cmLoadFlagTableJson(filename, vsver);
}
}
......
......@@ -5,6 +5,8 @@
#include <memory>
#include <set>
#include <cm/optional>
#include "cmGlobalVisualStudio8Generator.h"
#include "cmVisualStudio10ToolsetOptions.h"
......@@ -119,6 +121,11 @@ public:
std::string Encoding() override;
const char* GetToolsVersion() const;
virtual cm::optional<unsigned long long> GetVSInstanceVersion() const
{
return {};
}
bool GetSupportsUnityBuilds() const { return this->SupportsUnityBuilds; }
bool FindMakeProgram(cmMakefile* mf) override;
......
......@@ -391,10 +391,15 @@ bool cmGlobalVisualStudioVersionedGenerator::GetVSInstance(
return vsSetupAPIHelper.GetVSInstanceInfo(dir);
}
bool cmGlobalVisualStudioVersionedGenerator::GetVSInstanceVersion(
unsigned long long& vsInstanceVersion) const
cm::optional<unsigned long long>
cmGlobalVisualStudioVersionedGenerator::GetVSInstanceVersion() const
{
return vsSetupAPIHelper.GetVSInstanceVersion(vsInstanceVersion);
cm::optional<unsigned long long> result;
unsigned long long vsInstanceVersion;
if (vsSetupAPIHelper.GetVSInstanceVersion(vsInstanceVersion)) {
result = vsInstanceVersion;
}
return result;
}
bool cmGlobalVisualStudioVersionedGenerator::IsStdOutEncodingSupported() const
......@@ -407,9 +412,9 @@ bool cmGlobalVisualStudioVersionedGenerator::IsStdOutEncodingSupported() const
return false;
}
unsigned long long const vsInstanceVersion16_7_P2 = 4503631666610212;
unsigned long long vsInstanceVersion;
return (this->GetVSInstanceVersion(vsInstanceVersion) &&
vsInstanceVersion > vsInstanceVersion16_7_P2);
cm::optional<unsigned long long> vsInstanceVersion =
this->GetVSInstanceVersion();
return (vsInstanceVersion && *vsInstanceVersion > vsInstanceVersion16_7_P2);
}
const char*
......
......@@ -28,7 +28,7 @@ public:
bool GetVSInstance(std::string& dir) const;
bool GetVSInstanceVersion(unsigned long long& vsInstanceVersion) const;
cm::optional<unsigned long long> GetVSInstanceVersion() const override;
AuxToolset FindAuxToolset(std::string& version,
std::string& props) const override;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment