| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 | 
							- /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 
-    file Copyright.txt or https://cmake.org/licensing for details.  */
 
- #pragma once
 
- #include "cmConfigure.h" // IWYU pragma: keep
 
- #include <functional>
 
- #include <memory>
 
- #include <set>
 
- #include <string>
 
- #include <unordered_map>
 
- #include <vector>
 
- #include "cmDefinitions.h"
 
- #include "cmLinkedTree.h"
 
- #include "cmListFileCache.h"
 
- #include "cmPolicies.h"
 
- #include "cmProperty.h"
 
- #include "cmPropertyDefinition.h"
 
- #include "cmPropertyMap.h"
 
- #include "cmStatePrivate.h"
 
- #include "cmStateTypes.h"
 
- class cmCacheManager;
 
- class cmCommand;
 
- class cmGlobVerificationManager;
 
- class cmStateSnapshot;
 
- class cmMessenger;
 
- class cmExecutionStatus;
 
- class cmState
 
- {
 
-   friend class cmStateSnapshot;
 
- public:
 
-   cmState();
 
-   ~cmState();
 
-   cmState(const cmState&) = delete;
 
-   cmState& operator=(const cmState&) = delete;
 
-   enum Mode
 
-   {
 
-     Unknown,
 
-     Project,
 
-     Script,
 
-     FindPackage,
 
-     CTest,
 
-     CPack,
 
-   };
 
-   static const std::string& GetTargetTypeName(
 
-     cmStateEnums::TargetType targetType);
 
-   cmStateSnapshot CreateBaseSnapshot();
 
-   cmStateSnapshot CreateBuildsystemDirectorySnapshot(
 
-     cmStateSnapshot const& originSnapshot);
 
-   cmStateSnapshot CreateDeferCallSnapshot(
 
-     cmStateSnapshot const& originSnapshot, std::string const& fileName);
 
-   cmStateSnapshot CreateFunctionCallSnapshot(
 
-     cmStateSnapshot const& originSnapshot, std::string const& fileName);
 
-   cmStateSnapshot CreateMacroCallSnapshot(
 
-     cmStateSnapshot const& originSnapshot, std::string const& fileName);
 
-   cmStateSnapshot CreateIncludeFileSnapshot(
 
-     cmStateSnapshot const& originSnapshot, std::string const& fileName);
 
-   cmStateSnapshot CreateVariableScopeSnapshot(
 
-     cmStateSnapshot const& originSnapshot);
 
-   cmStateSnapshot CreateInlineListFileSnapshot(
 
-     cmStateSnapshot const& originSnapshot, std::string const& fileName);
 
-   cmStateSnapshot CreatePolicyScopeSnapshot(
 
-     cmStateSnapshot const& originSnapshot);
 
-   cmStateSnapshot Pop(cmStateSnapshot const& originSnapshot);
 
-   static cmStateEnums::CacheEntryType StringToCacheEntryType(
 
-     const std::string&);
 
-   static bool StringToCacheEntryType(const std::string&,
 
-                                      cmStateEnums::CacheEntryType& type);
 
-   static const std::string& CacheEntryTypeToString(
 
-     cmStateEnums::CacheEntryType);
 
-   static bool IsCacheEntryType(std::string const& key);
 
-   bool LoadCache(const std::string& path, bool internal,
 
-                  std::set<std::string>& excludes,
 
-                  std::set<std::string>& includes);
 
-   bool SaveCache(const std::string& path, cmMessenger* messenger);
 
-   bool DeleteCache(const std::string& path);
 
-   bool IsCacheLoaded() const;
 
-   std::vector<std::string> GetCacheEntryKeys() const;
 
-   cmProp GetCacheEntryValue(std::string const& key) const;
 
-   std::string GetSafeCacheEntryValue(std::string const& key) const;
 
-   cmProp GetInitializedCacheValue(std::string const& key) const;
 
-   cmStateEnums::CacheEntryType GetCacheEntryType(std::string const& key) const;
 
-   void SetCacheEntryValue(std::string const& key, std::string const& value);
 
-   void RemoveCacheEntry(std::string const& key);
 
-   void SetCacheEntryProperty(std::string const& key,
 
-                              std::string const& propertyName,
 
-                              std::string const& value);
 
-   void SetCacheEntryBoolProperty(std::string const& key,
 
-                                  std::string const& propertyName, bool value);
 
-   std::vector<std::string> GetCacheEntryPropertyList(std::string const& key);
 
-   cmProp GetCacheEntryProperty(std::string const& key,
 
-                                std::string const& propertyName);
 
-   bool GetCacheEntryPropertyAsBool(std::string const& key,
 
-                                    std::string const& propertyName);
 
-   void AppendCacheEntryProperty(std::string const& key,
 
-                                 const std::string& property,
 
-                                 const std::string& value,
 
-                                 bool asString = false);
 
-   void RemoveCacheEntryProperty(std::string const& key,
 
-                                 std::string const& propertyName);
 
-   //! Break up a line like VAR:type="value" into var, type and value
 
-   static bool ParseCacheEntry(const std::string& entry, std::string& var,
 
-                               std::string& value,
 
-                               cmStateEnums::CacheEntryType& type);
 
-   cmStateSnapshot Reset();
 
-   // Define a property
 
-   void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
 
-                       const std::string& ShortDescription,
 
-                       const std::string& FullDescription, bool chain = false);
 
-   // get property definition
 
-   cmPropertyDefinition const* GetPropertyDefinition(
 
-     const std::string& name, cmProperty::ScopeType scope) const;
 
-   bool IsPropertyChained(const std::string& name,
 
-                          cmProperty::ScopeType scope) const;
 
-   void SetLanguageEnabled(std::string const& l);
 
-   bool GetLanguageEnabled(std::string const& l) const;
 
-   std::vector<std::string> GetEnabledLanguages() const;
 
-   void SetEnabledLanguages(std::vector<std::string> const& langs);
 
-   void ClearEnabledLanguages();
 
-   bool GetIsInTryCompile() const;
 
-   void SetIsInTryCompile(bool b);
 
-   bool GetIsGeneratorMultiConfig() const;
 
-   void SetIsGeneratorMultiConfig(bool b);
 
-   using Command = std::function<bool(std::vector<cmListFileArgument> const&,
 
-                                      cmExecutionStatus&)>;
 
-   using BuiltinCommand = bool (*)(std::vector<std::string> const&,
 
-                                   cmExecutionStatus&);
 
-   // Returns a command from its name, case insensitive, or nullptr
 
-   Command GetCommand(std::string const& name) const;
 
-   // Returns a command from its name, or nullptr
 
-   Command GetCommandByExactName(std::string const& name) const;
 
-   void AddBuiltinCommand(std::string const& name,
 
-                          std::unique_ptr<cmCommand> command);
 
-   void AddBuiltinCommand(std::string const& name, Command command);
 
-   void AddBuiltinCommand(std::string const& name, BuiltinCommand command);
 
-   void AddDisallowedCommand(std::string const& name, BuiltinCommand command,
 
-                             cmPolicies::PolicyID policy, const char* message);
 
-   void AddUnexpectedCommand(std::string const& name, const char* error);
 
-   void AddScriptedCommand(std::string const& name, Command command);
 
-   void RemoveBuiltinCommand(std::string const& name);
 
-   void RemoveUserDefinedCommands();
 
-   std::vector<std::string> GetCommandNames() const;
 
-   void SetGlobalProperty(const std::string& prop, const char* value);
 
-   void AppendGlobalProperty(const std::string& prop, const std::string& value,
 
-                             bool asString = false);
 
-   cmProp GetGlobalProperty(const std::string& prop);
 
-   bool GetGlobalPropertyAsBool(const std::string& prop);
 
-   std::string const& GetSourceDirectory() const;
 
-   void SetSourceDirectory(std::string const& sourceDirectory);
 
-   std::string const& GetBinaryDirectory() const;
 
-   void SetBinaryDirectory(std::string const& binaryDirectory);
 
-   void SetWindowsShell(bool windowsShell);
 
-   bool UseWindowsShell() const;
 
-   void SetWindowsVSIDE(bool windowsVSIDE);
 
-   bool UseWindowsVSIDE() const;
 
-   void SetGhsMultiIDE(bool ghsMultiIDE);
 
-   bool UseGhsMultiIDE() const;
 
-   void SetWatcomWMake(bool watcomWMake);
 
-   bool UseWatcomWMake() const;
 
-   void SetMinGWMake(bool minGWMake);
 
-   bool UseMinGWMake() const;
 
-   void SetNMake(bool nMake);
 
-   bool UseNMake() const;
 
-   void SetMSYSShell(bool mSYSShell);
 
-   bool UseMSYSShell() const;
 
-   void SetNinjaMulti(bool ninjaMulti);
 
-   bool UseNinjaMulti() const;
 
-   unsigned int GetCacheMajorVersion() const;
 
-   unsigned int GetCacheMinorVersion() const;
 
-   Mode GetMode() const;
 
-   std::string GetModeString() const;
 
-   void SetMode(Mode mode);
 
-   static std::string ModeToString(Mode mode);
 
- private:
 
-   friend class cmake;
 
-   void AddCacheEntry(const std::string& key, const char* value,
 
-                      const char* helpString,
 
-                      cmStateEnums::CacheEntryType type);
 
-   bool DoWriteGlobVerifyTarget() const;
 
-   std::string const& GetGlobVerifyScript() const;
 
-   std::string const& GetGlobVerifyStamp() const;
 
-   bool SaveVerificationScript(const std::string& path);
 
-   void AddGlobCacheEntry(bool recurse, bool listDirectories,
 
-                          bool followSymlinks, const std::string& relative,
 
-                          const std::string& expression,
 
-                          const std::vector<std::string>& files,
 
-                          const std::string& variable,
 
-                          cmListFileBacktrace const& bt);
 
-   cmPropertyDefinitionMap PropertyDefinitions;
 
-   std::vector<std::string> EnabledLanguages;
 
-   std::unordered_map<std::string, Command> BuiltinCommands;
 
-   std::unordered_map<std::string, Command> ScriptedCommands;
 
-   cmPropertyMap GlobalProperties;
 
-   std::unique_ptr<cmCacheManager> CacheManager;
 
-   std::unique_ptr<cmGlobVerificationManager> GlobVerificationManager;
 
-   cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>
 
-     BuildsystemDirectory;
 
-   cmLinkedTree<std::string> ExecutionListFiles;
 
-   cmLinkedTree<cmStateDetail::PolicyStackEntry> PolicyStack;
 
-   cmLinkedTree<cmStateDetail::SnapshotDataType> SnapshotData;
 
-   cmLinkedTree<cmDefinitions> VarTree;
 
-   std::string SourceDirectory;
 
-   std::string BinaryDirectory;
 
-   bool IsInTryCompile = false;
 
-   bool IsGeneratorMultiConfig = false;
 
-   bool WindowsShell = false;
 
-   bool WindowsVSIDE = false;
 
-   bool GhsMultiIDE = false;
 
-   bool WatcomWMake = false;
 
-   bool MinGWMake = false;
 
-   bool NMake = false;
 
-   bool MSYSShell = false;
 
-   bool NinjaMulti = false;
 
-   Mode CurrentMode = Unknown;
 
- };
 
 
  |