Merge branch 'release-3.29'
[kiteware-cmake.git] / Source / cmExperimental.h
blob05764f947e1a7b715b0c0170f1f5a194c847131a
1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
4 #pragma once
6 #include "cmConfigure.h" // IWYU pragma: keep
8 #include <string>
9 #include <vector>
11 #include <cm/optional>
13 class cmMakefile;
15 class cmExperimental
17 public:
18 enum class Feature
20 ExportPackageDependencies,
21 WindowsKernelModeDriver,
22 CxxImportStd,
24 Sentinel,
27 enum class TryCompileCondition
29 Always,
30 SkipCompilerChecks,
31 Never,
34 struct FeatureData
36 std::string const Name;
37 std::string const Uuid;
38 std::string const Variable;
39 std::string const Description;
40 std::vector<std::string> const TryCompileVariables;
41 TryCompileCondition const ForwardThroughTryCompile;
42 bool Warned;
45 static const FeatureData& DataForFeature(Feature f);
46 static cm::optional<Feature> FeatureByName(std::string const& name);
47 static bool HasSupportEnabled(cmMakefile const& mf, Feature f);