/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include #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 Tool; std::unique_ptr LDConfigTool; bool HaveLDConfigPaths = false; std::vector LDConfigPaths; std::uint16_t Machine = 0; bool ScanDependencies(std::string const& file, std::vector const& parentRpaths); bool ResolveDependency(std::string const& name, std::vector const& searchPaths, std::string& path, bool& resolved); bool GetLDConfigPaths(); };