// swift-tools-version:5.1 import PackageDescription let buildTests = false extension Product { static func allTests() -> [Product] { if buildTests { return [.executable(name: "AllTestz", targets: ["AllTestz"])] } else { return [] } } } extension Target { static func rxCocoa() -> [Target] { #if os(Linux) return [.target(name: "RxCocoa", dependencies: ["RxSwift", "RxRelay"])] #else return [.target(name: "RxCocoa", dependencies: ["RxSwift", "RxRelay", "RxCocoaRuntime"])] #endif } static func rxCocoaRuntime() -> [Target] { #if os(Linux) return [] #else return [.target(name: "RxCocoaRuntime", dependencies: ["RxSwift"])] #endif } static func allTests() -> [Target] { if buildTests { return [.target(name: "AllTestz", dependencies: ["RxSwift", "RxCocoa", "RxBlocking", "RxTest"])] } else { return [] } } } let package = Package( name: "RxSwift", products: ([ [ .library(name: "RxSwift", targets: ["RxSwift"]), .library(name: "RxCocoa", targets: ["RxCocoa"]), .library(name: "RxRelay", targets: ["RxRelay"]), .library(name: "RxBlocking", targets: ["RxBlocking"]), .library(name: "RxTest", targets: ["RxTest"]), ], Product.allTests() ] as [[Product]]).flatMap { $0 }, targets: ([ [ .target(name: "RxSwift", dependencies: []), ], Target.rxCocoa(), Target.rxCocoaRuntime(), [ .target(name: "RxRelay", dependencies: ["RxSwift"]), .target(name: "RxBlocking", dependencies: ["RxSwift"]), .target(name: "RxTest", dependencies: ["RxSwift"]), ], Target.allTests() ] as [[Target]]).flatMap { $0 }, swiftLanguageVersions: [.v5] )