@@ -332,6 +332,22 @@ ImportObjCHeader("import-objc-header",
332
332
llvm::cl::desc (" header to implicitly import" ),
333
333
llvm::cl::cat(Category));
334
334
335
+ static llvm::cl::list<std::string>
336
+ PluginPath (" plugin-path" ,
337
+ llvm::cl::desc (" plugin-path" ),
338
+ llvm::cl::cat(Category));
339
+
340
+ static llvm::cl::list<std::string>
341
+ LoadPluginLibrary (" load-plugin-library" ,
342
+ llvm::cl::desc (" load plugin library" ),
343
+ llvm::cl::cat(Category));
344
+
345
+ static llvm::cl::list<std::string>
346
+ LoadPluginExecutable (" load-plugin-executable" ,
347
+ llvm::cl::desc (" load plugin executable" ),
348
+ llvm::cl::cat(Category));
349
+
350
+
335
351
static llvm::cl::opt<bool >
336
352
EnableSourceImport (" enable-source-import" , llvm::cl::Hidden,
337
353
llvm::cl::cat (Category), llvm::cl::init(false ));
@@ -4481,6 +4497,33 @@ int main(int argc, char *argv[]) {
4481
4497
}
4482
4498
}
4483
4499
4500
+ for (auto path : options::PluginPath) {
4501
+ InitInvok.getSearchPathOptions ().PluginSearchPaths .push_back (path);
4502
+ }
4503
+ if (!options::LoadPluginLibrary.empty ()) {
4504
+ std::vector<std::string> paths;
4505
+ for (auto path: options::LoadPluginLibrary) {
4506
+ llvm::errs () << " LoadPluginLibrary: " << path << " \n " ;
4507
+ paths.push_back (path);
4508
+ }
4509
+ InitInvok.getSearchPathOptions ().setCompilerPluginLibraryPaths (paths);
4510
+ }
4511
+ if (!options::LoadPluginExecutable.empty ()) {
4512
+ std::vector<PluginExecutablePathAndModuleNames> pairs;
4513
+ for (auto arg: options::LoadPluginExecutable) {
4514
+ StringRef path;
4515
+ StringRef modulesStr;
4516
+ std::tie (path, modulesStr) = StringRef (arg).rsplit (' #' );
4517
+ std::vector<std::string> moduleNames;
4518
+ for (auto name : llvm::split (modulesStr, ' ,' )) {
4519
+ moduleNames.emplace_back (name);
4520
+ }
4521
+ pairs.push_back ({std::string (path), std::move (moduleNames)});
4522
+ }
4523
+
4524
+ InitInvok.getSearchPathOptions ().setCompilerPluginExecutablePaths (std::move (pairs));
4525
+ }
4526
+
4484
4527
// Process the clang arguments last and allow them to override previously
4485
4528
// set options.
4486
4529
if (!CCArgs.empty ()) {
0 commit comments