@@ -186,23 +186,8 @@ class DependencyScanningTool {
186
186
187
187
class FullDependencyConsumer : public DependencyConsumer {
188
188
public:
189
- FullDependencyConsumer (const llvm::StringSet<> &AlreadySeen,
190
- LookupModuleOutputCallback LookupModuleOutput,
191
- CachingOnDiskFileSystemPtr CacheFS = nullptr ,
192
- DepscanPrefixMapping PrefixMapping = {})
193
- : CacheFS(std::move(CacheFS)), PrefixMapping(std::move(PrefixMapping)),
194
- AlreadySeen (AlreadySeen), LookupModuleOutput(LookupModuleOutput) {}
195
-
196
- llvm::Error initialize (CompilerInstance &ScanInstance,
197
- CompilerInvocation &NewInvocation) override ;
198
- llvm::Error finalize (CompilerInstance &ScanInstance,
199
- CompilerInvocation &NewInvocation) override ;
200
- llvm::Error
201
- initializeModuleBuild (CompilerInstance &ModuleScanInstance) override ;
202
- llvm::Error
203
- finalizeModuleBuild (CompilerInstance &ModuleScanInstance) override ;
204
- llvm::Error finalizeModuleInvocation (CompilerInvocation &CI,
205
- const ModuleDeps &MD) override ;
189
+ FullDependencyConsumer (const llvm::StringSet<> &AlreadySeen)
190
+ : AlreadySeen(AlreadySeen) {}
206
191
207
192
void handleBuildCommand (Command Cmd) override {
208
193
Commands.push_back (std::move (Cmd));
@@ -226,17 +211,8 @@ class FullDependencyConsumer : public DependencyConsumer {
226
211
ContextHash = std::move (Hash);
227
212
}
228
213
229
- void handleCASFileSystemRootID (cas::CASID ID) override {
230
- CASFileSystemRootID = ID;
231
- }
232
-
233
- Optional<cas::CASID> getCASFileSystemRootID () const {
234
- return CASFileSystemRootID;
235
- }
236
-
237
- std::string lookupModuleOutput (const ModuleID &ID,
238
- ModuleOutputKind Kind) override {
239
- return LookupModuleOutput (ID, Kind);
214
+ void handleCASFileSystemRootID (std::string ID) override {
215
+ CASFileSystemRootID = std::move (ID);
240
216
}
241
217
242
218
TranslationUnitDeps takeTranslationUnitDeps ();
@@ -249,13 +225,33 @@ class FullDependencyConsumer : public DependencyConsumer {
249
225
ClangModuleDeps;
250
226
std::vector<Command> Commands;
251
227
std::string ContextHash;
252
- CachingOnDiskFileSystemPtr CacheFS;
253
- DepscanPrefixMapping PrefixMapping;
254
- std::optional<llvm::TreePathPrefixMapper> Mapper;
255
- CASOptions CASOpts;
256
- Optional<cas::CASID> CASFileSystemRootID;
228
+ Optional<std::string> CASFileSystemRootID;
257
229
std::vector<std::string> OutputPaths;
258
230
const llvm::StringSet<> &AlreadySeen;
231
+ };
232
+
233
+ // / A simple dependency action controller that uses a callback. If no callback
234
+ // / is provided, it is assumed that looking up module outputs is unreachable.
235
+ class CallbackActionController : public DependencyActionController {
236
+ public:
237
+ virtual ~CallbackActionController ();
238
+
239
+ CallbackActionController (LookupModuleOutputCallback LMO)
240
+ : LookupModuleOutput(std::move(LMO)) {
241
+ if (!LookupModuleOutput) {
242
+ LookupModuleOutput = [](const ModuleID &,
243
+ ModuleOutputKind) -> std::string {
244
+ llvm::report_fatal_error (" unexpected call to lookupModuleOutput" );
245
+ };
246
+ }
247
+ }
248
+
249
+ std::string lookupModuleOutput (const ModuleID &ID,
250
+ ModuleOutputKind Kind) override {
251
+ return LookupModuleOutput (ID, Kind);
252
+ }
253
+
254
+ private:
259
255
LookupModuleOutputCallback LookupModuleOutput;
260
256
};
261
257
0 commit comments