123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #ifndef cmFindPackageCommand_h
- #define cmFindPackageCommand_h
- #include "cmConfigure.h"
- #include "cm_kwiml.h"
- #include <map>
- #include <set>
- #include <string>
- #include <vector>
- #include "cmFindCommon.h"
- class cmCommand;
- class cmExecutionStatus;
- class cmSearchPath;
- class cmFindPackageCommand : public cmFindCommon
- {
- public:
-
- enum SortOrderType
- {
- None,
- Name_order,
- Natural
- };
-
- enum SortDirectionType
- {
- Asc,
- Dec
- };
-
- static void Sort(std::vector<std::string>::iterator begin,
- std::vector<std::string>::iterator end, SortOrderType order,
- SortDirectionType dir);
- cmFindPackageCommand();
-
- cmCommand* Clone() override { return new cmFindPackageCommand; }
-
- bool InitialPass(std::vector<std::string> const& args,
- cmExecutionStatus& status) override;
- private:
- class PathLabel : public cmFindCommon::PathLabel
- {
- protected:
- PathLabel();
- public:
- PathLabel(const std::string& label)
- : cmFindCommon::PathLabel(label)
- {
- }
- static PathLabel UserRegistry;
- static PathLabel Builds;
- static PathLabel SystemRegistry;
- };
-
-
- void AppendSearchPathGroups();
- void AppendSuccessInformation();
- void AppendToFoundProperty(bool found);
- void SetModuleVariables(const std::string& components);
- bool FindModule(bool& found);
- void AddFindDefinition(const std::string& var, const char* val);
- void RestoreFindDefinitions();
- bool HandlePackageMode();
- bool FindConfig();
- bool FindPrefixedConfig();
- bool FindFrameworkConfig();
- bool FindAppBundleConfig();
- enum PolicyScopeRule
- {
- NoPolicyScope,
- DoPolicyScope
- };
- bool ReadListFile(const char* f, PolicyScopeRule psr);
- void StoreVersionFound();
- void ComputePrefixes();
- void FillPrefixesPackageRoot();
- void FillPrefixesCMakeEnvironment();
- void FillPrefixesCMakeVariable();
- void FillPrefixesSystemEnvironment();
- void FillPrefixesUserRegistry();
- void FillPrefixesSystemRegistry();
- void FillPrefixesCMakeSystemVariable();
- void FillPrefixesUserGuess();
- void FillPrefixesUserHints();
- void LoadPackageRegistryDir(std::string const& dir, cmSearchPath& outPaths);
- void LoadPackageRegistryWinUser();
- void LoadPackageRegistryWinSystem();
- void LoadPackageRegistryWin(bool user, unsigned int view,
- cmSearchPath& outPaths);
- bool CheckPackageRegistryEntry(const std::string& fname,
- cmSearchPath& outPaths);
- bool SearchDirectory(std::string const& dir);
- bool CheckDirectory(std::string const& dir);
- bool FindConfigFile(std::string const& dir, std::string& file);
- bool CheckVersion(std::string const& config_file);
- bool CheckVersionFile(std::string const& version_file,
- std::string& result_version);
- bool SearchPrefix(std::string const& prefix);
- bool SearchFrameworkPrefix(std::string const& prefix_in);
- bool SearchAppBundlePrefix(std::string const& prefix_in);
- friend class cmFindPackageFileList;
- struct OriginalDef
- {
- bool exists;
- std::string value;
- };
- std::map<std::string, OriginalDef> OriginalDefs;
- std::string Name;
- std::string Variable;
- std::string Version;
- unsigned int VersionMajor;
- unsigned int VersionMinor;
- unsigned int VersionPatch;
- unsigned int VersionTweak;
- unsigned int VersionCount;
- bool VersionExact;
- std::string FileFound;
- std::string VersionFound;
- unsigned int VersionFoundMajor;
- unsigned int VersionFoundMinor;
- unsigned int VersionFoundPatch;
- unsigned int VersionFoundTweak;
- unsigned int VersionFoundCount;
- KWIML_INT_uint64_t RequiredCMakeVersion;
- bool Quiet;
- bool Required;
- bool UseConfigFiles;
- bool UseFindModules;
- bool NoUserRegistry;
- bool NoSystemRegistry;
- bool DebugMode;
- bool UseLib32Paths;
- bool UseLib64Paths;
- bool UseLibx32Paths;
- bool PolicyScope;
- std::string LibraryArchitecture;
- std::vector<std::string> Names;
- std::vector<std::string> Configs;
- std::set<std::string> IgnoredPaths;
-
- SortOrderType SortOrder;
-
- SortDirectionType SortDirection;
- struct ConfigFileInfo
- {
- std::string filename;
- std::string version;
- bool operator<(ConfigFileInfo const& rhs) const
- {
- return this->filename < rhs.filename;
- }
- bool operator==(ConfigFileInfo const& rhs) const
- {
- return this->filename == rhs.filename;
- }
- bool operator!=(ConfigFileInfo const& rhs) const
- {
- return !(*this == rhs);
- }
- };
- std::vector<ConfigFileInfo> ConsideredConfigs;
- };
- #endif
|