/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst 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, std::vector const& preIncludeRegexes, std::vector const& preExcludeRegexes, std::vector const& postIncludeRegexes, std::vector const& postExcludeRegexes, std::vector postIncludeFiles, std::vector postExcludeFiles, std::vector postExcludeFilesStrict); bool Prepare(); bool GetRuntimeDependencies(std::vector const& executables, std::vector const& libraries, std::vector const& modules); void SetError(std::string const& e); std::string const& GetBundleExecutable() const; std::vector const& GetSearchDirectories() const; std::string const& GetGetRuntimeDependenciesTool() const; bool GetGetRuntimeDependenciesCommand( std::string const& search, std::vector& command) const; bool IsPreExcluded(std::string const& name) const; bool IsPostExcluded(std::string const& name) const; void AddResolvedPath(std::string const& name, std::string const& path, bool& unique, std::vector rpaths = {}); void AddUnresolvedPath(std::string const& name); cmMakefile* GetMakefile() const; std::map> const& GetResolvedPaths() const; std::set const& GetUnresolvedPaths() const; std::map> const& GetRPaths() const; static bool PlatformSupportsRuntimeDependencies(std::string const& 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; };