| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 | 
							- /*============================================================================
 
-   CMake - Cross Platform Makefile Generator
 
-   Copyright 2015 Stephen Kelly <[email protected]>
 
-   Distributed under the OSI-approved BSD License (the "License");
 
-   see accompanying file Copyright.txt for details.
 
-   This software is distributed WITHOUT ANY WARRANTY; without even the
 
-   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
-   See the License for more information.
 
- ============================================================================*/
 
- #ifndef cmState_h
 
- #define cmState_h
 
- #include "cmStandardIncludes.h"
 
- #include "cmPropertyDefinitionMap.h"
 
- #include "cmPropertyMap.h"
 
- #include "cmLinkedTree.h"
 
- #include "cmAlgorithms.h"
 
- #include "cmPolicies.h"
 
- class cmake;
 
- class cmCommand;
 
- class cmDefinitions;
 
- class cmListFileBacktrace;
 
- class cmCacheManager;
 
- class cmState
 
- {
 
-   struct SnapshotDataType;
 
-   struct PolicyStackEntry;
 
-   struct BuildsystemDirectoryStateType;
 
-   typedef cmLinkedTree<SnapshotDataType>::iterator PositionType;
 
-   friend class Snapshot;
 
- public:
 
-   cmState();
 
-   ~cmState();
 
-   enum SnapshotType
 
-   {
 
-     BaseType,
 
-     BuildsystemDirectoryType,
 
-     FunctionCallType,
 
-     MacroCallType,
 
-     CallStackType,
 
-     InlineListFileType,
 
-     PolicyScopeType,
 
-     VariableScopeType
 
-   };
 
-   class Directory;
 
-   class Snapshot {
 
-   public:
 
-     Snapshot(cmState* state = 0);
 
-     Snapshot(cmState* state, PositionType position);
 
-     const char* GetDefinition(std::string const& name) const;
 
-     bool IsInitialized(std::string const& name) const;
 
-     void SetDefinition(std::string const& name, std::string const& value);
 
-     void RemoveDefinition(std::string const& name);
 
-     std::vector<std::string> UnusedKeys() const;
 
-     std::vector<std::string> ClosureKeys() const;
 
-     bool RaiseScope(std::string const& var, const char* varDef);
 
-     void SetListFile(std::string const& listfile);
 
-     std::string GetExecutionListFile() const;
 
-     std::vector<Snapshot> GetChildren();
 
-     std::string GetEntryPointCommand() const;
 
-     long GetEntryPointLine() const;
 
-     bool IsValid() const;
 
-     Snapshot GetBuildsystemDirectoryParent() const;
 
-     Snapshot GetCallStackParent() const;
 
-     SnapshotType GetType() const;
 
-     void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status);
 
-     cmPolicies::PolicyStatus GetPolicy(cmPolicies::PolicyID id) const;
 
-     bool HasDefinedPolicyCMP0011();
 
-     void PushPolicy(cmPolicies::PolicyMap entry, bool weak);
 
-     bool PopPolicy();
 
-     bool CanPopPolicyScope();
 
-     cmState* GetState() const;
 
-     Directory GetDirectory() const;
 
-     void SetProjectName(std::string const& name);
 
-     std::string GetProjectName() const;
 
-     void InitializeFromParent_ForSubdirsCommand();
 
-     struct StrictWeakOrder
 
-     {
 
-       bool operator()(const cmState::Snapshot& lhs,
 
-                       const cmState::Snapshot& rhs) const;
 
-     };
 
-     void SetDirectoryDefinitions();
 
-     void SetDefaultDefinitions();
 
-   private:
 
-     friend bool operator==(const cmState::Snapshot& lhs,
 
-                            const cmState::Snapshot& rhs);
 
-     friend bool operator!=(const cmState::Snapshot& lhs,
 
-                            const cmState::Snapshot& rhs);
 
-     friend class cmState;
 
-     friend class Directory;
 
-     friend struct StrictWeakOrder;
 
-     void InitializeFromParent();
 
-     cmState* State;
 
-     cmState::PositionType Position;
 
-   };
 
-   class Directory
 
-   {
 
-     Directory(cmLinkedTree<BuildsystemDirectoryStateType>::iterator iter,
 
-               Snapshot const& snapshot);
 
-   public:
 
-     const char* GetCurrentSource() const;
 
-     void SetCurrentSource(std::string const& dir);
 
-     const char* GetCurrentBinary() const;
 
-     void SetCurrentBinary(std::string const& dir);
 
-     std::vector<std::string> const&
 
-     GetCurrentSourceComponents() const;
 
-     std::vector<std::string> const&
 
-     GetCurrentBinaryComponents() const;
 
-     const char* GetRelativePathTopSource() const;
 
-     const char* GetRelativePathTopBinary() const;
 
-     void SetRelativePathTopSource(const char* dir);
 
-     void SetRelativePathTopBinary(const char* dir);
 
-     cmStringRange GetIncludeDirectoriesEntries() const;
 
-     cmBacktraceRange GetIncludeDirectoriesEntryBacktraces() const;
 
-     void AppendIncludeDirectoriesEntry(std::string const& vec,
 
-                                        cmListFileBacktrace const& lfbt);
 
-     void PrependIncludeDirectoriesEntry(std::string const& vec,
 
-                                         cmListFileBacktrace const& lfbt);
 
-     void SetIncludeDirectories(std::string const& vec,
 
-                                cmListFileBacktrace const& lfbt);
 
-     void ClearIncludeDirectories();
 
-     cmStringRange GetCompileDefinitionsEntries() const;
 
-     cmBacktraceRange GetCompileDefinitionsEntryBacktraces() const;
 
-     void AppendCompileDefinitionsEntry(std::string const& vec,
 
-                                        cmListFileBacktrace const& lfbt);
 
-     void SetCompileDefinitions(std::string const& vec,
 
-                                cmListFileBacktrace const& lfbt);
 
-     void ClearCompileDefinitions();
 
-     cmStringRange GetCompileOptionsEntries() const;
 
-     cmBacktraceRange GetCompileOptionsEntryBacktraces() const;
 
-     void AppendCompileOptionsEntry(std::string const& vec,
 
-                                        cmListFileBacktrace const& lfbt);
 
-     void SetCompileOptions(std::string const& vec,
 
-                                cmListFileBacktrace const& lfbt);
 
-     void ClearCompileOptions();
 
-     void SetProperty(const std::string& prop, const char *value,
 
-                      cmListFileBacktrace lfbt);
 
-     void AppendProperty(const std::string& prop, const char *value,
 
-                         bool asString, cmListFileBacktrace lfbt);
 
-     const char *GetProperty(const std::string& prop) const;
 
-     const char *GetProperty(const std::string& prop, bool chain) const;
 
-     bool GetPropertyAsBool(const std::string& prop) const;
 
-     std::vector<std::string> GetPropertyKeys() const;
 
-   private:
 
-     void ComputeRelativePathTopSource();
 
-     void ComputeRelativePathTopBinary();
 
-   private:
 
-     cmLinkedTree<BuildsystemDirectoryStateType>::iterator DirectoryState;
 
-     Snapshot Snapshot_;
 
-     friend class Snapshot;
 
-   };
 
-   enum TargetType { EXECUTABLE, STATIC_LIBRARY,
 
-                     SHARED_LIBRARY, MODULE_LIBRARY,
 
-                     OBJECT_LIBRARY, UTILITY, GLOBAL_TARGET,
 
-                     INTERFACE_LIBRARY,
 
-                     UNKNOWN_LIBRARY};
 
-   static const char* GetTargetTypeName(cmState::TargetType targetType);
 
-   Snapshot CreateBaseSnapshot();
 
-   Snapshot
 
-   CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot,
 
-                                      std::string const& entryPointCommand,
 
-                                      long entryPointLine);
 
-   Snapshot CreateFunctionCallSnapshot(Snapshot originSnapshot,
 
-                                       std::string const& entryPointCommand,
 
-                                       long entryPointLine,
 
-                                       std::string const& fileName);
 
-   Snapshot CreateMacroCallSnapshot(Snapshot originSnapshot,
 
-                                    std::string const& entryPointCommand,
 
-                                    long entryPointLine,
 
-                                    std::string const& fileName);
 
-   Snapshot CreateCallStackSnapshot(Snapshot originSnapshot,
 
-                                    std::string const& entryPointCommand,
 
-                                    long entryPointLine,
 
-                                    std::string const& fileName);
 
-   Snapshot CreateVariableScopeSnapshot(Snapshot originSnapshot,
 
-                                        std::string const& entryPointCommand,
 
-                                        long entryPointLine);
 
-   Snapshot CreateInlineListFileSnapshot(Snapshot originSnapshot,
 
-                                         const std::string& entryPointCommand,
 
-                                         long entryPointLine,
 
-                                         std::string const& fileName);
 
-   Snapshot CreatePolicyScopeSnapshot(Snapshot originSnapshot);
 
-   Snapshot Pop(Snapshot originSnapshot);
 
-   enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC,
 
-                        UNINITIALIZED };
 
-   static CacheEntryType StringToCacheEntryType(const char*);
 
-   static const char* CacheEntryTypeToString(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) ;
 
-   bool DeleteCache(const std::string& path);
 
-   std::vector<std::string> GetCacheEntryKeys() const;
 
-   const char* GetCacheEntryValue(std::string const& key) const;
 
-   const char* GetInitializedCacheValue(std::string const& key) const;
 
-   CacheEntryType GetCacheEntryType(std::string const& key) const;
 
-   void SetCacheEntryValue(std::string const& key, std::string const& value);
 
-   void SetCacheValue(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);
 
-   const char* 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,
 
-                               CacheEntryType& type);
 
-   Snapshot Reset();
 
-   // Define a property
 
-   void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
 
-                       const char *ShortDescription,
 
-                       const char *FullDescription,
 
-                       bool chain = false);
 
-   // get property definition
 
-   cmPropertyDefinition const* GetPropertyDefinition
 
-   (const std::string& name, cmProperty::ScopeType scope) const;
 
-   // Is a property defined?
 
-   bool IsPropertyDefined(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);
 
-   cmCommand* GetCommand(std::string const& name) const;
 
-   void AddCommand(cmCommand* command);
 
-   void RemoveUnscriptableCommands();
 
-   void RenameCommand(std::string const& oldName, std::string const& newName);
 
-   void RemoveUserDefinedCommands();
 
-   std::vector<std::string> GetCommandNames() const;
 
-   void SetGlobalProperty(const std::string& prop, const char *value);
 
-   void AppendGlobalProperty(const std::string& prop,
 
-                       const char *value,bool asString=false);
 
-   const char *GetGlobalProperty(const std::string& prop);
 
-   bool GetGlobalPropertyAsBool(const std::string& prop);
 
-   const char* GetSourceDirectory() const;
 
-   void SetSourceDirectory(std::string const& sourceDirectory);
 
-   const char* GetBinaryDirectory() const;
 
-   void SetBinaryDirectory(std::string const& binaryDirectory);
 
-   std::vector<std::string> const& GetSourceDirectoryComponents() const;
 
-   std::vector<std::string> const& GetBinaryDirectoryComponents() const;
 
-   void SetWindowsShell(bool windowsShell);
 
-   bool UseWindowsShell() const;
 
-   void SetWindowsVSIDE(bool windowsVSIDE);
 
-   bool UseWindowsVSIDE() 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;
 
-   unsigned int GetCacheMajorVersion() const;
 
-   unsigned int GetCacheMinorVersion() const;
 
- private:
 
-   friend class cmake;
 
-   void AddCacheEntry(const std::string& key, const char* value,
 
-                      const char* helpString, CacheEntryType type);
 
-   std::map<cmProperty::ScopeType, cmPropertyDefinitionMap> PropertyDefinitions;
 
-   std::vector<std::string> EnabledLanguages;
 
-   std::map<std::string, cmCommand*> Commands;
 
-   cmPropertyMap GlobalProperties;
 
-   cmCacheManager* CacheManager;
 
-   cmLinkedTree<BuildsystemDirectoryStateType> BuildsystemDirectory;
 
-   cmLinkedTree<std::string> ExecutionListFiles;
 
-   cmLinkedTree<PolicyStackEntry> PolicyStack;
 
-   cmLinkedTree<SnapshotDataType> SnapshotData;
 
-   cmLinkedTree<cmDefinitions> VarTree;
 
-   std::vector<std::string> SourceDirectoryComponents;
 
-   std::vector<std::string> BinaryDirectoryComponents;
 
-   std::string SourceDirectory;
 
-   std::string BinaryDirectory;
 
-   bool IsInTryCompile;
 
-   bool WindowsShell;
 
-   bool WindowsVSIDE;
 
-   bool WatcomWMake;
 
-   bool MinGWMake;
 
-   bool NMake;
 
-   bool MSYSShell;
 
- };
 
- bool operator==(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs);
 
- bool operator!=(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs);
 
- #endif
 
 
  |