1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
6 #include "cmConfigure.h" // IWYU pragma: keep
11 #include "cmDefinitions.h"
12 #include "cmLinkedTree.h"
13 #include "cmListFileCache.h"
14 #include "cmPolicies.h"
15 #include "cmPropertyMap.h"
16 #include "cmStateSnapshot.h"
17 #include "cmStateTypes.h"
19 namespace cmStateDetail {
20 struct BuildsystemDirectoryStateType;
21 struct PolicyStackEntry;
22 } // namespace cmStateDetail
24 static const std::string cmPropertySentinal = std::string();
26 struct cmStateDetail::SnapshotDataType
28 cmStateDetail::PositionType ScopeParent;
29 cmStateDetail::PositionType DirectoryParent;
30 cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator Policies;
31 cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyRoot;
32 cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyScope;
33 cmStateEnums::SnapshotType SnapshotType;
35 cmLinkedTree<std::string>::iterator ExecutionListFile;
36 cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
38 cmLinkedTree<cmDefinitions>::iterator Vars;
39 cmLinkedTree<cmDefinitions>::iterator Root;
40 cmLinkedTree<cmDefinitions>::iterator Parent;
41 std::vector<std::string>::size_type IncludeDirectoryPosition;
42 std::vector<std::string>::size_type CompileDefinitionsPosition;
43 std::vector<std::string>::size_type CompileOptionsPosition;
44 std::vector<std::string>::size_type LinkOptionsPosition;
45 std::vector<std::string>::size_type LinkDirectoriesPosition;
48 struct cmStateDetail::PolicyStackEntry : public cmPolicies::PolicyMap
50 using derived = cmPolicies::PolicyMap;
51 PolicyStackEntry(bool w = false)
55 PolicyStackEntry(derived const& d, bool w)
63 struct cmStateDetail::BuildsystemDirectoryStateType
65 cmStateDetail::PositionType CurrentScope;
68 std::string OutputLocation;
70 std::vector<BT<std::string>> IncludeDirectories;
72 std::vector<BT<std::string>> CompileDefinitions;
74 std::vector<BT<std::string>> CompileOptions;
76 std::vector<BT<std::string>> LinkOptions;
78 std::vector<BT<std::string>> LinkDirectories;
80 std::vector<std::string> NormalTargetNames;
81 std::vector<std::string> ImportedTargetNames;
83 std::string ProjectName;
85 cmPropertyMap Properties;
87 std::vector<cmStateSnapshot> Children;