Skip to content

Commit 3f949d8

Browse files
authored
Sever the package dependency if using SwiftBuild Framework (#8434)
The SwiftBuild project has a dependency on Swift Driver, which has a dependency on Swift Tools Support Core (STSC). Swift Package Manager (SwiftPM) executable targets also have a dependency on STSC. Sever SwiftPM package depenedency on STSC if the `SWIFTPM_SWBUILD_FRAMEWORK` environment variable is set so we can indirectly pull the STCS dependency on the dynamic library that will be pulled in via SwiftDriver.
1 parent fb96b98 commit 3f949d8

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

Package.swift

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,26 @@ if ProcessInfo.processInfo.environment["SWIFTCI_INSTALL_RPATH_OS"] == "android"
8787
*/
8888
let autoProducts = [swiftPMProduct, swiftPMDataModelProduct]
8989

90+
private func useSwiftBuildPackageDependency() -> Bool {
91+
return (ProcessInfo.processInfo.environment["SWIFTPM_SWBUILD_FRAMEWORK"] == nil &&
92+
ProcessInfo.processInfo.environment["SWIFTPM_NO_SWBUILD_DEPENDENCY"] == nil)
93+
}
94+
95+
let swiftDriverDep: [Target.Dependency]
96+
let swiftToolsCoreSupportAutoDep: [Target.Dependency]
97+
let swiftToolsCoreSupportTestDep: [Target.Dependency]
98+
99+
if useSwiftBuildPackageDependency() {
100+
swiftDriverDep = [
101+
.product(name: "SwiftDriver", package: "swift-driver")
102+
]
103+
swiftToolsCoreSupportAutoDep = [
104+
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core")
105+
]
106+
} else {
107+
swiftDriverDep = []
108+
swiftToolsCoreSupportAutoDep = []
109+
}
90110
let package = Package(
91111
name: "SwiftPM",
92112
platforms: [
@@ -231,9 +251,8 @@ let package = Package(
231251
.product(name: "SwiftToolchainCSQLite", package: "swift-toolchain-sqlite", condition: .when(platforms: [.windows, .android])),
232252
.product(name: "DequeModule", package: "swift-collections"),
233253
.product(name: "OrderedCollections", package: "swift-collections"),
234-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
235254
.product(name: "SystemPackage", package: "swift-system"),
236-
],
255+
] + swiftToolsCoreSupportAutoDep,
237256
exclude: ["CMakeLists.txt", "Vendor/README.md"],
238257
swiftSettings: [
239258
.enableExperimentalFeature("StrictConcurrency"),
@@ -440,10 +459,9 @@ let package = Package(
440459
"PackageGraph",
441460
"SPMBuildCore",
442461
"SPMLLBuild",
443-
.product(name: "SwiftDriver", package: "swift-driver"),
444462
.product(name: "OrderedCollections", package: "swift-collections"),
445463
"DriverSupport",
446-
],
464+
] + swiftDriverDep,
447465
exclude: ["CMakeLists.txt"],
448466
swiftSettings: [
449467
.unsafeFlags(["-static"]),
@@ -454,8 +472,7 @@ let package = Package(
454472
dependencies: [
455473
"Basics",
456474
"PackageModel",
457-
.product(name: "SwiftDriver", package: "swift-driver"),
458-
],
475+
] + swiftDriverDep,
459476
exclude: ["CMakeLists.txt"],
460477
swiftSettings: [
461478
.unsafeFlags(["-static"]),
@@ -1050,8 +1067,7 @@ if ProcessInfo.processInfo.environment["ENABLE_APPLE_PRODUCT_TYPES"] == "1" {
10501067
}
10511068
}
10521069

1053-
if ProcessInfo.processInfo.environment["SWIFTPM_SWBUILD_FRAMEWORK"] == nil &&
1054-
ProcessInfo.processInfo.environment["SWIFTPM_NO_SWBUILD_DEPENDENCY"] == nil {
1070+
if useSwiftBuildPackageDependency() {
10551071

10561072
let swiftbuildsupport: Target = package.targets.first(where: { $0.name == "SwiftBuildSupport" } )!
10571073
swiftbuildsupport.dependencies += [

0 commit comments

Comments
 (0)