summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-02-04 22:26:11 (GMT)
committerBrad King <brad.king@kitware.com>2015-02-04 23:28:07 (GMT)
commit72537e4436a17535af5424628adef3b614a61679 (patch)
tree11de43e3e99ce78e6cb38967f8e92fef983f71f6 /Source/cmLocalGenerator.cxx
parent82c9d6868b87a964214a468cae816642950e70b6 (diff)
downloadCMake-72537e4436a17535af5424628adef3b614a61679.zip
CMake-72537e4436a17535af5424628adef3b614a61679.tar.gz
CMake-72537e4436a17535af5424628adef3b614a61679.tar.bz2
Features: Add dialect compile flags only if default is known.
The CMAKE_<LANG>_STANDARD_DEFAULT variable indicates whether the compiler has any notion of standard levels and that CMake knows about them. If no language standard levels are available, skip all logic to attempt to add a flag for the level. Also fail with an internal error if a bad default value is set.
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx18
1 files changed, 9 insertions, 9 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index af4c950..81e37f6 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2209,7 +2209,7 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget* target,
}
const char* defaultStd
= this->Makefile->GetDefinition("CMAKE_" + lang + "_STANDARD_DEFAULT");
- if (defaultStd && !*defaultStd)
+ if (!defaultStd || !*defaultStd)
{
// This compiler has no notion of language standard levels.
return;
@@ -2276,15 +2276,15 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget* target,
std::find(stds.begin(), stds.end(), standard);
assert(stdIt != stds.end());
- std::vector<std::string>::const_iterator defaultStdIt;
- if (defaultStd)
+ std::vector<std::string>::const_iterator defaultStdIt =
+ std::find(stds.begin(), stds.end(), defaultStd);
+ if (defaultStdIt == stds.end())
{
- defaultStdIt = std::find(stds.begin(), stds.end(), defaultStd);
- assert(defaultStdIt != stds.end());
- }
- else
- {
- defaultStdIt = stds.end() - 1;
+ std::string e =
+ "CMAKE_" + lang + "_STANDARD_DEFAULT is set to invalid value '" +
+ std::string(defaultStd) + "'";
+ this->Makefile->IssueMessage(cmake::INTERNAL_ERROR, e);
+ return;
}
for ( ; stdIt <= defaultStdIt; ++stdIt)