Skip to content

Commit 5287062

Browse files
authored
Exclude XCBuildSupport when building with CMake (#7358)
XCBuildSupport is not available on non-Darwin platforms, especially Windows, where we have to have full CMake support at the moment. Maintaining XCBuildSupport in these unsupported configurations adds unnecessary overhead, especially in cases like #7258, where we have to add new dependencies only when `XCBuildSupport` is available. We should exclude from CMake builds to reduce this maintenance overhead.
1 parent 5bafc5a commit 5287062

File tree

10 files changed

+45
-31
lines changed

10 files changed

+45
-31
lines changed

Sources/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,3 @@ add_subdirectory(swift-package)
3737
add_subdirectory(swift-run)
3838
add_subdirectory(swift-test)
3939
add_subdirectory(Workspace)
40-
add_subdirectory(XCBuildSupport)

Sources/Commands/CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ target_link_libraries(Commands PUBLIC
5959
SourceControl
6060
TSCBasic
6161
TSCUtility
62-
Workspace
63-
XCBuildSupport)
62+
Workspace)
63+
64+
target_compile_definitions(Commands
65+
PRIVATE DISABLE_XCBUILD_SUPPORT)
66+
6467
target_link_libraries(Commands PRIVATE
6568
DriverSupport
6669
$<$<NOT:$<PLATFORM_ID:Darwin>>:FoundationXML>)

Sources/Commands/PackageTools/DumpCommands.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ import Basics
1515
import CoreCommands
1616
import Foundation
1717
import PackageModel
18+
19+
#if !DISABLE_XCBUILD_SUPPORT
1820
import XCBuildSupport
21+
#endif
1922

2023
struct DumpSymbolGraph: SwiftCommand {
2124
static let configuration = CommandConfiguration(
@@ -136,6 +139,7 @@ struct DumpPIF: SwiftCommand {
136139
var preserveStructure: Bool = false
137140

138141
func run(_ swiftTool: SwiftTool) throws {
142+
#if !DISABLE_XCBUILD_SUPPORT
139143
let graph = try swiftTool.loadPackageGraph()
140144
let pif = try PIFBuilder.generatePIF(
141145
buildParameters: swiftTool.productsBuildParameters,
@@ -144,6 +148,9 @@ struct DumpPIF: SwiftCommand {
144148
observabilityScope: swiftTool.observabilityScope,
145149
preservePIFModelStructure: preserveStructure)
146150
print(pif)
151+
#else
152+
fatalError("This subcommand is not available on the current platform")
153+
#endif
147154
}
148155

149156
var toolWorkspaceConfiguration: ToolWorkspaceConfiguration {

Sources/Commands/PackageTools/SwiftPackageTool.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ import PackageModel
2020
import SourceControl
2121
import SPMBuildCore
2222
import Workspace
23+
24+
#if !DISABLE_XCBUILD_SUPPORT
2325
import XCBuildSupport
26+
#endif
2427

2528
import enum TSCUtility.Diagnostics
2629

Sources/Commands/SwiftBuildTool.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ import Build
1616
import CoreCommands
1717
import PackageGraph
1818
import SPMBuildCore
19+
20+
#if !DISABLE_XCBUILD_SUPPORT
1921
import XCBuildSupport
22+
#endif
2023

2124
import class TSCBasic.Process
2225
import var TSCBasic.stdoutStream

Sources/CoreCommands/BuildSystemSupport.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212

1313
import Build
1414
import SPMBuildCore
15+
16+
#if !DISABLE_XCBUILD_SUPPORT
1517
import XCBuildSupport
18+
#endif
1619

1720
import class Basics.ObservabilityScope
1821
import struct PackageGraph.PackageGraph
@@ -60,6 +63,7 @@ private struct NativeBuildSystemFactory: BuildSystemFactory {
6063
}
6164
}
6265

66+
#if !DISABLE_XCBUILD_SUPPORT
6367
private struct XcodeBuildSystemFactory: BuildSystemFactory {
6468
let swiftTool: SwiftTool
6569

@@ -87,12 +91,19 @@ private struct XcodeBuildSystemFactory: BuildSystemFactory {
8791
)
8892
}
8993
}
94+
#endif
9095

9196
extension SwiftTool {
9297
public var defaultBuildSystemProvider: BuildSystemProvider {
98+
#if !DISABLE_XCBUILD_SUPPORT
9399
.init(providers: [
94100
.native: NativeBuildSystemFactory(swiftTool: self),
95101
.xcode: XcodeBuildSystemFactory(swiftTool: self)
96102
])
103+
#else
104+
.init(providers: [
105+
.native: NativeBuildSystemFactory(swiftTool: self),
106+
])
107+
#endif
97108
}
98109
}

Sources/CoreCommands/CMakeLists.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ target_link_libraries(CoreCommands PUBLIC
1818
PackageGraph
1919
TSCBasic
2020
TSCUtility
21-
Workspace
22-
XCBuildSupport)
21+
Workspace)
22+
23+
target_compile_definitions(CoreCommands
24+
PRIVATE DISABLE_XCBUILD_SUPPORT)
25+
2326
target_link_libraries(CoreCommands PRIVATE
2427
DriverSupport
2528
$<$<NOT:$<PLATFORM_ID:Darwin>>:FoundationXML>)

Sources/XCBuildSupport/CMakeLists.txt

Lines changed: 0 additions & 24 deletions
This file was deleted.

Sources/swift-bootstrap/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ target_link_libraries(swift-bootstrap PRIVATE
1616
PackageLoading
1717
PackageModel
1818
TSCBasic
19-
TSCUtility
20-
XCBuildSupport)
19+
TSCUtility)
20+
21+
target_compile_definitions(swift-bootstrap
22+
PRIVATE DISABLE_XCBUILD_SUPPORT)

Sources/swift-bootstrap/main.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ import PackageGraph
2020
import PackageLoading
2121
import PackageModel
2222
import SPMBuildCore
23+
24+
#if !DISABLE_XCBUILD_SUPPORT
2325
import XCBuildSupport
26+
#endif
2427

2528
import struct TSCBasic.KeyedPair
2629
import func TSCBasic.topologicalSort
@@ -322,6 +325,7 @@ struct SwiftBootstrapBuildTool: ParsableCommand {
322325
observabilityScope: self.observabilityScope
323326
)
324327
case .xcode:
328+
#if !DISABLE_XCBUILD_SUPPORT
325329
return try XcodeBuildSystem(
326330
buildParameters: buildParameters,
327331
packageGraphLoader: packageGraphLoader,
@@ -330,6 +334,9 @@ struct SwiftBootstrapBuildTool: ParsableCommand {
330334
fileSystem: self.fileSystem,
331335
observabilityScope: self.observabilityScope
332336
)
337+
#else
338+
fatalError("SwiftPM was built without XCBuild support")
339+
#endif
333340
}
334341
}
335342

0 commit comments

Comments
 (0)