Skip to content

Commit 14c3b31

Browse files
authored
Update Package.swift to match the template in swiftpm branch (#11223)
1 parent 71025df commit 14c3b31

File tree

1 file changed

+57
-34
lines changed

1 file changed

+57
-34
lines changed

Package.swift

Lines changed: 57 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,27 @@ import PackageDescription
2222
let debug_suffix = "_debug"
2323
let dependencies_suffix = "_with_dependencies"
2424

25-
let products = [
25+
func deliverables(_ dict: [String: [String: Any]]) -> [String: [String: Any]] {
26+
dict
27+
.reduce(into: [String: [String: Any]]()) { result, pair in
28+
let (key, value) = pair
29+
result[key] = value
30+
result[key + debug_suffix] = value
31+
}
32+
.reduce(into: [String: [String: Any]]()) { result, pair in
33+
let (key, value) = pair
34+
var newValue = value
35+
if key.hasSuffix(debug_suffix) {
36+
for (k, v) in value where k.hasSuffix(debug_suffix) {
37+
let trimmed = String(k.dropLast(debug_suffix.count))
38+
newValue[trimmed] = v
39+
}
40+
}
41+
result[key] = newValue.filter { !$0.key.hasSuffix(debug_suffix) }
42+
}
43+
}
44+
45+
let products = deliverables([
2646
"backend_coreml": [
2747
"frameworks": [
2848
"Accelerate",
@@ -60,48 +80,51 @@ let products = [
6080
],
6181
"kernels_portable": [:],
6282
"kernels_quantized": [:],
63-
].reduce(into: [String: [String: Any]]()) {
64-
$0[$1.key] = $1.value
65-
$0[$1.key + debug_suffix] = $1.value
83+
])
84+
85+
let targets = deliverables([
86+
"threadpool": [:],
87+
])
88+
89+
let packageProducts: [Product] = products.keys.map { key -> Product in
90+
.library(name: key, targets: ["\(key)\(dependencies_suffix)"])
91+
}.sorted { $0.name < $1.name }
92+
93+
var packageTargets: [Target] = []
94+
95+
for (key, value) in targets {
96+
packageTargets.append(.binaryTarget(
97+
name: key,
98+
path: "cmake-out/\(key).xcframework"
99+
))
66100
}
67101

68-
let targets = [
69-
"threadpool",
70-
].flatMap { [$0, $0 + debug_suffix] }
102+
for (key, value) in products {
103+
packageTargets.append(.binaryTarget(
104+
name: key,
105+
path: "cmake-out/\(key).xcframework"
106+
))
107+
let target: Target = .target(
108+
name: "\(key)\(dependencies_suffix)",
109+
dependencies: ([key] + (value["targets"] as? [String] ?? []).map {
110+
key.hasSuffix(debug_suffix) ? $0 + debug_suffix : $0
111+
}).map { .target(name: $0) },
112+
path: ".Package.swift/\(key)",
113+
linkerSettings:
114+
(value["frameworks"] as? [String] ?? []).map { .linkedFramework($0) } +
115+
(value["libraries"] as? [String] ?? []).map { .linkedLibrary($0) }
116+
)
117+
packageTargets.append(target)
118+
}
71119

72120
let package = Package(
73121
name: "executorch",
74122
platforms: [
75123
.iOS(.v17),
76124
.macOS(.v10_15),
77125
],
78-
products: products.keys.map { key in
79-
.library(name: key, targets: ["\(key)\(dependencies_suffix)"])
80-
}.sorted { $0.name < $1.name },
81-
targets: targets.map { key in
82-
.binaryTarget(
83-
name: key,
84-
path: "cmake-out/\(key).xcframework"
85-
)
86-
} + products.flatMap { key, value -> [Target] in
87-
[
88-
.binaryTarget(
89-
name: key,
90-
path: "cmake-out/\(key).xcframework"
91-
),
92-
.target(
93-
name: "\(key)\(dependencies_suffix)",
94-
dependencies:([key] +
95-
(value["targets"] as? [String] ?? []).map {
96-
target in key.hasSuffix(debug_suffix) ? target + debug_suffix : target
97-
}).map { .target(name: $0) },
98-
path: ".Package.swift/\(key)",
99-
linkerSettings:
100-
(value["frameworks"] as? [String] ?? []).map { .linkedFramework($0) } +
101-
(value["libraries"] as? [String] ?? []).map { .linkedLibrary($0) }
102-
),
103-
]
104-
} + [
126+
products: packageProducts,
127+
targets: packageTargets + [
105128
.testTarget(
106129
name: "tests",
107130
dependencies: [

0 commit comments

Comments
 (0)