2016-10-18 19:28:49 +00:00
|
|
|
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
|
|
|
|
|
|
#ifndef cmStatePrivate_h
|
|
|
|
#define cmStatePrivate_h
|
|
|
|
|
|
|
|
#include <cmConfigure.h> // IWYU pragma: keep
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include "cmDefinitions.h"
|
|
|
|
#include "cmLinkedTree.h"
|
|
|
|
#include "cmListFileCache.h"
|
2016-11-05 20:40:14 +00:00
|
|
|
#include "cmPolicies.h"
|
2016-10-18 19:28:49 +00:00
|
|
|
#include "cmPropertyMap.h"
|
2016-11-05 20:40:14 +00:00
|
|
|
#include "cmStateSnapshot.h"
|
2016-10-18 19:28:49 +00:00
|
|
|
#include "cmStateTypes.h"
|
|
|
|
|
2016-11-05 20:40:14 +00:00
|
|
|
namespace cmStateDetail {
|
|
|
|
struct BuildsystemDirectoryStateType;
|
|
|
|
struct PolicyStackEntry;
|
|
|
|
} // namespace cmStateDetail
|
|
|
|
|
2016-10-18 19:28:49 +00:00
|
|
|
static const std::string cmPropertySentinal = std::string();
|
|
|
|
|
|
|
|
struct cmStateDetail::SnapshotDataType
|
|
|
|
{
|
|
|
|
cmStateDetail::PositionType ScopeParent;
|
|
|
|
cmStateDetail::PositionType DirectoryParent;
|
|
|
|
cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator Policies;
|
|
|
|
cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyRoot;
|
|
|
|
cmLinkedTree<cmStateDetail::PolicyStackEntry>::iterator PolicyScope;
|
|
|
|
cmStateEnums::SnapshotType SnapshotType;
|
|
|
|
bool Keep;
|
|
|
|
cmLinkedTree<std::string>::iterator ExecutionListFile;
|
|
|
|
cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator
|
|
|
|
BuildSystemDirectory;
|
|
|
|
cmLinkedTree<cmDefinitions>::iterator Vars;
|
|
|
|
cmLinkedTree<cmDefinitions>::iterator Root;
|
|
|
|
cmLinkedTree<cmDefinitions>::iterator Parent;
|
|
|
|
std::vector<std::string>::size_type IncludeDirectoryPosition;
|
|
|
|
std::vector<std::string>::size_type CompileDefinitionsPosition;
|
|
|
|
std::vector<std::string>::size_type CompileOptionsPosition;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cmStateDetail::PolicyStackEntry : public cmPolicies::PolicyMap
|
|
|
|
{
|
|
|
|
typedef cmPolicies::PolicyMap derived;
|
|
|
|
PolicyStackEntry(bool w = false)
|
|
|
|
: derived()
|
|
|
|
, Weak(w)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
PolicyStackEntry(derived const& d, bool w)
|
|
|
|
: derived(d)
|
|
|
|
, Weak(w)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
PolicyStackEntry(PolicyStackEntry const& r)
|
|
|
|
: derived(r)
|
|
|
|
, Weak(r.Weak)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
bool Weak;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct cmStateDetail::BuildsystemDirectoryStateType
|
|
|
|
{
|
|
|
|
cmStateDetail::PositionType DirectoryEnd;
|
|
|
|
|
|
|
|
std::string Location;
|
|
|
|
std::string OutputLocation;
|
|
|
|
|
|
|
|
// The top-most directories for relative path conversion. Both the
|
|
|
|
// source and destination location of a relative path conversion
|
|
|
|
// must be underneath one of these directories (both under source or
|
|
|
|
// both under binary) in order for the relative path to be evaluated
|
|
|
|
// safely by the build tools.
|
|
|
|
std::string RelativePathTopSource;
|
|
|
|
std::string RelativePathTopBinary;
|
|
|
|
|
|
|
|
std::vector<std::string> IncludeDirectories;
|
|
|
|
std::vector<cmListFileBacktrace> IncludeDirectoryBacktraces;
|
|
|
|
|
|
|
|
std::vector<std::string> CompileDefinitions;
|
|
|
|
std::vector<cmListFileBacktrace> CompileDefinitionsBacktraces;
|
|
|
|
|
|
|
|
std::vector<std::string> CompileOptions;
|
|
|
|
std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
|
|
|
|
|
|
|
|
std::vector<std::string> NormalTargetNames;
|
|
|
|
|
|
|
|
std::string ProjectName;
|
|
|
|
|
|
|
|
cmPropertyMap Properties;
|
|
|
|
|
|
|
|
std::vector<cmStateSnapshot> Children;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|