This PR pulls the types forming the dependency graph from three different headers into a single new header `DependencyGraph.h`. This makes the code organization a bit clearer, and is NFC otherwise.
36 lines
1.3 KiB
C++
36 lines
1.3 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/DependencyScanning/DependencyGraph.h"
|
|
|
|
#include "clang/Serialization/ASTReader.h"
|
|
#include "llvm/ADT/SmallString.h"
|
|
|
|
using namespace clang;
|
|
using namespace clang::dependencies;
|
|
|
|
void ModuleDeps::forEachFileDep(llvm::function_ref<void(StringRef)> Cb) const {
|
|
SmallString<0> PathBuf;
|
|
PathBuf.reserve(256);
|
|
for (StringRef FileDep : FileDeps) {
|
|
auto ResolvedFileDep =
|
|
ASTReader::ResolveImportedPath(PathBuf, FileDep, FileDepsBaseDir);
|
|
Cb(*ResolvedFileDep);
|
|
}
|
|
}
|
|
|
|
const std::vector<std::string> &ModuleDeps::getBuildArguments() const {
|
|
// FIXME: this operation is not thread safe and is expected to be called
|
|
// on a single thread. Otherwise, it should be protected with a lock.
|
|
assert(!std::holds_alternative<std::monostate>(BuildInfo) &&
|
|
"Using uninitialized ModuleDeps");
|
|
if (const auto *CI = std::get_if<CowCompilerInvocation>(&BuildInfo))
|
|
BuildInfo = CI->getCC1CommandLine();
|
|
return std::get<std::vector<std::string>>(BuildInfo);
|
|
}
|