@@ -341,11 +341,14 @@ SupplementaryOutputPathsComputer::getSupplementaryOutputPathsFromArguments()
341341 options::OPT_emit_ldadd_cfile_path);
342342 auto moduleSummaryOutput = getSupplementaryFilenamesFromArguments (
343343 options::OPT_emit_module_summary_path);
344+ auto symbolGraphOutput = getSupplementaryFilenamesFromArguments (
345+ options::OPT_emit_symbol_graph_dir);
344346 if (!objCHeaderOutput || !moduleOutput || !moduleDocOutput ||
345347 !dependenciesFile || !referenceDependenciesFile ||
346348 !serializedDiagnostics || !fixItsOutput || !loadedModuleTrace || !TBD ||
347349 !moduleInterfaceOutput || !privateModuleInterfaceOutput ||
348- !moduleSourceInfoOutput || !ldAddCFileOutput || !moduleSummaryOutput) {
350+ !moduleSourceInfoOutput || !ldAddCFileOutput || !moduleSummaryOutput ||
351+ !symbolGraphOutput) {
349352 return None;
350353 }
351354 std::vector<SupplementaryOutputPaths> result;
@@ -368,6 +371,7 @@ SupplementaryOutputPathsComputer::getSupplementaryOutputPathsFromArguments()
368371 sop.ModuleSourceInfoOutputPath = (*moduleSourceInfoOutput)[i];
369372 sop.LdAddCFilePath = (*ldAddCFileOutput)[i];
370373 sop.ModuleSummaryOutputPath = (*moduleSummaryOutput)[i];
374+ sop.SymbolGraphOutputDir = (*symbolGraphOutput)[i];
371375 result.push_back (sop);
372376 }
373377 return result;
@@ -459,6 +463,11 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
459463 OPT_emit_module_summary, pathsFromArguments.ModuleSummaryOutputPath ,
460464 file_types::TY_SwiftModuleSummaryFile, " " ,
461465 defaultSupplementaryOutputPathExcludingExtension);
466+
467+ auto symbolGraphOutputDir = determineSupplementaryOutputFilename (
468+ OPT_emit_symbol_graph_dir, pathsFromArguments.SymbolGraphOutputDir ,
469+ file_types::TY_SymbolGraphOutputPath, " " ,
470+ defaultSupplementaryOutputPathExcludingExtension);
462471
463472 // There is no non-path form of -emit-interface-path
464473 auto ModuleInterfaceOutputPath =
@@ -492,6 +501,7 @@ SupplementaryOutputPathsComputer::computeOutputPathsForOneInput(
492501 sop.ModuleSourceInfoOutputPath = moduleSourceInfoOutputPath;
493502 sop.LdAddCFilePath = pathsFromArguments.LdAddCFilePath ;
494503 sop.ModuleSummaryOutputPath = moduleSummaryOutputPath;
504+ sop.SymbolGraphOutputDir = symbolGraphOutputDir;
495505 return sop;
496506}
497507
@@ -574,6 +584,7 @@ createFromTypeToPathMap(const TypeToPathMap *map) {
574584 {file_types::TY_SwiftModuleSummaryFile, paths.ModuleSummaryOutputPath },
575585 {file_types::TY_PrivateSwiftModuleInterfaceFile,
576586 paths.PrivateModuleInterfaceOutputPath },
587+ {file_types::TY_SymbolGraphOutputPath, paths.SymbolGraphOutputDir },
577588 };
578589 for (const std::pair<file_types::ID, std::string &> &typeAndString :
579590 typesAndStrings) {
@@ -597,7 +608,8 @@ SupplementaryOutputPathsComputer::readSupplementaryOutputFileMap() const {
597608 options::OPT_emit_private_module_interface_path,
598609 options::OPT_emit_module_source_info_path,
599610 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)) {
601613 Diags.diagnose (SourceLoc (),
602614 diag::error_cannot_have_supplementary_outputs,
603615 A->getSpelling (), " -supplementary-output-file-map" );
0 commit comments