Browse Source

cmSystemTools::VersionCompare: use std::string for arguments

pull/344/head
Marc Chevrier 4 years ago
parent
commit
7e154ebd59
  1. 8
      Source/CPack/IFW/cmCPackIFWCommon.cxx
  2. 7
      Source/cmConditionEvaluator.cxx
  3. 6
      Source/cmGeneratorExpressionNode.cxx
  4. 2
      Source/cmGlobalNMakeMakefileGenerator.cxx
  5. 59
      Source/cmGlobalNinjaGenerator.cxx
  6. 12
      Source/cmLocalGenerator.cxx
  7. 3
      Source/cmMakefile.cxx
  8. 28
      Source/cmSystemTools.cxx
  9. 5
      Source/cmSystemTools.h

8
Source/CPack/IFW/cmCPackIFWCommon.cxx

@ -51,7 +51,7 @@ bool cmCPackIFWCommon::IsVersionLess(const char* version) const
}
return cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->Generator->FrameworkVersion.data(), version);
cmSystemTools::OP_LESS, this->Generator->FrameworkVersion, version);
}
bool cmCPackIFWCommon::IsVersionGreater(const char* version) const
@ -61,8 +61,7 @@ bool cmCPackIFWCommon::IsVersionGreater(const char* version) const
}
return cmSystemTools::VersionCompare(
cmSystemTools::OP_GREATER, this->Generator->FrameworkVersion.data(),
version);
cmSystemTools::OP_GREATER, this->Generator->FrameworkVersion, version);
}
bool cmCPackIFWCommon::IsVersionEqual(const char* version) const
@ -72,8 +71,7 @@ bool cmCPackIFWCommon::IsVersionEqual(const char* version) const
}
return cmSystemTools::VersionCompare(
cmSystemTools::OP_EQUAL, this->Generator->FrameworkVersion.data(),
version);
cmSystemTools::OP_EQUAL, this->Generator->FrameworkVersion, version);
}
void cmCPackIFWCommon::ExpandListArgument(

7
Source/cmConditionEvaluator.cxx

@ -729,10 +729,9 @@ bool cmConditionEvaluator::HandleLevel2(cmArgumentList& newArgs,
keyVERSION_LESS_EQUAL, keyVERSION_GREATER,
keyVERSION_GREATER_EQUAL, keyVERSION_EQUAL))) {
const auto op = MATCH2CMPOP[matchNo - 1];
const cmProp lhs = this->GetVariableOrString(*args.current);
const cmProp rhs = this->GetVariableOrString(*args.nextnext);
const auto result =
cmSystemTools::VersionCompare(op, lhs->c_str(), rhs->c_str());
const std::string& lhs = this->GetVariableOrString(*args.current);
const std::string& rhs = this->GetVariableOrString(*args.nextnext);
const auto result = cmSystemTools::VersionCompare(op, lhs, rhs);
newArgs.ReduceTwoArgs(result, args);
}

6
Source/cmGeneratorExpressionNode.cxx

@ -771,8 +771,7 @@ struct CompilerVersionNode : public cmGeneratorExpressionNode
}
return cmSystemTools::VersionCompare(cmSystemTools::OP_EQUAL,
parameters.front().c_str(),
compilerVersion.c_str())
parameters.front(), compilerVersion)
? "1"
: "0";
}
@ -830,8 +829,7 @@ struct VersionNode : public cmGeneratorExpressionNode
const GeneratorExpressionContent* /*content*/,
cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override
{
return cmSystemTools::VersionCompare(Op, parameters.front().c_str(),
parameters[1].c_str())
return cmSystemTools::VersionCompare(Op, parameters.front(), parameters[1])
? "1"
: "0";
}

2
Source/cmGlobalNMakeMakefileGenerator.cxx

@ -70,7 +70,7 @@ bool cmGlobalNMakeMakefileGenerator::FindMakeProgram(cmMakefile* mf)
void cmGlobalNMakeMakefileGenerator::CheckNMakeFeatures()
{
this->NMakeSupportsUTF8 = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NMakeVersion.c_str(), "9");
cmSystemTools::OP_LESS, this->NMakeVersion, "9");
}
void cmGlobalNMakeMakefileGenerator::GetDocumentation(

59
Source/cmGlobalNinjaGenerator.cxx

@ -558,9 +558,8 @@ void cmGlobalNinjaGenerator::GetDocumentation(cmDocumentationEntry& entry)
void cmGlobalNinjaGenerator::Generate()
{
// Check minimum Ninja version.
if (cmSystemTools::VersionCompare(cmSystemTools::OP_LESS,
this->NinjaVersion.c_str(),
RequiredNinjaVersion().c_str())) {
if (cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersion())) {
std::ostringstream msg;
msg << "The detected version of Ninja (" << this->NinjaVersion;
msg << ") is less than the version of Ninja required by CMake (";
@ -721,21 +720,21 @@ bool cmGlobalNinjaGenerator::FindMakeProgram(cmMakefile* mf)
void cmGlobalNinjaGenerator::CheckNinjaFeatures()
{
this->NinjaSupportsConsolePool = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForConsolePool().c_str());
this->NinjaSupportsConsolePool =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForConsolePool());
this->NinjaSupportsImplicitOuts = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
cmGlobalNinjaGenerator::RequiredNinjaVersionForImplicitOuts().c_str());
this->NinjaSupportsManifestRestat = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForManifestRestat().c_str());
this->NinjaSupportsMultilineDepfile = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForMultilineDepfile().c_str());
this->NinjaSupportsDyndeps = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForDyndeps().c_str());
cmSystemTools::OP_LESS, this->NinjaVersion,
cmGlobalNinjaGenerator::RequiredNinjaVersionForImplicitOuts());
this->NinjaSupportsManifestRestat =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForManifestRestat());
this->NinjaSupportsMultilineDepfile =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForMultilineDepfile());
this->NinjaSupportsDyndeps =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForDyndeps());
if (!this->NinjaSupportsDyndeps) {
// The ninja version number is not new enough to have upstream support.
// Our ninja branch adds ".dyndep-#" to its version number,
@ -753,21 +752,21 @@ void cmGlobalNinjaGenerator::CheckNinjaFeatures()
}
this->NinjaSupportsUnconditionalRecompactTool =
!cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForUnconditionalRecompactTool().c_str());
this->NinjaSupportsRestatTool = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForRestatTool().c_str());
this->NinjaSupportsMultipleOutputs = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForMultipleOutputs().c_str());
cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForUnconditionalRecompactTool());
this->NinjaSupportsRestatTool =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForRestatTool());
this->NinjaSupportsMultipleOutputs =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForMultipleOutputs());
this->NinjaSupportsMetadataOnRegeneration = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForMetadataOnRegeneration().c_str());
cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForMetadataOnRegeneration());
#ifdef _WIN32
this->NinjaSupportsCodePage = !cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, this->NinjaVersion.c_str(),
RequiredNinjaVersionForCodePage().c_str());
this->NinjaSupportsCodePage =
!cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, this->NinjaVersion,
RequiredNinjaVersionForCodePage());
if (this->NinjaSupportsCodePage) {
this->CheckNinjaCodePage();
} else {

12
Source/cmLocalGenerator.cxx

@ -1961,10 +1961,10 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags,
cmStrCat("CMAKE_", lang, "_SIMULATE_ID"));
if (lang == "Swift") {
if (cmProp v = target->GetProperty("Swift_LANGUAGE_VERSION")) {
if (cmSystemTools::VersionCompare(cmSystemTools::OP_GREATER_EQUAL,
cmToCStr(this->Makefile->GetDefinition(
"CMAKE_Swift_COMPILER_VERSION")),
"4.2")) {
if (cmSystemTools::VersionCompare(
cmSystemTools::OP_GREATER_EQUAL,
this->Makefile->GetDefinition("CMAKE_Swift_COMPILER_VERSION"),
"4.2")) {
this->AppendFlags(flags, "-swift-version " + *v);
}
}
@ -2622,8 +2622,8 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
// MSVC 2008 is producing both .pdb and .idb files with /Zi.
bool msvc2008OrLess =
cmSystemTools::VersionCompare(
cmSystemTools::OP_LESS, compilerVersion.c_str(), "16.0") &&
cmSystemTools::VersionCompare(cmSystemTools::OP_LESS,
compilerVersion, "16.0") &&
compilerId == "MSVC";
// but not when used via toolset -Tv90
if (this->Makefile->GetSafeDefinition(

3
Source/cmMakefile.cxx

@ -926,8 +926,7 @@ void cmMakefile::Generate(cmLocalGenerator& lg)
this->DoGenerate(lg);
cmProp oldValue = this->GetDefinition("CMAKE_BACKWARDS_COMPATIBILITY");
if (oldValue &&
cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, oldValue->c_str(),
"2.4")) {
cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, oldValue, "2.4")) {
this->GetCMakeInstance()->IssueMessage(
MessageType::FATAL_ERROR,
"You have set CMAKE_BACKWARDS_COMPATIBILITY to a CMake version less "

28
Source/cmSystemTools.cxx

@ -2885,8 +2885,9 @@ bool cmSystemTools::SetRPath(std::string const& file,
return false;
}
bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op,
const char* lhss, const char* rhss)
namespace {
bool VersionCompare(cmSystemTools::CompareOp op, const char* lhss,
const char* rhss)
{
const char* endl = lhss;
const char* endr = rhss;
@ -2919,26 +2920,37 @@ bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op,
// lhs == rhs, so true if operation is EQUAL
return (op & cmSystemTools::OP_EQUAL) != 0;
}
}
bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op,
const std::string& lhs,
const std::string& rhs)
{
return ::VersionCompare(op, lhs.c_str(), rhs.c_str());
}
bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op,
const std::string& lhs, const char rhs[])
{
return ::VersionCompare(op, lhs.c_str(), rhs);
}
bool cmSystemTools::VersionCompareEqual(std::string const& lhs,
std::string const& rhs)
{
return cmSystemTools::VersionCompare(cmSystemTools::OP_EQUAL, lhs.c_str(),
rhs.c_str());
return cmSystemTools::VersionCompare(cmSystemTools::OP_EQUAL, lhs, rhs);
}
bool cmSystemTools::VersionCompareGreater(std::string const& lhs,
std::string const& rhs)
{
return cmSystemTools::VersionCompare(cmSystemTools::OP_GREATER, lhs.c_str(),
rhs.c_str());
return cmSystemTools::VersionCompare(cmSystemTools::OP_GREATER, lhs, rhs);
}
bool cmSystemTools::VersionCompareGreaterEq(std::string const& lhs,
std::string const& rhs)
{
return cmSystemTools::VersionCompare(cmSystemTools::OP_GREATER_EQUAL,
lhs.c_str(), rhs.c_str());
return cmSystemTools::VersionCompare(cmSystemTools::OP_GREATER_EQUAL, lhs,
rhs);
}
static size_t cm_strverscmp_find_first_difference_or_end(const char* lhs,

5
Source/cmSystemTools.h

@ -284,7 +284,10 @@ public:
/**
* Compare versions
*/
static bool VersionCompare(CompareOp op, const char* lhs, const char* rhs);
static bool VersionCompare(CompareOp op, const std::string& lhs,
const std::string& rhs);
static bool VersionCompare(CompareOp op, const std::string& lhs,
const char rhs[]);
static bool VersionCompareEqual(std::string const& lhs,
std::string const& rhs);
static bool VersionCompareGreater(std::string const& lhs,

Loading…
Cancel
Save