mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
Add a native SwiftUI VniDrop app (Send/Receive/Settings) talking to the Rust core via generated UniFFI Swift bindings, plus the uniffi-bindgen helper crate. iOS uses a TabView, macOS a NavigationSplitView sidebar.
44 lines
1.3 KiB
Swift
44 lines
1.3 KiB
Swift
// swift-tools-version:5.9
|
|
import PackageDescription
|
|
|
|
// Core/UI Swift sources built as a library so the shared logic can be typechecked
|
|
// and unit-tested from the command line (macOS). The iOS/macOS app target in the
|
|
// Xcode project links the same sources plus the app entry point.
|
|
let package = Package(
|
|
name: "VniDropApp",
|
|
defaultLocalization: "en",
|
|
platforms: [
|
|
.iOS(.v16),
|
|
.macOS(.v13),
|
|
],
|
|
products: [
|
|
.library(name: "VniDropApp", targets: ["VniDropApp"]),
|
|
],
|
|
dependencies: [
|
|
.package(path: "VnidropCore"),
|
|
],
|
|
targets: [
|
|
.target(
|
|
name: "VniDropApp",
|
|
dependencies: [.product(name: "VnidropCore", package: "VnidropCore")],
|
|
path: "VniDrop",
|
|
// The @main entry belongs to the Xcode app target only; excluding it
|
|
// keeps this library free of a conflicting `_main` symbol for tests.
|
|
exclude: ["Resources", "App/VniDropApp.swift"],
|
|
// The Rust core (iroh network stack) links these system libraries. The
|
|
// Xcode app target must add the same frameworks under "Link Binary With
|
|
// Libraries" (SystemConfiguration, Security, libresolv).
|
|
linkerSettings: [
|
|
.linkedFramework("SystemConfiguration"),
|
|
.linkedFramework("Security"),
|
|
.linkedLibrary("resolv"),
|
|
]
|
|
),
|
|
.testTarget(
|
|
name: "VniDropAppTests",
|
|
dependencies: ["VniDropApp"],
|
|
path: "Tests"
|
|
),
|
|
]
|
|
)
|