blob: d821308b6e3d1249ba5f9002f8b1e0931b099e7e [file] [edit]
//===- DependencyScanningService.cpp - Scanning Service -------------------===//
//
// 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/DependencyScanningService.h"
#include "llvm/Support/Chrono.h"
#include "llvm/Support/Process.h"
using namespace clang;
using namespace dependencies;
bool dependencies::shouldCacheNegativeStatsDefault() {
if (std::optional<std::string> MaybeNegStats =
llvm::sys::Process::GetEnv("CLANG_SCAN_CACHE_NEGATIVE_STATS")) {
if (MaybeNegStats->empty())
return true;
return llvm::StringSwitch<bool>(*MaybeNegStats)
.Case("1", true)
.Case("0", false)
.Default(false);
}
return false;
}
// Negative caching directories can cause build failures due to incorrectly
// configured projects.
bool dependencies::shouldCacheNegativeStatsForPath(StringRef Path) {
StringRef Ext = llvm::sys::path::extension(Path);
if (Ext.empty())
return false;
if (Ext == ".framework")
return false;
return true;
}
DependencyScanningServiceOptions::DependencyScanningServiceOptions()
: MakeVFS([] { return llvm::vfs::createPhysicalFileSystem(); }),
BuildSessionTimestamp(
llvm::sys::toTimeT(std::chrono::system_clock::now())) {}