| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #pragma once |
| |
| #include <string> |
| |
| #include <cm/optional> |
| |
| #include "cmValue.h" |
| |
| class cmMakefile; |
| class cmGeneratorTarget; |
| class cmStandardLevel; |
| class cmTarget; |
| |
| class cmStandardLevelResolver |
| { |
| |
| public: |
| explicit cmStandardLevelResolver(cmMakefile* makefile) |
| : Makefile(makefile) |
| { |
| } |
| |
| std::string GetCompileOptionDef(cmGeneratorTarget const* target, |
| std::string const& lang, |
| std::string const& config) const; |
| std::string GetEffectiveStandard(cmGeneratorTarget const* target, |
| std::string const& lang, |
| std::string const& config) const; |
| |
| std::string GetLevelString(std::string const& lang, |
| cmStandardLevel const& level) const; |
| |
| bool AddRequiredTargetFeature(cmTarget* target, const std::string& feature, |
| std::string* error = nullptr) const; |
| |
| bool CompileFeatureKnown(const std::string& targetName, |
| const std::string& feature, std::string& lang, |
| std::string* error) const; |
| |
| cm::optional<cmStandardLevel> CompileFeatureStandardLevel( |
| std::string const& lang, std::string const& feature) const; |
| |
| cm::optional<cmStandardLevel> LanguageStandardLevel( |
| std::string const& lang, std::string const& standardStr) const; |
| |
| cmValue CompileFeaturesAvailable(const std::string& lang, |
| std::string* error) const; |
| |
| bool GetNewRequiredStandard(const std::string& targetName, |
| const std::string& feature, |
| cmValue currentLangStandardValue, |
| cm::optional<cmStandardLevel>& featureLevel, |
| std::string& newRequiredStandard, |
| std::string* error = nullptr) const; |
| |
| bool HaveStandardAvailable(cmGeneratorTarget const* target, |
| std::string const& lang, |
| std::string const& config, |
| const std::string& feature) const; |
| |
| bool IsLaterStandard(std::string const& lang, std::string const& lhs, |
| std::string const& rhs) const; |
| |
| private: |
| bool CheckCompileFeaturesAvailable(const std::string& targetName, |
| const std::string& feature, |
| std::string& lang, |
| std::string* error) const; |
| |
| cmMakefile* Makefile; |
| }; |