Fountain Coach Gitowner-controlled · read only

midi2.git · Package.swift

midi2.git / Package.swift

revision 73f21fce03d22672e81db6bdf92c5c3d51e10aad · complete file

// swift-tools-version: 6.1
import PackageDescription

let packageVersion = "0.11.0"

let package = Package(
    name: "MIDI2",
    platforms: [.macOS(.v13), .iOS(.v16)],
    products: [
        .library(name: "MIDI2", targets: ["MIDI2"]),
        .library(name: "MIDI2CI", targets: ["MIDI2CI"]),
        .executable(name: "midi2demo", targets: ["midi2demo"]),
        .executable(name: "jitterdemo", targets: ["jitterdemo"]),
        .executable(name: "midi2compliance", targets: ["midi2compliance"]),
        .executable(name: "midi2umpd", targets: ["midi2umpd"])
    ],
    dependencies: [
        .package(url: "https://github.com/typelift/SwiftCheck.git", from: "0.12.0"),
        .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.6.1"),
        .package(url: "https://github.com/apple/swift-numerics.git", from: "1.0.0")
    ],
    targets: [
        .target(name: "MIDI2", dependencies: [.product(name: "Numerics", package: "swift-numerics")]),
        .target(name: "MIDI2CI", dependencies: ["MIDI2"]),
        .executableTarget(
            name: "midi2demo",
            dependencies: [
                "MIDI2",
                "MIDI2CI",
                .product(name: "ArgumentParser", package: "swift-argument-parser")
            ],
            resources: [
                .copy("midi2demo.1")
            ]
        ),
        .executableTarget(
            name: "jitterdemo",
            dependencies: ["MIDI2"],
            swiftSettings: [
                .unsafeFlags([
                    "-Xfrontend", "-strict-concurrency=complete",
                    "-Xfrontend", "-enable-actor-data-race-checks",
                    "-Xfrontend", "-warn-concurrency"
                ], .when(configuration: .debug))
            ]
        ),
        .executableTarget(
            name: "midi2device",
            dependencies: ["MIDI2", "MIDI2CI"]
        ),
        // ALSA C shim target for Linux
        .target(
            name: "UMPALSA",
            path: "Sources/UMPALSA",
            publicHeadersPath: ".",
            cSettings: [
                .define("USE_ALSA", to: "1", .when(platforms: [.linux]))
            ],
            linkerSettings: [
                .linkedLibrary("asound", .when(platforms: [.linux]))
            ]
        ),
        .executableTarget(
            name: "midi2compliance",
            dependencies: ["MIDI2", "MIDI2CI"]
        ),
        .executableTarget(
            name: "midi2umpd",
            dependencies: ["MIDI2", "MIDI2CI", "UMPALSA"],
            swiftSettings: [
                .define("LINUX", .when(platforms: [.linux]))
            ]
        ),
        .testTarget(name: "MIDI2Tests", dependencies: ["MIDI2", "MIDI2CI", "midi2demo"]),
        .testTarget(name: "Fuzz", dependencies: ["MIDI2", "SwiftCheck"], path: "Tests/Fuzz")
    ]
)