| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| |
| #pragma once |
| |
| #include <map> |
| #include <memory> |
| #include <set> |
| #include <string> |
| #include <vector> |
| |
| #include "cmsys/RegularExpression.hxx" |
| |
| #include "cmBinUtilsLinker.h" |
| |
| class cmExecutionStatus; |
| class cmMakefile; |
| |
| class cmRuntimeDependencyArchive |
| { |
| public: |
| explicit cmRuntimeDependencyArchive( |
| cmExecutionStatus& status, std::vector<std::string> searchDirectories, |
| std::string bundleExecutable, |
| const std::vector<std::string>& preIncludeRegexes, |
| const std::vector<std::string>& preExcludeRegexes, |
| const std::vector<std::string>& postIncludeRegexes, |
| const std::vector<std::string>& postExcludeRegexes, |
| std::vector<std::string> postIncludeFiles, |
| std::vector<std::string> postExcludeFiles, |
| std::vector<std::string> postExcludeFilesStrict); |
| bool Prepare(); |
| bool GetRuntimeDependencies(const std::vector<std::string>& executables, |
| const std::vector<std::string>& libraries, |
| const std::vector<std::string>& modules); |
| |
| void SetError(const std::string& e); |
| |
| const std::string& GetBundleExecutable() const; |
| const std::vector<std::string>& GetSearchDirectories() const; |
| const std::string& GetGetRuntimeDependenciesTool() const; |
| bool GetGetRuntimeDependenciesCommand( |
| const std::string& search, std::vector<std::string>& command) const; |
| bool IsPreExcluded(const std::string& name) const; |
| bool IsPostExcluded(const std::string& name) const; |
| |
| void AddResolvedPath(const std::string& name, const std::string& path, |
| bool& unique, std::vector<std::string> rpaths = {}); |
| void AddUnresolvedPath(const std::string& name); |
| |
| cmMakefile* GetMakefile() const; |
| const std::map<std::string, std::set<std::string>>& GetResolvedPaths() const; |
| const std::set<std::string>& GetUnresolvedPaths() const; |
| const std::map<std::string, std::vector<std::string>>& GetRPaths() const; |
| |
| static bool PlatformSupportsRuntimeDependencies(const std::string& platform); |
| |
| private: |
| cmExecutionStatus& Status; |
| std::unique_ptr<cmBinUtilsLinker> Linker; |
| |
| std::string GetRuntimeDependenciesTool; |
| std::vector<std::string> GetRuntimeDependenciesCommand; |
| |
| std::vector<std::string> SearchDirectories; |
| std::string BundleExecutable; |
| std::vector<cmsys::RegularExpression> PreIncludeRegexes; |
| std::vector<cmsys::RegularExpression> PreExcludeRegexes; |
| std::vector<cmsys::RegularExpression> PostIncludeRegexes; |
| std::vector<cmsys::RegularExpression> PostExcludeRegexes; |
| std::vector<std::string> PostIncludeFiles; |
| std::vector<std::string> PostExcludeFiles; |
| std::vector<std::string> PostExcludeFilesStrict; |
| std::map<std::string, std::set<std::string>> ResolvedPaths; |
| std::set<std::string> UnresolvedPaths; |
| std::map<std::string, std::vector<std::string>> RPaths; |
| }; |