diff --git a/Sources/CoreCommands/SwiftCommandState.swift b/Sources/CoreCommands/SwiftCommandState.swift index b64d2736068..03b01b4676e 100644 --- a/Sources/CoreCommands/SwiftCommandState.swift +++ b/Sources/CoreCommands/SwiftCommandState.swift @@ -441,7 +441,7 @@ public final class SwiftCommandState { self.observabilityHandler.progress, self.observabilityHandler.prompt ) - let isXcodeBuildSystemEnabled = self.options.build.buildSystem == .xcode + let isXcodeBuildSystemEnabled = self.options.build.buildSystem.usesXcodeBuildEngine let workspace = try Workspace( fileSystem: self.fileSystem, location: .init( @@ -459,7 +459,7 @@ public final class SwiftCommandState { configuration: .init( skipDependenciesUpdates: options.resolver.skipDependencyUpdate, prefetchBasedOnResolvedFile: options.resolver.shouldEnableResolverPrefetching, - shouldCreateMultipleTestProducts: toolWorkspaceConfiguration.wantsMultipleTestProducts || options.build.buildSystem == .xcode, + shouldCreateMultipleTestProducts: toolWorkspaceConfiguration.wantsMultipleTestProducts || options.build.buildSystem.usesXcodeBuildEngine, createREPLProduct: toolWorkspaceConfiguration.wantsREPLProduct, additionalFileRules: isXcodeBuildSystemEnabled ? FileRuleDescription.xcbuildFileTypes : FileRuleDescription.swiftpmFileTypes, sharedDependenciesCacheEnabled: self.options.caching.useDependenciesCache, @@ -795,7 +795,7 @@ public final class SwiftCommandState { workers: options.build.jobs ?? UInt32(ProcessInfo.processInfo.activeProcessorCount), sanitizers: options.build.enabledSanitizers, indexStoreMode: options.build.indexStoreMode.buildParameter, - isXcodeBuildSystemEnabled: options.build.buildSystem == .xcode, + isXcodeBuildSystemEnabled: options.build.buildSystem.usesXcodeBuildEngine, prepareForIndexing: prepareForIndexingMode, debuggingParameters: .init( debugInfoFormat: options.build.debugInfoFormat.buildParameter, diff --git a/Sources/SPMBuildCore/BuildSystem/BuildSystem.swift b/Sources/SPMBuildCore/BuildSystem/BuildSystem.swift index 828be7a391b..ab49a69e853 100644 --- a/Sources/SPMBuildCore/BuildSystem/BuildSystem.swift +++ b/Sources/SPMBuildCore/BuildSystem/BuildSystem.swift @@ -168,6 +168,14 @@ public struct BuildSystemProvider { } } +extension BuildSystemProvider.Kind { + public var usesXcodeBuildEngine: Bool { + switch self { + case .native: return false + case .xcode: return true + } + } +} private enum Errors: Swift.Error { case buildSystemProviderNotRegistered(kind: BuildSystemProvider.Kind) } diff --git a/Sources/SPMBuildCore/Triple+Extensions.swift b/Sources/SPMBuildCore/Triple+Extensions.swift index bf9a1216c3d..e93ae59c340 100644 --- a/Sources/SPMBuildCore/Triple+Extensions.swift +++ b/Sources/SPMBuildCore/Triple+Extensions.swift @@ -27,6 +27,6 @@ extension Triple { // Use "apple" as the subdirectory because in theory Xcode build system // can be used to build for any Apple platform and it has its own // conventions for build subpaths based on platforms. - buildSystem == .xcode ? "apple" : self.platformBuildPathComponent + buildSystem.usesXcodeBuildEngine ? "apple" : self.platformBuildPathComponent } } diff --git a/Sources/swift-bootstrap/main.swift b/Sources/swift-bootstrap/main.swift index 9a2bd642723..b4313441fef 100644 --- a/Sources/swift-bootstrap/main.swift +++ b/Sources/swift-bootstrap/main.swift @@ -289,7 +289,7 @@ struct SwiftBootstrapBuildTool: AsyncParsableCommand { triple: self.hostToolchain.targetTriple, flags: buildFlags, architectures: architectures, - isXcodeBuildSystemEnabled: buildSystem == .xcode, + isXcodeBuildSystemEnabled: buildSystem.usesXcodeBuildEngine, driverParameters: .init( explicitTargetDependencyImportCheckingMode: explicitTargetDependencyImportCheck == .error ? .error : .none, useIntegratedSwiftDriver: useIntegratedSwiftDriver,