// swift-tools-version: 6.2 // The swift-tools-version declares the minimum version of Swift required to build this package. import CompilerPluginSupport import PackageDescription let package = Package( name: "p4ce", platforms: [.iOS(.v17), .macOS(.v13)], products: [ // Products define the executables and libraries a package produces, making them visible to other packages. .library( name: "P4Compiler", targets: ["P4Compiler"] ), .library( name: "Common", targets: ["Common"] ), .library( name: "P4CodeGen", targets: ["P4CodeGen"] ), ], dependencies: [ .package(path: "./tree-sitter-p4"), .package(url: "https://github.com/tree-sitter/swift-tree-sitter", revision: "main"), .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"), .package(url: "https://github.com/swiftlang/swift-syntax", from: "602.0.0"), .package(url: "https://github.com/apple/swift-argument-parser", from: "1.0.0"), .package(url: "https://github.com/apple/swift-system", from: "1.6.1"), //.package(url: "https://github.com/apple/swift-protobuf.git", from: "1.27.0"), ], targets: [ .macro( name: "Macros", dependencies: [ .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), ], swiftSettings: [.enableExperimentalFeature("CodeItemMacros")]), .target( name: "P4Compiler", dependencies: [ .product(name: "SwiftTreeSitter", package: "swift-tree-sitter"), .product(name: "SwiftTreeSitterLayer", package: "swift-tree-sitter"), .product(name: "TreeSitterP4", package: "tree-sitter-p4"), .target(name: "TreeSitterExtensions"), .target(name: "Common"), ], swiftSettings: [.enableExperimentalFeature("CodeItemMacros")], ), .target( name: "TreeSitterExtensions", dependencies: [ .product(name: "SwiftTreeSitter", package: "swift-tree-sitter"), .product(name: "SwiftTreeSitterLayer", package: "swift-tree-sitter"), ], ), .target( name: "Common", dependencies: [ "Macros", .product(name: "SystemPackage", package: "swift-system"), .product(name: "SwiftTreeSitter", package: "swift-tree-sitter"), ], swiftSettings: [.enableExperimentalFeature("CodeItemMacros")], ), .target( name: "P4CodeGen", dependencies: [ "P4Compiler", "Common", //.product(name: "SwiftProtobuf", package: "swift-protobuf"), ] ), .testTarget( name: "Tests", dependencies: [ "P4Compiler", "P4CodeGen", "Macros", "TreeSitterExtensions", "Common", .product(name: "SystemPackage", package: "swift-system"), ], //swiftSettings: [.enableExperimentalFeature("CodeItemMacros"), .unsafeFlags(["-Xfrontend", "-dump-macro-expansions"])], swiftSettings: [.enableExperimentalFeature("CodeItemMacros")], ), ], )