@@ -351,16 +351,26 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
351
351
352
352
try await writePIF ( buildParameters: buildParameters)
353
353
354
+ var symbolGraphOptions : BuildOutput . SymbolGraphOptions ?
355
+ for output in buildOutputs {
356
+ switch output {
357
+ case . symbolGraph( let options) :
358
+ symbolGraphOptions = options
359
+ default :
360
+ continue
361
+ }
362
+ }
363
+
354
364
return try await startSWBuildOperation (
355
365
pifTargetName: subset. pifTargetName,
356
- genSymbolGraph : buildOutputs . contains ( . symbolGraph ) ,
366
+ symbolGraphOptions : symbolGraphOptions ,
357
367
generateReplArguments: buildOutputs. contains ( . replArguments) ,
358
368
)
359
369
}
360
370
361
371
private func startSWBuildOperation(
362
372
pifTargetName: String ,
363
- genSymbolGraph : Bool ,
373
+ symbolGraphOptions : BuildOutput . SymbolGraphOptions ? ,
364
374
generateReplArguments: Bool
365
375
) async throws -> BuildResult {
366
376
let buildStartTime = ContinuousClock . Instant. now
@@ -413,7 +423,7 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
413
423
throw error
414
424
}
415
425
416
- let request = try await self . makeBuildRequest ( session: session, configuredTargets: configuredTargets, derivedDataPath: derivedDataPath, genSymbolGraph : genSymbolGraph )
426
+ let request = try await self . makeBuildRequest ( session: session, configuredTargets: configuredTargets, derivedDataPath: derivedDataPath, symbolGraphOptions : symbolGraphOptions )
417
427
418
428
struct BuildState {
419
429
private var targetsByID : [ Int : SwiftBuild . SwiftBuildMessage . TargetStartedInfo ] = [ : ]
@@ -631,7 +641,7 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
631
641
)
632
642
}
633
643
634
- private func makeBuildParameters( session: SWBBuildServiceSession , genSymbolGraph : Bool ) async throws -> SwiftBuild . SWBBuildParameters {
644
+ private func makeBuildParameters( session: SWBBuildServiceSession , symbolGraphOptions : BuildOutput . SymbolGraphOptions ? ) async throws -> SwiftBuild . SWBBuildParameters {
635
645
// Generate the run destination parameters.
636
646
let runDestination = makeRunDestination ( )
637
647
@@ -658,9 +668,39 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
658
668
659
669
// FIXME: workaround for old Xcode installations such as what is in CI
660
670
settings [ " LM_SKIP_METADATA_EXTRACTION " ] = " YES "
661
- if genSymbolGraph {
671
+ if let symbolGraphOptions {
662
672
settings [ " RUN_SYMBOL_GRAPH_EXTRACT " ] = " YES "
663
- // TODO set additional symbol graph options from the build output here, such as "include-spi-symbols"
673
+
674
+ if symbolGraphOptions. prettyPrint {
675
+ settings [ " DOCC_PRETTY_PRINT " ] = " YES "
676
+ }
677
+
678
+ if symbolGraphOptions. emitExtensionBlocks {
679
+ settings [ " DOCC_EXTRACT_EXTENSION_SYMBOLS " ] = " YES "
680
+ }
681
+
682
+ if !symbolGraphOptions. includeSynthesized {
683
+ settings [ " DOCC_SKIP_SYNTHESIZED_MEMBERS " ] = " YES "
684
+ }
685
+
686
+ if symbolGraphOptions. includeSPI {
687
+ settings [ " DOCC_EXTRACT_SPI_DOCUMENTATION " ] = " YES "
688
+ }
689
+
690
+ switch symbolGraphOptions. minimumAccessLevel {
691
+ case . private:
692
+ settings [ " DOCC_MINIMUM_ACCESS_LEVEL " ] = " private "
693
+ case . fileprivate:
694
+ settings [ " DOCC_MINIMUM_ACCESS_LEVEL " ] = " fileprivate "
695
+ case . internal:
696
+ settings [ " DOCC_MINIMUM_ACCESS_LEVEL " ] = " internal "
697
+ case . package :
698
+ settings [ " DOCC_MINIMUM_ACCESS_LEVEL " ] = " package "
699
+ case . public:
700
+ settings [ " DOCC_MINIMUM_ACCESS_LEVEL " ] = " public "
701
+ case . open:
702
+ settings [ " DOCC_MINIMUM_ACCESS_LEVEL " ] = " open "
703
+ }
664
704
}
665
705
666
706
let normalizedTriple = Triple ( buildParameters. triple. triple, normalizing: true )
@@ -741,9 +781,9 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
741
781
return params
742
782
}
743
783
744
- public func makeBuildRequest( session: SWBBuildServiceSession , configuredTargets: [ SWBTargetGUID ] , derivedDataPath: Basics . AbsolutePath , genSymbolGraph : Bool ) async throws -> SWBBuildRequest {
784
+ public func makeBuildRequest( session: SWBBuildServiceSession , configuredTargets: [ SWBTargetGUID ] , derivedDataPath: Basics . AbsolutePath , symbolGraphOptions : BuildOutput . SymbolGraphOptions ? ) async throws -> SWBBuildRequest {
745
785
var request = SWBBuildRequest ( )
746
- request. parameters = try await makeBuildParameters ( session: session, genSymbolGraph : genSymbolGraph )
786
+ request. parameters = try await makeBuildParameters ( session: session, symbolGraphOptions : symbolGraphOptions )
747
787
request. configuredTargets = configuredTargets. map { SWBConfiguredTarget ( guid: $0. rawValue, parameters: request. parameters) }
748
788
request. useParallelTargets = true
749
789
request. useImplicitDependencies = false
0 commit comments