1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 file Copyright.txt or https://cmake.org/licensing for details. */
8 #include <unordered_map>
11 #include "cmBinUtilsLinker.h"
12 #include "cmBinUtilsMacOSMachOGetRuntimeDependenciesTool.h"
13 #include "cmStateTypes.h"
15 class cmRuntimeDependencyArchive;
17 class cmBinUtilsMacOSMachOLinker : public cmBinUtilsLinker
20 cmBinUtilsMacOSMachOLinker(cmRuntimeDependencyArchive* archive);
22 bool Prepare() override;
24 bool ScanDependencies(std::string const& file,
25 cmStateEnums::TargetType type) override;
30 std::vector<std::string> libs;
31 std::vector<std::string> rpaths;
34 std::unique_ptr<cmBinUtilsMacOSMachOGetRuntimeDependenciesTool> Tool;
35 std::unordered_map<std::string, FileInfo> ScannedFileInfo;
37 const FileInfo* GetFileInfo(std::string const& file);
39 bool ScanDependencies(std::string const& file,
40 std::vector<std::string> const& libs,
41 std::vector<std::string> const& rpaths,
42 std::string const& executablePath);
44 bool GetFileDependencies(std::vector<std::string> const& names,
45 std::string const& executablePath,
46 std::string const& loaderPath,
47 std::vector<std::string> const& rpaths);
49 bool ResolveDependency(std::string const& name,
50 std::string const& executablePath,
51 std::string const& loaderPath,
52 std::vector<std::string> const& rpaths,
53 std::string& path, bool& resolved);
55 bool ResolveExecutablePathDependency(std::string const& name,
56 std::string const& executablePath,
57 std::string& path, bool& resolved);
59 bool ResolveLoaderPathDependency(std::string const& name,
60 std::string const& loaderPath,
61 std::string& path, bool& resolved);
63 bool ResolveRPathDependency(std::string const& name,
64 std::string const& executablePath,
65 std::string const& loaderPath,
66 std::vector<std::string> const& rpaths,
67 std::string& path, bool& resolved);