diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4317fbe05..7bcbeb865 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -5121,13 +5121,10 @@ CompileFeaturesAvailable(const std::string& lang, std::string *error) const } //---------------------------------------------------------------------------- -bool cmMakefile:: -AddRequiredTargetCxxFeature(cmTarget *target, - const std::string& feature) const +void cmMakefile::CheckNeededCxxLanguage(const std::string& feature, + bool& needCxx98, + bool& needCxx11) const { - bool needCxx98 = false; - bool needCxx11 = false; - if (const char *propCxx98 = this->GetDefinition("CMAKE_CXX98_COMPILE_FEATURES")) { @@ -5142,6 +5139,17 @@ AddRequiredTargetCxxFeature(cmTarget *target, cmSystemTools::ExpandListArgument(propCxx11, props); needCxx11 = std::find(props.begin(), props.end(), feature) != props.end(); } +} + +//---------------------------------------------------------------------------- +bool cmMakefile:: +AddRequiredTargetCxxFeature(cmTarget *target, + const std::string& feature) const +{ + bool needCxx98 = false; + bool needCxx11 = false; + + this->CheckNeededCxxLanguage(feature, needCxx98, needCxx11); const char *existingCxxStandard = target->GetProperty("CXX_STANDARD"); if (existingCxxStandard) @@ -5192,13 +5200,11 @@ AddRequiredTargetCxxFeature(cmTarget *target, } //---------------------------------------------------------------------------- -bool cmMakefile:: -AddRequiredTargetCFeature(cmTarget *target, const std::string& feature) const +void cmMakefile::CheckNeededCLanguage(const std::string& feature, + bool& needC90, + bool& needC99, + bool& needC11) const { - bool needC90 = false; - bool needC99 = false; - bool needC11 = false; - if (const char *propC90 = this->GetDefinition("CMAKE_C90_COMPILE_FEATURES")) { @@ -5220,6 +5226,17 @@ AddRequiredTargetCFeature(cmTarget *target, const std::string& feature) const cmSystemTools::ExpandListArgument(propC11, props); needC11 = std::find(props.begin(), props.end(), feature) != props.end(); } +} + +//---------------------------------------------------------------------------- +bool cmMakefile:: +AddRequiredTargetCFeature(cmTarget *target, const std::string& feature) const +{ + bool needC90 = false; + bool needC99 = false; + bool needC11 = false; + + this->CheckNeededCLanguage(feature, needC90, needC99, needC11); const char *existingCStandard = target->GetProperty("C_STANDARD"); if (existingCStandard) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index be384e685..40e44a5c9 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -1110,6 +1110,11 @@ private: bool AddRequiredTargetCxxFeature(cmTarget *target, const std::string& feature) const; + + void CheckNeededCLanguage(const std::string& feature, bool& needC90, + bool& needC99, bool& needC11) const; + void CheckNeededCxxLanguage(const std::string& feature, bool& needCxx98, + bool& needCxx11) const; }; //----------------------------------------------------------------------------