/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include class cmMakefile; class cmExperimental { public: enum class Feature { ExportPackageDependencies, CxxImportStd, ImportPackageInfo, ExportPackageInfo, MappedPackageInfo, ExportBuildDatabase, Instrumentation, Sentinel, }; enum class TryCompileCondition { Always, SkipCompilerChecks, Never, }; struct FeatureData { std::string Name; std::string Uuid; std::string Variable; std::string Description; std::vector TryCompileVariables; TryCompileCondition ForwardThroughTryCompile; }; static FeatureData const& DataForFeature(Feature f); static cm::optional FeatureByName(std::string const& name); static bool HasSupportEnabled(cmMakefile const& mf, Feature f); };