summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-01-03 20:47:58 (GMT)
committerBrad King <brad.king@kitware.com>2009-01-03 20:47:58 (GMT)
commitcd7585df22070bb8367c6486086f933c10f4a1ec (patch)
treeca8b807e73fa1150219c2d8b4d49847bf200f1ba
parentee1d1b2c68ed5bdb719c2bb400a9069081e6b64d (diff)
downloadCMake-cd7585df22070bb8367c6486086f933c10f4a1ec.zip
CMake-cd7585df22070bb8367c6486086f933c10f4a1ec.tar.gz
CMake-cd7585df22070bb8367c6486086f933c10f4a1ec.tar.bz2
ENH: Ignore unknown cmake_minimum_required args
When cmake_minimum_required is called with an unknown argument it should not complain about it if the version specified is in the future. This allows the proper error to be shown about the current CMake being too old.
-rw-r--r--Source/cmCMakeMinimumRequired.cxx26
-rw-r--r--Source/cmCMakeMinimumRequired.h4
2 files changed, 25 insertions, 5 deletions
diff --git a/Source/cmCMakeMinimumRequired.cxx b/Source/cmCMakeMinimumRequired.cxx
index f04600e..49860c5 100644
--- a/Source/cmCMakeMinimumRequired.cxx
+++ b/Source/cmCMakeMinimumRequired.cxx
@@ -47,10 +47,7 @@ bool cmCMakeMinimumRequired
}
else
{
- cmOStringStream e;
- e << "called with unknown argument \"" << args[i].c_str() << "\".";
- this->SetError(e.str().c_str());
- return false;
+ this->UnknownArguments.push_back(args[i]);
}
}
if(doing_version)
@@ -62,7 +59,7 @@ bool cmCMakeMinimumRequired
// Make sure there was a version to check.
if(version_string.empty())
{
- return true;
+ return this->EnforceUnknownArguments();
}
// Save the required version string.
@@ -107,6 +104,12 @@ bool cmCMakeMinimumRequired
return true;
}
+ // The version is not from the future, so enforce unknown arguments.
+ if(!this->EnforceUnknownArguments())
+ {
+ return false;
+ }
+
if (required_major < 2 || required_major == 2 && required_minor < 4)
{
this->Makefile->SetPolicyVersion("2.4");
@@ -119,3 +122,16 @@ bool cmCMakeMinimumRequired
return true;
}
+//----------------------------------------------------------------------------
+bool cmCMakeMinimumRequired::EnforceUnknownArguments()
+{
+ if(!this->UnknownArguments.empty())
+ {
+ cmOStringStream e;
+ e << "called with unknown argument \""
+ << this->UnknownArguments[0] << "\".";
+ this->SetError(e.str().c_str());
+ return false;
+ }
+ return true;
+}
diff --git a/Source/cmCMakeMinimumRequired.h b/Source/cmCMakeMinimumRequired.h
index 4409294..47243f8 100644
--- a/Source/cmCMakeMinimumRequired.h
+++ b/Source/cmCMakeMinimumRequired.h
@@ -83,6 +83,10 @@ public:
}
cmTypeMacro(cmCMakeMinimumRequired, cmCommand);
+
+private:
+ std::vector<std::string> UnknownArguments;
+ bool EnforceUnknownArguments();
};