Skip to content

Commit 55c83a2

Browse files
bkhouribripeticca
authored andcommitted
build: define build path structure in BuildSystemProvider.Kind (swiftlang#8298)
There are a few places that check the BuildSystemProvider.Kind is Xcode to determine the build directory structure. With the upcoming Swift Build integration, which uses the "Xcode path" structure, we would need to update all instances to check the two build system provider kinds. Add an extension on the BuildSystemProvider.Kind that create a boolean variable `useXcodeBuildEngine`, which determines whether the build system should use the xcode path structure or not. In addition, update the code that requires a "isXcodeBuildSystemEnabled" to return this build system provider variable. This will hopefully help address swiftlang#8272 when swiftlang#8271 is merged and added `case .swiftbuild: return true` to the `useXcodeBuildEngine ` Fixes swiftlang#8272 rdar://144023142
1 parent 17f1263 commit 55c83a2

File tree

4 files changed

+13
-5
lines changed

4 files changed

+13
-5
lines changed

Sources/CoreCommands/SwiftCommandState.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ public final class SwiftCommandState {
444444
self.observabilityHandler.progress,
445445
self.observabilityHandler.prompt
446446
)
447-
let isXcodeBuildSystemEnabled = self.options.build.buildSystem == .xcode
447+
let isXcodeBuildSystemEnabled = self.options.build.buildSystem.usesXcodeBuildEngine
448448
let workspace = try Workspace(
449449
fileSystem: self.fileSystem,
450450
location: .init(
@@ -462,7 +462,7 @@ public final class SwiftCommandState {
462462
configuration: .init(
463463
skipDependenciesUpdates: options.resolver.skipDependencyUpdate,
464464
prefetchBasedOnResolvedFile: options.resolver.shouldEnableResolverPrefetching,
465-
shouldCreateMultipleTestProducts: toolWorkspaceConfiguration.wantsMultipleTestProducts || options.build.buildSystem == .xcode,
465+
shouldCreateMultipleTestProducts: toolWorkspaceConfiguration.wantsMultipleTestProducts || options.build.buildSystem.usesXcodeBuildEngine,
466466
createREPLProduct: toolWorkspaceConfiguration.wantsREPLProduct,
467467
additionalFileRules: isXcodeBuildSystemEnabled ? FileRuleDescription.xcbuildFileTypes : FileRuleDescription.swiftpmFileTypes,
468468
sharedDependenciesCacheEnabled: self.options.caching.useDependenciesCache,
@@ -800,7 +800,7 @@ public final class SwiftCommandState {
800800
workers: options.build.jobs ?? UInt32(ProcessInfo.processInfo.activeProcessorCount),
801801
sanitizers: options.build.enabledSanitizers,
802802
indexStoreMode: options.build.indexStoreMode.buildParameter,
803-
isXcodeBuildSystemEnabled: options.build.buildSystem == .xcode,
803+
isXcodeBuildSystemEnabled: options.build.buildSystem.usesXcodeBuildEngine,
804804
prepareForIndexing: prepareForIndexingMode,
805805
debuggingParameters: .init(
806806
debugInfoFormat: options.build.debugInfoFormat.buildParameter,

Sources/SPMBuildCore/BuildSystem/BuildSystem.swift

+8
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,14 @@ public struct BuildSystemProvider {
168168
}
169169
}
170170

171+
extension BuildSystemProvider.Kind {
172+
public var usesXcodeBuildEngine: Bool {
173+
switch self {
174+
case .native: return false
175+
case .xcode: return true
176+
}
177+
}
178+
}
171179
private enum Errors: Swift.Error {
172180
case buildSystemProviderNotRegistered(kind: BuildSystemProvider.Kind)
173181
}

Sources/SPMBuildCore/Triple+Extensions.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ extension Triple {
2727
// Use "apple" as the subdirectory because in theory Xcode build system
2828
// can be used to build for any Apple platform and it has its own
2929
// conventions for build subpaths based on platforms.
30-
buildSystem == .xcode ? "apple" : self.platformBuildPathComponent
30+
buildSystem.usesXcodeBuildEngine ? "apple" : self.platformBuildPathComponent
3131
}
3232
}

Sources/swift-bootstrap/main.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ struct SwiftBootstrapBuildTool: AsyncParsableCommand {
290290
triple: self.hostToolchain.targetTriple,
291291
flags: buildFlags,
292292
architectures: architectures,
293-
isXcodeBuildSystemEnabled: buildSystem == .xcode,
293+
isXcodeBuildSystemEnabled: buildSystem.usesXcodeBuildEngine,
294294
driverParameters: .init(
295295
explicitTargetDependencyImportCheckingMode: explicitTargetDependencyImportCheck == .error ? .error : .none,
296296
useIntegratedSwiftDriver: useIntegratedSwiftDriver,

0 commit comments

Comments
 (0)