// swift-tools-version: 5.9
import Foundation
import PackageDescription

// Wraps the Zig usage core for native hosts. Build the library first:
//   zig build                        (repo root, produces zig-out/lib/libusage.a)
// then:
//   swift build --package-path swift
//
// The core does no I/O: it builds the requests and parses the responses, and UsageDriver feeds it
// through URLSession. That is the whole point of the split — TLS, proxies and HTTP/2 stay with the
// host, and the rules stay in one place shared with the CLI.
//
// The path to libusage.a is absolute because this package is also consumed as a dependency: a
// relative path would be resolved against whoever is building, not against this directory.
let packageRoot = URL(fileURLWithPath: #filePath)
	.deletingLastPathComponent() // the manifest
	.deletingLastPathComponent() // swift/
	.path
let staticLibrary = "\(packageRoot)/zig-out/lib/libusage.a"

let package = Package(
	name: "UsageCore",
	platforms: [.macOS(.v13)],
	products: [
		.library(name: "UsageCore", targets: ["UsageCore"]),
		.executable(name: "usage-smoke", targets: ["UsageSmoke"]),
	],
	targets: [
		.systemLibrary(name: "CUsage", path: "Sources/CUsage"),
		.target(
			name: "UsageCore",
			dependencies: ["CUsage"],
			path: "Sources/UsageCore",
			linkerSettings: [.unsafeFlags([staticLibrary])]
		),
		.executableTarget(
			name: "UsageSmoke",
			dependencies: ["UsageCore"],
			path: "Sources/UsageSmoke",
			linkerSettings: [.unsafeFlags([staticLibrary])]
		),
	]
)
