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