You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Musubi/Packages/MusubiKit/Package.swift

46 lines
2.0 KiB

// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "MusubiKit",
defaultLocalization: "de",
platforms: [.macOS(.v14)],
products: [
.library(name: "MusubiCore", targets: ["MusubiCore"]),
.library(name: "NDIKit", targets: ["NDIKit"]),
.library(name: "VideoOutput", targets: ["VideoOutput"]),
.library(name: "AudioMatrix", targets: ["AudioMatrix"]),
.library(name: "DesignSystem", targets: ["DesignSystem"]),
.library(name: "Remote", targets: ["Remote"]),
.library(name: "Intercom", targets: ["Intercom"]),
],
targets: [
// Pure logic: models, scenes, settings.
.target(name: "MusubiCore"),
// NDI SDK (C) via module map. Headers and libndi live in Vendor/NDI/ (not checked in).
.systemLibrary(name: "CNDI"),
.target(name: "NDIKit", dependencies: ["CNDI", "MusubiCore"]),
.target(name: "VideoOutput", dependencies: ["MusubiCore"]),
.target(name: "AudioMatrix", dependencies: ["MusubiCore", "CAudioRing"]),
// Lock-free SPSC ring buffer for the audio render thread (C11 atomics; Swift's Atomic needs macOS 15).
.target(name: "CAudioRing"),
// Theme.swift is a symlink to design/Theme.swift (single source of truth).
.target(name: "DesignSystem"),
// Control ↔ node over Bonjour/TCP on the technical interface (M3).
.target(name: "Remote", dependencies: ["MusubiCore"]),
// Phones on the clinic interface (M4): HTTP signalling + minimal WebRTC
// (ICE-lite, DTLS 1.2, SRTP) built on CryptoKit/CommonCrypto only.
.target(name: "Intercom", dependencies: ["MusubiCore"]),
.testTarget(name: "MusubiCoreTests", dependencies: ["MusubiCore"]),
.testTarget(name: "AudioMatrixTests", dependencies: ["AudioMatrix", "CAudioRing"]),
.testTarget(name: "RemoteTests", dependencies: ["Remote", "MusubiCore"]),
.testTarget(name: "IntercomTests", dependencies: ["Intercom"]),
]
)

Powered by TurnKey Linux.