Wire local TDLib into iOS FFI build
This commit is contained in:
@@ -1,7 +1,29 @@
|
||||
// swift-tools-version: 6.0
|
||||
|
||||
import Foundation
|
||||
import PackageDescription
|
||||
|
||||
let useLocalFfi = ProcessInfo.processInfo.environment["TELE_IOS_USE_LOCAL_FFI"] == "1"
|
||||
let localFfiTargets: [Target] = useLocalFfi ? [
|
||||
.binaryTarget(
|
||||
name: "tele_ios_ffiFFI",
|
||||
path: "BinaryArtifacts/tele_ios_ffi.xcframework"
|
||||
),
|
||||
.binaryTarget(
|
||||
name: "tdjson",
|
||||
path: "BinaryArtifacts/tdjson.xcframework"
|
||||
),
|
||||
.target(
|
||||
name: "tele_ios_ffi",
|
||||
dependencies: ["tele_ios_ffiFFI", "tdjson"],
|
||||
path: "Generated/tele_ios_ffi/Sources/tele_ios_ffi"
|
||||
),
|
||||
] : []
|
||||
|
||||
let coreDependencies: [Target.Dependency] = useLocalFfi ? [
|
||||
"tele_ios_ffi",
|
||||
] : []
|
||||
|
||||
let package = Package(
|
||||
name: "TeleTuiIOS",
|
||||
platforms: [
|
||||
@@ -14,7 +36,10 @@ let package = Package(
|
||||
.executable(name: "TeleTuiIOSSmokeTests", targets: ["TeleTuiIOSSmokeTests"]),
|
||||
],
|
||||
targets: [
|
||||
.target(name: "TeleTuiIOSCore"),
|
||||
.target(
|
||||
name: "TeleTuiIOSCore",
|
||||
dependencies: coreDependencies
|
||||
),
|
||||
.executableTarget(
|
||||
name: "TeleTuiIOSApp",
|
||||
dependencies: ["TeleTuiIOSCore"]
|
||||
@@ -23,5 +48,5 @@ let package = Package(
|
||||
name: "TeleTuiIOSSmokeTests",
|
||||
dependencies: ["TeleTuiIOSCore"]
|
||||
),
|
||||
]
|
||||
] + localFfiTargets
|
||||
)
|
||||
|
||||
@@ -38,3 +38,10 @@ Run the simulator launch plus screenshot sanity check:
|
||||
```bash
|
||||
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/smoke-ios-simulator-ui.sh
|
||||
```
|
||||
|
||||
Build the app against the local real Rust/TDLib FFI artifacts:
|
||||
|
||||
```bash
|
||||
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/build-ios-real-ffi-xcframework.sh
|
||||
TELE_IOS_USE_LOCAL_FFI=1 DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer scripts/build-ios-simulator-app.sh
|
||||
```
|
||||
|
||||
@@ -5,7 +5,7 @@ public enum SessionBridgeFactory {
|
||||
account: Account,
|
||||
useFakeTdlib: Bool = true
|
||||
) -> SessionBridge {
|
||||
#if canImport(tele_ios_ffiFFI)
|
||||
#if canImport(tele_ios_ffi) || canImport(tele_ios_ffiFFI)
|
||||
do {
|
||||
return try UniFfiSessionBridge(account: account, useFakeTdlib: useFakeTdlib)
|
||||
} catch {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import Foundation
|
||||
|
||||
#if canImport(tele_ios_ffiFFI)
|
||||
#if canImport(tele_ios_ffi)
|
||||
import tele_ios_ffi
|
||||
#elseif canImport(tele_ios_ffiFFI)
|
||||
import tele_ios_ffiFFI
|
||||
#endif
|
||||
|
||||
#if canImport(tele_ios_ffi) || canImport(tele_ios_ffiFFI)
|
||||
public actor UniFfiSessionBridge: SessionBridge {
|
||||
private let handle: SessionHandle
|
||||
private let defaultLimit: Int32
|
||||
|
||||
Reference in New Issue
Block a user