diff options
author | Brad King <brad.king@kitware.com> | 2014-04-30 13:42:00 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2014-04-30 13:42:00 (GMT) |
commit | 8535d4cf5dbe1f48a7da7bece7e435a2bd412eee (patch) | |
tree | 1d777bb9a49e9a8f95efff1e8ab36aba1e3f7ec8 /Source/cmMakefile.cxx | |
parent | a676ced3464cb7bea7b26f9f2bf235f0e70c4145 (diff) | |
parent | a36b957fc4594264965a86b54e5eab40520cf79d (diff) | |
download | CMake-8535d4cf5dbe1f48a7da7bece7e435a2bd412eee.zip CMake-8535d4cf5dbe1f48a7da7bece7e435a2bd412eee.tar.gz CMake-8535d4cf5dbe1f48a7da7bece7e435a2bd412eee.tar.bz2 |
Merge topic 'cxx98-features'
a36b957f Features: Add cxx_template_template_parameters.
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 07cfe12..e758720 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -79,6 +79,7 @@ F(cxx_sizeof_member) \ F(cxx_static_assert) \ F(cxx_strong_enums) \ + F(cxx_template_template_parameters) \ F(cxx_thread_local) \ F(cxx_trailing_return_types) \ F(cxx_unicode_literals) \ @@ -4646,8 +4647,16 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature, target->AppendProperty("COMPILE_FEATURES", feature.c_str()); + bool needCxx98 = false; bool needCxx11 = false; + if (const char *propCxx98 = + this->GetDefinition("CMAKE_CXX98_COMPILE_FEATURES")) + { + std::vector<std::string> props; + cmSystemTools::ExpandListArgument(propCxx98, props); + needCxx98 = std::find(props.begin(), props.end(), feature) != props.end(); + } if (const char *propCxx11 = this->GetDefinition("CMAKE_CXX11_COMPILE_FEATURES")) { @@ -4675,6 +4684,7 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature, cmStrCmp(existingCxxStandard)) : cmArrayEnd(CXX_STANDARDS); + bool setCxx98 = needCxx98 && !existingCxxStandard; bool setCxx11 = needCxx11 && !existingCxxStandard; if (needCxx11 && existingCxxStandard && existingCxxIt < @@ -4684,10 +4694,21 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature, { setCxx11 = true; } + else if(needCxx98 && existingCxxStandard && existingCxxIt < + std::find_if(cmArrayBegin(CXX_STANDARDS), + cmArrayEnd(CXX_STANDARDS), + cmStrCmp("98"))) + { + setCxx98 = true; + } if (setCxx11) { target->SetProperty("CXX_STANDARD", "11"); } + else if (setCxx98) + { + target->SetProperty("CXX_STANDARD", "98"); + } return true; } |