@@ -797,12 +797,12 @@ public final class Settings: PlatformBuildContext, Sendable {
797797 /// The information about the project model components from which these settings were constructed.
798798 public let constructionComponents : ConstructionComponents
799799
800- package convenience init ( workspaceContext: WorkspaceContext , buildRequestContext: BuildRequestContext , parameters: BuildParameters , project: Project , target: Target ? = nil , purpose: SettingsPurpose = . build, provisioningTaskInputs: ProvisioningTaskInputs ? = nil , impartedBuildProperties: [ ImpartedBuildProperties ] ? = nil , artifactBundleInfo: [ ArtifactBundleInfo ] ? = nil , includeExports: Bool = true , sdkRegistry: ( any SDKRegistryLookup ) ? = nil ) {
801- self . init ( workspaceContext: workspaceContext, buildRequestContext: buildRequestContext, parameters: parameters, settingsContext: SettingsContext ( purpose, project: project, target: target) , purpose: purpose, provisioningTaskInputs: provisioningTaskInputs, impartedBuildProperties: impartedBuildProperties, artifactBundleInfo: artifactBundleInfo, includeExports: includeExports, sdkRegistry: sdkRegistry)
800+ package convenience init ( workspaceContext: WorkspaceContext , buildRequestContext: BuildRequestContext , parameters: BuildParameters , project: Project , target: Target ? = nil , purpose: SettingsPurpose = . build, provisioningTaskInputs: ProvisioningTaskInputs ? = nil , impartedBuildProperties: [ ImpartedBuildProperties ] ? = nil , artifactBundleInfo: [ ArtifactBundleInfo ] ? = nil , ipiClangModuleNames : [ String ] ? = nil , includeExports: Bool = true , sdkRegistry: ( any SDKRegistryLookup ) ? = nil ) {
801+ self . init ( workspaceContext: workspaceContext, buildRequestContext: buildRequestContext, parameters: parameters, settingsContext: SettingsContext ( purpose, project: project, target: target) , purpose: purpose, provisioningTaskInputs: provisioningTaskInputs, impartedBuildProperties: impartedBuildProperties, artifactBundleInfo: artifactBundleInfo, ipiClangModuleNames : ipiClangModuleNames , includeExports: includeExports, sdkRegistry: sdkRegistry)
802802 }
803803
804804 /// Construct the settings for a project and optionally a target.
805- package init ( workspaceContext: WorkspaceContext , buildRequestContext: BuildRequestContext , parameters: BuildParameters , settingsContext: SettingsContext , purpose: SettingsPurpose = . build, provisioningTaskInputs: ProvisioningTaskInputs ? = nil , impartedBuildProperties: [ ImpartedBuildProperties ] ? = nil , artifactBundleInfo: [ ArtifactBundleInfo ] ? = nil , includeExports: Bool = true , sdkRegistry: ( any SDKRegistryLookup ) ? = nil ) {
805+ package init ( workspaceContext: WorkspaceContext , buildRequestContext: BuildRequestContext , parameters: BuildParameters , settingsContext: SettingsContext , purpose: SettingsPurpose = . build, provisioningTaskInputs: ProvisioningTaskInputs ? = nil , impartedBuildProperties: [ ImpartedBuildProperties ] ? = nil , artifactBundleInfo: [ ArtifactBundleInfo ] ? = nil , ipiClangModuleNames : [ String ] ? = nil , includeExports: Bool = true , sdkRegistry: ( any SDKRegistryLookup ) ? = nil ) {
806806 if let target = settingsContext. target {
807807 precondition ( workspaceContext. workspace. project ( for: target) === settingsContext. project)
808808 }
@@ -811,7 +811,7 @@ public final class Settings: PlatformBuildContext, Sendable {
811811 self . settingsContext = settingsContext
812812
813813 // Construct the settings table.
814- let builder = SettingsBuilder ( workspaceContext, buildRequestContext, parameters, settingsContext, provisioningTaskInputs, impartedBuildProperties, artifactBundleInfo, includeExports: includeExports, sdkRegistry)
814+ let builder = SettingsBuilder ( workspaceContext, buildRequestContext, parameters, settingsContext, provisioningTaskInputs, impartedBuildProperties, artifactBundleInfo, ipiClangModuleNames , includeExports: includeExports, sdkRegistry)
815815 let ( boundProperties, boundDeploymentTarget) = MacroNamespace . withExpressionInterningEnabled { builder. construct ( ) }
816816
817817 // Extract the constructed data.
@@ -1280,6 +1280,7 @@ private class SettingsBuilder: ProjectMatchLookup {
12801280 let provisioningTaskInputs : ProvisioningTaskInputs ?
12811281 let impartedBuildProperties : [ ImpartedBuildProperties ] ?
12821282 let artifactBundleInfo : [ ArtifactBundleInfo ] ?
1283+ let ipiClangModuleNames : [ String ] ?
12831284
12841285 /// Whether this builder was constructed specifically for binding properties (versus for general table construction).
12851286 let forBindingProperties : Bool
@@ -1386,7 +1387,7 @@ private class SettingsBuilder: ProjectMatchLookup {
13861387 )
13871388 }
13881389
1389- init ( _ workspaceContext: WorkspaceContext , _ buildRequestContext: BuildRequestContext , _ parameters: BuildParameters , _ settingsContext: SettingsContext , _ provisioningTaskInputs: ProvisioningTaskInputs ? = nil , _ impartedBuildProperties: [ ImpartedBuildProperties ] ? = nil , _ artifactBundleInfo: [ ArtifactBundleInfo ] ? = nil , includeExports: Bool = true , forBindingProperties: Bool = false , _ sdkRegistry: ( any SDKRegistryLookup ) ? ) {
1390+ init ( _ workspaceContext: WorkspaceContext , _ buildRequestContext: BuildRequestContext , _ parameters: BuildParameters , _ settingsContext: SettingsContext , _ provisioningTaskInputs: ProvisioningTaskInputs ? = nil , _ impartedBuildProperties: [ ImpartedBuildProperties ] ? = nil , _ artifactBundleInfo: [ ArtifactBundleInfo ] ? = nil , _ ipiClangModuleNames : [ String ] ? = nil , includeExports: Bool = true , forBindingProperties: Bool = false , _ sdkRegistry: ( any SDKRegistryLookup ) ? ) {
13901391 self . workspaceContext = workspaceContext
13911392 self . buildRequestContext = buildRequestContext
13921393 self . sdkRegistry = sdkRegistry ?? workspaceContext. sdkRegistry
@@ -1395,6 +1396,7 @@ private class SettingsBuilder: ProjectMatchLookup {
13951396 self . provisioningTaskInputs = provisioningTaskInputs
13961397 self . impartedBuildProperties = impartedBuildProperties
13971398 self . artifactBundleInfo = artifactBundleInfo
1399+ self . ipiClangModuleNames = ipiClangModuleNames
13981400 // FIXME: We should almost certainly not be creating a namespace here, but instead should use an already bound one.
13991401 self . userNamespace = MacroNamespace ( parent: workspaceContext. workspace. userNamespace, debugDescription: " settings " )
14001402 self . _table = MacroValueAssignmentTable ( namespace: userNamespace)
@@ -1677,6 +1679,12 @@ private class SettingsBuilder: ProjectMatchLookup {
16771679 }
16781680 }
16791681
1682+ if let ipiClangModuleNames, !ipiClangModuleNames. isEmpty {
1683+ pushTable ( . exported) { table in
1684+ table. push ( BuiltinMacros . SWIFT_IPI_CLANG_MODULE_NAMES, literal: ipiClangModuleNames)
1685+ }
1686+ }
1687+
16801688 if scope. evaluate ( BuiltinMacros . ENABLE_PROJECT_OVERRIDE_SPECS) , let projectOverrideSpec = core. specRegistry. findSpecs ( ProjectOverridesSpec . self, domain: " " ) . filter ( { spec in
16811689 matchesAnyProjectIdentities ( scope: scope, projectIdentities: [ spec. projectName] )
16821690 } ) . only {
0 commit comments