| 1 | // swift-tools-version: 5.9 |
| 2 | import PackageDescription |
| 3 | import Foundation |
| 4 | |
| 5 | let sharedNative: Package.Dependency = ProcessInfo.processInfo.environment["OFICINA_NATIVE_PACKAGE_PATH"].map { .package(path: $0) } |
| 6 | ?? .package(url: "https://amadan.net/rastrillo/native", revision: "b8098cd09c2641467f4dad71057e4a733b610649") |
| 7 | |
| 8 | let package = Package( |
| 9 | name: "CallsNative", |
| 10 | platforms: [.macOS(.v14), .iOS(.v17)], |
| 11 | products: [ |
| 12 | .library(name: "CallsKit", targets: ["CallsKit"]), |
| 13 | // What the iPhone's broadcast extension links, and all it links: no |
| 14 | // WebRTC, so the extension stays far inside its memory ceiling. |
| 15 | .library(name: "CallsBroadcastKit", targets: ["CallsBroadcastKit"]), |
| 16 | .executable(name: "CallsMac", targets: ["CallsMac"]), |
| 17 | .executable(name: "CallsInterop", targets: ["CallsInterop"]), |
| 18 | ], |
| 19 | dependencies: [ |
| 20 | sharedNative, |
| 21 | .package(url: "https://github.com/livekit/webrtc-xcframework.git", exact: "150.7871.02") |
| 22 | ], |
| 23 | targets: [ |
| 24 | .binaryTarget(name: "CallsBridge", path: "../build/CallsBridge.xcframework"), |
| 25 | // Built by scripts/build-rnnoise.sh, as CallsBridge is by build-bridge.sh. |
| 26 | .binaryTarget(name: "RNNoise", path: "../build/RNNoise.xcframework"), |
| 27 | // Built by scripts/build-deepfilter.sh. Linked on Mac only: the iPhone |
| 28 | // runs RNNoise, and should not carry a model runtime it never uses. |
| 29 | .binaryTarget(name: "DeepFilter", path: "../build/DeepFilter.xcframework"), |
| 30 | .target(name: "CallsBroadcastKit"), |
| 31 | .target( |
| 32 | name: "CallsKit", |
| 33 | dependencies: [ |
| 34 | "CallsBridge", "CallsBroadcastKit", "RNNoise", |
| 35 | .target(name: "DeepFilter", condition: .when(platforms: [.macOS])), |
| 36 | .product(name: "LiveKitWebRTC", package: "webrtc-xcframework"), |
| 37 | ]), |
| 38 | .executableTarget(name: "CallsMac", dependencies: [.product(name: "RastrilloMacUpdates", package: "native", condition: .when(platforms: [.macOS])), "CallsKit"], resources: [.copy("Resources/AppIcon.png"), .copy("Resources/MacIcon.png")]), |
| 39 | .executableTarget(name: "CallsInterop", dependencies: ["CallsKit"]), |
| 40 | .testTarget(name: "CallsKitTests", dependencies: ["CallsKit", "CallsBroadcastKit"], resources: [.copy("Fixtures")]), |
| 41 | ] |
| 42 | ) |
| 43 | |