Jan Svoboda c84d8e8f1c
[clang][modules] Introduce new ModuleCache interface (#131193)
This PR adds new `ModuleCache` interface to Clang's implicitly-built
modules machinery. The main motivation for this change is to create a
second implementation that uses a more efficient kind of
`llvm::AdvisoryLock` during dependency scanning.

In addition to the lock abstraction, the `ModuleCache` interface also
manages the existing `InMemoryModuleCache` instance. I found that
compared to keeping these separate/independent, the code is a bit
simpler now, since these are two tightly coupled concepts. I can
envision a more efficient implementation of the `InMemoryModuleCache`
for the single-process case too, which will be much easier to implement
with the current setup.

This is not intended to be a functional change.
2025-03-14 11:32:39 -07:00

43 lines
667 B
CMake

set(LLVM_LINK_COMPONENTS
BitReader
BitstreamReader
Object
Support
TargetParser
)
add_clang_library(clangSerialization
ASTCommon.cpp
ASTReader.cpp
ASTReaderDecl.cpp
ASTReaderStmt.cpp
ASTWriter.cpp
ASTWriterDecl.cpp
ASTWriterStmt.cpp
GeneratePCH.cpp
GlobalModuleIndex.cpp
InMemoryModuleCache.cpp
ModuleCache.cpp
ModuleFile.cpp
ModuleFileExtension.cpp
ModuleManager.cpp
PCHContainerOperations.cpp
ObjectFilePCHContainerReader.cpp
TemplateArgumentHasher.cpp
ADDITIONAL_HEADERS
ASTCommon.h
ASTReaderInternals.h
LINK_LIBS
clangAST
clangBasic
clangLex
clangSema
DEPENDS
omp_gen
ClangDriverOptions
)