rama 0.4.0

modular service framework
Documentation
// swift-tools-version: 5.9

import PackageDescription

let strictConcurrency: [SwiftSetting] = [
    .enableExperimentalFeature("StrictConcurrency")
]

let package = Package(
    name: "RamaAppleNetworkExtension",
    platforms: [
        .macOS(.v12)
    ],
    products: [
        .library(
            name: "RamaAppleNetworkExtension",
            targets: ["RamaAppleNetworkExtension"]
        ),
        .library(
            name: "RamaAppleSecureEnclave",
            targets: ["RamaAppleSecureEnclave"]
        ),
        .library(
            name: "RamaAppleXpcClient",
            targets: ["RamaAppleXpcClient"]
        ),
    ],
    targets: [
        .target(
            name: "RamaAppleNEFFI",
            path: "ffi/apple/RamaAppleNetworkExtension/Sources/RamaAppleNEFFI",
            linkerSettings: [
                .linkedLibrary("bsm"),
                .linkedLibrary("proc"),
            ]
        ),
        .target(
            name: "RamaAppleNetworkExtension",
            dependencies: ["RamaAppleNEFFI"],
            path: "ffi/apple/RamaAppleNetworkExtension/Sources/RamaAppleNetworkExtension",
            swiftSettings: strictConcurrency
        ),
        .target(
            name: "RamaAppleSEFFI",
            path: "ffi/apple/RamaAppleSecureEnclave/Sources/RamaAppleSEFFI"
        ),
        .target(
            name: "RamaAppleSecureEnclave",
            dependencies: ["RamaAppleSEFFI"],
            path: "ffi/apple/RamaAppleSecureEnclave/Sources/RamaAppleSecureEnclave",
            swiftSettings: strictConcurrency
        ),
        .target(
            name: "RamaAppleXpcClient",
            path: "ffi/apple/RamaAppleXpcClient/Sources/RamaAppleXpcClient",
            swiftSettings: strictConcurrency
        ),
        // Swift FFI integration tests. Drive them via `just ttest-e2e-ffi-swift`
        // so the rama staticlib path stays in one place. CI uses the same recipes.
        .testTarget(
            name: "RamaAppleNetworkExtensionTests",
            dependencies: [
                "RamaAppleNetworkExtension",
                "RamaAppleSecureEnclave",
                "RamaAppleNEFFI",
                "RamaAppleSEFFI",
            ],
            path: "ffi/apple/RamaAppleNetworkExtension/Tests/RamaAppleNetworkExtensionTests"
        ),
        .testTarget(
            name: "RamaAppleXpcClientTests",
            dependencies: ["RamaAppleXpcClient"],
            path: "ffi/apple/RamaAppleXpcClient/Tests/RamaAppleXpcClientTests"
        ),
    ]
)