/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef cmBinUtilsLinuxELFLinker_h #define cmBinUtilsLinuxELFLinker_h #include <memory> #include <string> #include <vector> #include "cmBinUtilsLinker.h" #include "cmBinUtilsLinuxELFGetRuntimeDependenciesTool.h" #include "cmLDConfigTool.h" #include "cmStateTypes.h" class cmRuntimeDependencyArchive; class cmBinUtilsLinuxELFLinker : public cmBinUtilsLinker { public: cmBinUtilsLinuxELFLinker(cmRuntimeDependencyArchive* archive); bool Prepare() override; bool ScanDependencies(std::string const& file, cmStateEnums::TargetType type) override; private: std::unique_ptr<cmBinUtilsLinuxELFGetRuntimeDependenciesTool> Tool; std::unique_ptr<cmLDConfigTool> LDConfigTool; bool HaveLDConfigPaths = false; std::vector<std::string> LDConfigPaths; bool ScanDependencies(std::string const& file, std::vector<std::string> const& parentRpaths); bool ResolveDependency(std::string const& name, std::vector<std::string> const& searchPaths, std::string& path, bool& resolved); bool GetLDConfigPaths(); }; #endif // cmBinUtilsLinuxELFLinker_h