// swift-tools-version:6.0 import PackageDescription let package = Package( name: "forge", platforms: [.macOS(.v14)], dependencies: [ .package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"), .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"), ], targets: [ // Pure color math .target(name: "ForgeColor"), // Node stack, flattening, serialization .target(name: "ForgeGrade", dependencies: ["ForgeColor"]), // Camera seam .target(name: "ForgeCamera", dependencies: ["ForgeGrade"]), // Simulated cameras .target(name: "ForgeSim", dependencies: [ "ForgeCamera", .product(name: "NIO", package: "swift-nio"), .product(name: "NIOHTTP1", package: "swift-nio"), .product(name: "NIOWebSocket", package: "swift-nio"), ]), // Vendor drivers .target(name: "ForgeCameraARRI", dependencies: [ "ForgeCamera", .product(name: "NIO", package: "swift-nio"), .product(name: "NIOHTTP1", package: "swift-nio"), ]), .target(name: "ForgeCameraRED", dependencies: [ "ForgeCamera", .product(name: "NIO", package: "swift-nio"), .product(name: "NIOHTTP1", package: "swift-nio"), .product(name: "NIOWebSocket", package: "swift-nio"), ]), .target(name: "ForgeCameraSony", dependencies: [ "ForgeCamera", .product(name: "NIO", package: "swift-nio"), ]), // Shot logging + storage + exports .target(name: "ForgeLibrary", dependencies: ["ForgeGrade", "CSQLite"]), .systemLibrary(name: "CSQLite", path: "Sources/CSQLite"), .target(name: "ForgeLogger", dependencies: ["ForgeCamera", "ForgeLibrary"]), .target(name: "ForgeExport", dependencies: ["ForgeLibrary", "ForgeGrade"]), // Offload + proxy .target(name: "ForgeOffload", dependencies: ["ForgeLibrary"]), .target(name: "ForgeProxy", dependencies: ["ForgeLibrary", "ForgeGrade", "ForgeColor"]), // Panel + video seams .target(name: "ForgePanel", dependencies: [ "ForgeGrade", .product(name: "NIO", package: "swift-nio"), ]), .target(name: "ForgeVideo", dependencies: ["ForgeGrade"]), // CLI .executableTarget(name: "forge-cli", dependencies: [ "ForgeCamera", "ForgeCameraARRI", "ForgeCameraRED", "ForgeCameraSony", "ForgeSim", "ForgeLogger", "ForgeExport", "ForgePanel", "ForgeVideo", "ForgeOffload", "ForgeProxy", .product(name: "ArgumentParser", package: "swift-argument-parser"), ]), // Tests .testTarget(name: "ForgeColorTests", dependencies: ["ForgeColor"]), .testTarget(name: "ForgeGradeTests", dependencies: ["ForgeGrade"]), .testTarget(name: "ForgeCameraTests", dependencies: ["ForgeCamera", "ForgeSim"]), .testTarget(name: "ForgeCameraARRITests", dependencies: ["ForgeCameraARRI", "ForgeSim"]), .testTarget(name: "ForgeCameraREDTests", dependencies: ["ForgeCameraRED", "ForgeSim"]), .testTarget(name: "ForgeCameraSonyTests", dependencies: ["ForgeCameraSony", "ForgeSim"]), .testTarget(name: "ForgeLibraryTests", dependencies: ["ForgeLibrary"]), .testTarget(name: "ForgeLoggerTests", dependencies: ["ForgeLogger", "ForgeSim"]), .testTarget(name: "ForgeExportTests", dependencies: ["ForgeExport"]), .testTarget(name: "ForgeOffloadTests", dependencies: ["ForgeOffload"]), .testTarget(name: "ForgeProxyTests", dependencies: ["ForgeProxy"]), .testTarget(name: "ForgePanelTests", dependencies: ["ForgePanel"]), .testTarget(name: "ForgeVideoTests", dependencies: ["ForgeVideo"]), ] )