53 std::string raw_path = lldb_shlib_spec.
GetPath();
54 llvm::StringRef parent_dir = llvm::sys::path::parent_path(raw_path);
55 static const std::string clang_resource_path =
56 clang::driver::Driver::GetResourcesPath(
"bin/lldb");
58 static const llvm::StringRef kResourceDirSuffixes[] = {
66 LLDB_INSTALL_LIBDIR_BASENAME
"/lldb/clang",
69 for (
const auto &Suffix : kResourceDirSuffixes) {
70 llvm::SmallString<256> clang_dir(parent_dir);
71 llvm::SmallString<32> relative_path(Suffix);
72 llvm::sys::path::native(relative_path);
73 llvm::sys::path::append(clang_dir, relative_path);
76 "DefaultComputeClangResourceDir: Setting ClangResourceDir "
77 "to \"{0}\", verify = {1}",
78 clang_dir.str(), verify ?
"true" :
"false");
91#if !defined(__APPLE__)
95 std::string raw_path = lldb_shlib_spec.
GetPath();
97 auto rev_it = llvm::sys::path::rbegin(raw_path);
98 auto r_end = llvm::sys::path::rend(raw_path);
101 while (rev_it != r_end) {
102 if (*rev_it ==
"LLDB.framework")
116 llvm::SmallString<256> clang_path;
117 const char *swift_clang_resource_dir =
"usr/lib/swift/clang";
118 auto parent = std::next(rev_it);
119 if (parent != r_end && *parent ==
"SharedFrameworks") {
122 raw_path.resize(parent - r_end);
123 llvm::sys::path::append(clang_path, raw_path,
124 "Developer/Toolchains/XcodeDefault.xctoolchain",
125 swift_clang_resource_dir);
131 }
else if (parent != r_end && *parent ==
"PrivateFrameworks" &&
132 std::distance(parent, r_end) > 2) {
135 if (*parent ==
"System") {
139 raw_path.resize(parent - r_end);
140 llvm::sys::path::append(clang_path, raw_path, swift_clang_resource_dir);
150 raw_path = lldb_shlib_spec.
GetPath();
151 raw_path.resize(rev_it - r_end);
152 raw_path.append(
"LLDB.framework/Resources/Clang");
static bool DefaultComputeClangResourceDirectory(FileSpec &lldb_shlib_spec, FileSpec &file_spec, bool verify)
This will compute the clang resource directory assuming that clang was installed with the same prefix...