mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
Merge topic 'vs-map-external-warnings' into release-3.20
947f0c8b81VS: Do not apply '/external:W*' flag table mapping on VS < 16.10e59a208b69cmGlobalVisualStudio10Generator: Adopt GetVSInstanceVersion methodd6d4af0ec3cmGlobalVisualStudio10Generator: Move static functions to anonymous namespace Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6233
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user