main
swift 69 lines 2.23 KB
Raw
1 // swift-tools-version:6.2
2 import Foundation
3 import PackageDescription
4
5 let packageRoot = URL(fileURLWithPath: #filePath).deletingLastPathComponent()
6 let localFrameworkPath = "EdFramework.xcframework"
7 let localFrameworkAbsolutePath = packageRoot.appendingPathComponent(localFrameworkPath).path
8
9 // Updated automatically by onde-ed's release-sdk-swift workflow.
10 let releaseFrameworkURL =
11 "https://github.com/ondeinference/ed/releases/download/v1.3.3/EdFramework.xcframework.zip"
12 let releaseFrameworkChecksum =
13 "523e8dd68ea35c6193f5384e9ab9f732237a50d62c690f05644f67396ab52b2c"
14
15 let edFrameworkTarget: Target
16 if FileManager.default.fileExists(atPath: localFrameworkAbsolutePath) {
17 edFrameworkTarget = .binaryTarget(
18 name: "EdFramework",
19 path: localFrameworkPath
20 )
21 } else {
22 edFrameworkTarget = .binaryTarget(
23 name: "EdFramework",
24 url: releaseFrameworkURL,
25 checksum: releaseFrameworkChecksum
26 )
27 }
28
29 let package = Package(
30 name: "Ed",
31 platforms: [
32 .iOS(.v16),
33 .macOS(.v14),
34 .tvOS(.v16),
35 .visionOS(.v1),
36 ],
37 products: [
38 .library(name: "Ed", targets: ["Ed"]),
39 ],
40 targets: [
41 edFrameworkTarget,
42 .target(
43 name: "Ed",
44 dependencies: [.target(name: "EdFramework")],
45 path: "Sources/Ed",
46 linkerSettings: [
47 .linkedFramework("CoreFoundation"),
48 .linkedFramework("Foundation"),
49 .linkedFramework("IOKit", .when(platforms: [.macOS])),
50 .linkedFramework("Metal"),
51 .linkedFramework("Security"),
52 .linkedFramework("SystemConfiguration"),
53 .linkedLibrary("c++"),
54 .linkedLibrary("iconv"),
55 .linkedLibrary("resolv"),
56 .linkedLibrary("z"),
57 ]
58 ),
59 .testTarget(
60 name: "EdTests",
61 dependencies: ["Ed"],
62 path: "Tests/EdTests"
63 ),
64 ],
65 // UniFFI 0.31's generated async callback shim predates Swift 6's region
66 // isolation checks. The hand-written Ed API remains concurrency-safe; the
67 // generated bridge compiles in Swift 5 language mode until UniFFI updates.
68 swiftLanguageModes: [.v5]
69 )