// swift-tools-version:5.9
import PackageDescription

let package = Package(
    name: "StringZilla",
    platforms: [
        // Linux doesn't have to be explicitly listed
        .iOS(.v13),      // For iOS, version 13 and later
        .tvOS(.v13),     // For tvOS, version 13 and later
        .macOS(.v10_15), // For macOS, version 10.15 (Catalina) and later
        .watchOS(.v6)    // For watchOS, version 6 and later
    ],
    products: [
        .library(
            name: "StringZilla",
            targets: ["StringZillaC", "StringZilla"]
        )
    ],
    targets: [
        .target(
            name: "StringZillaC",
            path: "include/stringzilla", // Adjust the path to include your C source files
            sources: ["../../c/lib.c"], // Include the source file here
            publicHeadersPath: ".",
            cSettings: [
                .define("SZ_DYNAMIC_DISPATCH", to: "1"), // Define a macro
                .define("SZ_AVOID_LIBC", to: "0"), // We need `malloc` from LibC
                .define("SZ_DEBUG", to: "0"), // We don't need any extra assertions in the C layer
                .headerSearchPath("include/stringzilla"), // Specify header search paths
                .unsafeFlags(["-Wall"]) // Use with caution: specify custom compiler flags
            ]
        ),
        .target(
            name: "StringZilla",
            dependencies: ["StringZillaC"],
            path: "swift",
            exclude: ["Test.swift"]
        ),
        .testTarget(
            name: "StringZillaTests",
            dependencies: ["StringZilla"],
            path: "swift",
            sources: ["Test.swift"]
        )
    ],
    cLanguageStandard: CLanguageStandard.c99
)