Skip to content

Commit 2516478

Browse files
authored
Add swiftpm manifest for locally built frameworks (#8795)
* Add swiftpm manifest for locally built frameworks * Update Package.swift
1 parent 3261d05 commit 2516478

File tree

17 files changed

+86
-0
lines changed

17 files changed

+86
-0
lines changed

.Package.swift/backend_coreml/dummy.swift

Whitespace-only changes.

.Package.swift/backend_coreml_debug/dummy.swift

Whitespace-only changes.

.Package.swift/backend_mps/dummy.swift

Whitespace-only changes.

.Package.swift/backend_mps_debug/dummy.swift

Whitespace-only changes.

.Package.swift/backend_xnnpack/dummy.swift

Whitespace-only changes.

.Package.swift/backend_xnnpack_debug/dummy.swift

Whitespace-only changes.

.Package.swift/executorch/dummy.swift

Whitespace-only changes.

.Package.swift/executorch_debug/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_custom/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_custom_debug/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_optimized/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_optimized_debug/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_portable/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_portable_debug/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_quantized/dummy.swift

Whitespace-only changes.

.Package.swift/kernels_quantized_debug/dummy.swift

Whitespace-only changes.

Package.swift

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// swift-tools-version:5.9
2+
/*
3+
* Copyright (c) Meta Platforms, Inc. and affiliates.
4+
* All rights reserved.
5+
*
6+
* This source code is licensed under the BSD-style license found in the
7+
* LICENSE file in the root directory of this source tree.
8+
*/
9+
10+
// NOTE: This package manifest is for frameworks built locally with CMake.
11+
// It defines dependencies and linker settings for Executorch components.
12+
//
13+
// To use prebuilt binaries instead, switch to one of the "swiftpm" branches,
14+
// which fetch the precompiled `.xcframeworks`.
15+
//
16+
// For details on building frameworks locally or using prebuilt binaries,
17+
// see the documentation:
18+
// https://pytorch.org/executorch/main/using-executorch-ios.html
19+
20+
import PackageDescription
21+
22+
let debug = "_debug"
23+
let deliverables = [
24+
"backend_coreml": [
25+
"frameworks": [
26+
"Accelerate",
27+
"CoreML",
28+
],
29+
"libraries": [
30+
"sqlite3",
31+
],
32+
],
33+
"backend_mps": [
34+
"frameworks": [
35+
"Metal",
36+
"MetalPerformanceShaders",
37+
"MetalPerformanceShadersGraph",
38+
],
39+
],
40+
"backend_xnnpack": [:],
41+
"executorch": [:],
42+
"kernels_custom": [:],
43+
"kernels_optimized": [:],
44+
"kernels_portable": [:],
45+
"kernels_quantized": [:],
46+
].reduce(into: [String: [String: Any]]()) {
47+
$0[$1.key] = $1.value
48+
$0[$1.key + debug] = $1.value
49+
}.reduce(into: [String: [String: Any]]()) {
50+
var newValue = $1.value
51+
if $1.key.hasSuffix(debug) {
52+
$1.value.forEach { key, value in
53+
if key.hasSuffix(debug) {
54+
newValue[String(key.dropLast(debug.count))] = value
55+
}
56+
}
57+
}
58+
$0[$1.key] = newValue.filter { key, _ in !key.hasSuffix(debug) }
59+
}
60+
61+
let package = Package(
62+
name: "executorch",
63+
platforms: [
64+
.iOS(.v17),
65+
.macOS(.v10_15),
66+
],
67+
products: deliverables.keys.map { key in
68+
.library(name: key, targets: ["\(key)_dependencies"])
69+
}.sorted { $0.name < $1.name },
70+
targets: deliverables.flatMap { key, value -> [Target] in
71+
[
72+
.binaryTarget(
73+
name: key,
74+
path: "cmake-out/\(key).xcframework"
75+
),
76+
.target(
77+
name: "\(key)_dependencies",
78+
dependencies: [.target(name: key)],
79+
path: ".Package.swift/\(key)",
80+
linkerSettings:
81+
(value["frameworks"] as? [String] ?? []).map { .linkedFramework($0) } +
82+
(value["libraries"] as? [String] ?? []).map { .linkedLibrary($0) }
83+
),
84+
]
85+
}
86+
)

0 commit comments

Comments
 (0)