@@ -341,11 +341,14 @@ SupplementaryOutputPathsComputer::getSupplementaryOutputPathsFromArguments()
341
341
options::OPT_emit_ldadd_cfile_path);
342
342
auto moduleSummaryOutput = getSupplementaryFilenamesFromArguments (
343
343
options::OPT_emit_module_summary_path);
344
+ auto symbolGraphOutput = getSupplementaryFilenamesFromArguments (
345
+ options::OPT_emit_symbol_graph_dir);
344
346
if (!objCHeaderOutput || !moduleOutput || !moduleDocOutput ||
345
347
!dependenciesFile || !referenceDependenciesFile ||
346
348
!serializedDiagnostics || !fixItsOutput || !loadedModuleTrace || !TBD ||
347
349
!moduleInterfaceOutput || !privateModuleInterfaceOutput ||
348
- !moduleSourceInfoOutput || !ldAddCFileOutput || !moduleSummaryOutput) {
350
+ !moduleSourceInfoOutput || !ldAddCFileOutput || !moduleSummaryOutput ||
351
+ !symbolGraphOutput) {
349
352
return None;
350
353
}
351
354
std::vector<SupplementaryOutputPaths> result;
@@ -368,6 +371,7 @@ SupplementaryOutputPathsComputer::getSupplementaryOutputPathsFromArguments()
368
371
sop.ModuleSourceInfoOutputPath = (*moduleSourceInfoOutput)[i];
369
372
sop.LdAddCFilePath = (*ldAddCFileOutput)[i];
370
373
sop.ModuleSummaryOutputPath = (*moduleSummaryOutput)[i];
374
+ sop.SymbolGraphOutputDir = (*symbolGraphOutput)[i];
371
375
result.push_back (sop);
372
376
}
373
377
return result;
@@ -459,6 +463,11 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
459
463
OPT_emit_module_summary, pathsFromArguments.ModuleSummaryOutputPath ,
460
464
file_types::TY_SwiftModuleSummaryFile, " " ,
461
465
defaultSupplementaryOutputPathExcludingExtension);
466
+
467
+ auto symbolGraphOutputDir = determineSupplementaryOutputFilename (
468
+ OPT_emit_symbol_graph_dir, pathsFromArguments.SymbolGraphOutputDir ,
469
+ file_types::TY_SymbolGraphOutputPath, " " ,
470
+ defaultSupplementaryOutputPathExcludingExtension);
462
471
463
472
// There is no non-path form of -emit-interface-path
464
473
auto ModuleInterfaceOutputPath =
@@ -492,6 +501,7 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
492
501
sop.ModuleSourceInfoOutputPath = moduleSourceInfoOutputPath;
493
502
sop.LdAddCFilePath = pathsFromArguments.LdAddCFilePath ;
494
503
sop.ModuleSummaryOutputPath = moduleSummaryOutputPath;
504
+ sop.SymbolGraphOutputDir = symbolGraphOutputDir;
495
505
return sop;
496
506
}
497
507
@@ -574,6 +584,7 @@ createFromTypeToPathMap(const TypeToPathMap *map) {
574
584
{file_types::TY_SwiftModuleSummaryFile, paths.ModuleSummaryOutputPath },
575
585
{file_types::TY_PrivateSwiftModuleInterfaceFile,
576
586
paths.PrivateModuleInterfaceOutputPath },
587
+ {file_types::TY_SymbolGraphOutputPath, paths.SymbolGraphOutputDir },
577
588
};
578
589
for (const std::pair<file_types::ID, std::string &> &typeAndString :
579
590
typesAndStrings) {
@@ -597,7 +608,8 @@ SupplementaryOutputPathsComputer::readSupplementaryOutputFileMap() const {
597
608
options::OPT_emit_private_module_interface_path,
598
609
options::OPT_emit_module_source_info_path,
599
610
options::OPT_emit_tbd_path,
600
- options::OPT_emit_ldadd_cfile_path)) {
611
+ options::OPT_emit_ldadd_cfile_path,
612
+ options::OPT_emit_symbol_graph_dir)) {
601
613
Diags.diagnose (SourceLoc (),
602
614
diag::error_cannot_have_supplementary_outputs,
603
615
A->getSpelling (), " -supplementary-output-file-map" );
0 commit comments