//===----------------------------------------------------------------------===// // // 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 Cb) const { SmallString<0> PathBuf; PathBuf.reserve(256); for (StringRef FileDep : FileDeps) { auto ResolvedFileDep = ASTReader::ResolveImportedPath(PathBuf, FileDep, FileDepsBaseDir); Cb(*ResolvedFileDep); } } const std::vector &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(BuildInfo) && "Using uninitialized ModuleDeps"); if (const auto *CI = std::get_if(&BuildInfo)) BuildInfo = CI->getCC1CommandLine(); return std::get>(BuildInfo); }