1//===- Caching.h - LLVM Link Time Optimizer Configuration -----------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines the localCache function, which allows clients to add a 11// filesystem cache to ThinLTO. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_LTO_CACHING_H 16#define LLVM_LTO_CACHING_H 17 18#include "llvm/LTO/LTO.h" 19#include <string> 20 21namespace llvm { 22namespace lto { 23 24/// This type defines the callback to add a pre-existing native object file 25/// (e.g. in a cache). 26/// 27/// Path is generally expected to be a valid path for the file at the point when 28/// the AddBufferFn function is called, but clients should prefer to access MB 29/// directly in order to avoid a potential race condition. 30/// 31/// Buffer callbacks must be thread safe. 32typedef std::function<void(unsigned Task, std::unique_ptr<MemoryBuffer> MB, 33 StringRef Path)> 34 AddBufferFn; 35 36/// Create a local file system cache which uses the given cache directory and 37/// file callback. This function also creates the cache directory if it does not 38/// already exist. 39Expected<NativeObjectCache> localCache(StringRef CacheDirectoryPath, 40 AddBufferFn AddBuffer); 41 42} // namespace lto 43} // namespace llvm 44 45#endif 46