Skip to content

Commit 0882a3c

Browse files
committed
Packaging: Support using Tools Support Core dylib
When Swift Package Manager used the SwiftBuild framework, it eventually caused duplicate Swift Tools Support Core (TSC) duplicate symbols which come from Swift Driver and Swift PM. Swift PM depends on SwiftBuild, which depends on SwiftDriver, which statically links TSC. Swift PM also has a statically linked dependency on TSC. The proper solution is to have SwiftDriver and SwiftPM both depend on the TSC dynamic library when SwiftPM depends on the SwiftBuild framework, which is determined by setting the SWIFTPM_SWBUILD_FRAMEWORK environment variable. rdar://144547608
1 parent ff07a06 commit 0882a3c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

Package.swift

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ if let deploymentTarget = ProcessInfo.processInfo.environment["SWIFTPM_MACOS_DEP
1010
macOSPlatform = .macOS(.v12)
1111
}
1212

13+
let swiftToolsSupportCoreLibName = (ProcessInfo.processInfo.environment["SWIFTPM_SWBUILD_FRAMEWORK"] == nil) ? "SwiftToolsSupport-auto": "SwiftToolsSupport"
14+
1315
let package = Package(
1416
name: "swift-driver",
1517
platforms: [
@@ -51,7 +53,7 @@ let package = Package(
5153
name: "SwiftDriver",
5254
dependencies: [
5355
"SwiftOptions",
54-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
56+
.product(name: swiftToolsSupportCoreLibName, package: "swift-tools-support-core"),
5557
"CSwiftScan",
5658
],
5759
exclude: ["CMakeLists.txt"]),
@@ -61,7 +63,7 @@ let package = Package(
6163
name: "SwiftDriverExecution",
6264
dependencies: [
6365
"SwiftDriver",
64-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core")
66+
.product(name: swiftToolsSupportCoreLibName, package: "swift-tools-support-core")
6567
],
6668
exclude: ["CMakeLists.txt"]),
6769

@@ -76,7 +78,7 @@ let package = Package(
7678
dependencies: [
7779
"IncrementalTestFramework",
7880
"TestUtilities",
79-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
81+
.product(name: swiftToolsSupportCoreLibName, package: "swift-tools-support-core"),
8082
]),
8183

8284
.target(
@@ -101,7 +103,7 @@ let package = Package(
101103
.target(
102104
name: "SwiftOptions",
103105
dependencies: [
104-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
106+
.product(name: swiftToolsSupportCoreLibName, package: "swift-tools-support-core"),
105107
],
106108
exclude: ["CMakeLists.txt"]),
107109
.testTarget(
@@ -120,7 +122,7 @@ let package = Package(
120122
dependencies: [
121123
"SwiftOptions",
122124
.product(name: "ArgumentParser", package: "swift-argument-parser"),
123-
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
125+
.product(name: swiftToolsSupportCoreLibName, package: "swift-tools-support-core"),
124126
],
125127
exclude: ["CMakeLists.txt"]),
126128

0 commit comments

Comments
 (0)