blob: d66f03422b0a3056cdf1539448021f64d397c8c3 [file] [edit]
//===----------------------------------------------------------------------===//
//
// 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);
}