mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-23 08:05:07 +00:00
Work around relative --sysroot=
This commit is contained in:
parent
ceeae84662
commit
3e39b86981
@ -257,7 +257,9 @@ void Initialize(MessageHandler *m, InitializeParam ¶m, ReplyOnce &reply) {
|
||||
LOG_S(INFO) << "initializationOptions: " << output.GetString();
|
||||
|
||||
if (g_config->cacheDirectory.size()) {
|
||||
g_config->cacheDirectory = NormalizePath(g_config->cacheDirectory);
|
||||
SmallString<256> Path(g_config->cacheDirectory);
|
||||
sys::fs::make_absolute(Path);
|
||||
g_config->cacheDirectory = Path.str();
|
||||
EnsureEndsInSlash(g_config->cacheDirectory);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include "project.hh"
|
||||
|
||||
#include "clang_tu.hh" // llvm::vfs
|
||||
#include "filesystem.hh"
|
||||
#include "log.hh"
|
||||
#include "match.hh"
|
||||
@ -316,6 +317,7 @@ LoadEntriesFromDirectory(ProjectConfig *project,
|
||||
std::vector<Project::Entry> result;
|
||||
ProjectProcessor proc(project);
|
||||
for (tooling::CompileCommand &Cmd : CDB->getAllCompileCommands()) {
|
||||
static bool once;
|
||||
Project::Entry entry;
|
||||
entry.root = project->root;
|
||||
DoPathMapping(entry.root);
|
||||
@ -330,7 +332,18 @@ LoadEntriesFromDirectory(ProjectConfig *project,
|
||||
DoPathMapping(arg);
|
||||
entry.args.push_back(Intern(arg));
|
||||
}
|
||||
|
||||
// Work around relative --sysroot= as it isn't affected by
|
||||
// -working-directory=. chdir is thread hostile but this function runs
|
||||
// before indexers do actual work and it works when there is only one
|
||||
// workspace folder.
|
||||
if (!once) {
|
||||
once = true;
|
||||
llvm::vfs::getRealFileSystem()->setCurrentWorkingDirectory(
|
||||
entry.directory);
|
||||
}
|
||||
proc.Process(entry);
|
||||
|
||||
if (Seen.insert(entry.filename).second)
|
||||
result.push_back(entry);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user