|
| 1 | +// swift-tools-version:6.1 |
| 2 | + |
| 3 | +import PackageDescription |
| 4 | + |
| 5 | +import class Foundation.ProcessInfo |
| 6 | + |
| 7 | +let DarwinPlatforms: [Platform] = [.macOS, .iOS, .watchOS, .tvOS, .visionOS] |
| 8 | + |
| 9 | +let package = Package( |
| 10 | + name: "WasmKit", |
| 11 | + platforms: [.macOS(.v15), .iOS(.v17)], |
| 12 | + products: [ |
| 13 | + .executable(name: "wasmkit-cli", targets: ["CLI"]), |
| 14 | + .library(name: "WasmKit", targets: ["WasmKit"]), |
| 15 | + .library(name: "WasmKitWASI", targets: ["WasmKitWASI"]), |
| 16 | + .library(name: "WASI", targets: ["WASI"]), |
| 17 | + .library(name: "WasmParser", targets: ["WasmParser"]), |
| 18 | + .library(name: "WAT", targets: ["WAT"]), |
| 19 | + .library(name: "WIT", targets: ["WIT"]), |
| 20 | + .library(name: "_CabiShims", targets: ["_CabiShims"]), |
| 21 | + ], |
| 22 | + traits: [ |
| 23 | + .default(enabledTraits: []), |
| 24 | + "WasmDebuggingSupport" |
| 25 | + ], |
| 26 | + targets: [ |
| 27 | + .executableTarget( |
| 28 | + name: "CLI", |
| 29 | + dependencies: [ |
| 30 | + "WAT", |
| 31 | + "WasmKit", |
| 32 | + "WasmKitWASI", |
| 33 | + .product(name: "ArgumentParser", package: "swift-argument-parser"), |
| 34 | + .product(name: "SystemPackage", package: "swift-system"), |
| 35 | + ], |
| 36 | + exclude: ["CMakeLists.txt"] |
| 37 | + ), |
| 38 | + |
| 39 | + .target( |
| 40 | + name: "WasmKit", |
| 41 | + dependencies: [ |
| 42 | + "_CWasmKit", |
| 43 | + "WasmParser", |
| 44 | + "WasmTypes", |
| 45 | + "SystemExtras", |
| 46 | + .product(name: "SystemPackage", package: "swift-system"), |
| 47 | + ], |
| 48 | + exclude: ["CMakeLists.txt"] |
| 49 | + ), |
| 50 | + .target(name: "_CWasmKit"), |
| 51 | + .target( |
| 52 | + name: "WasmKitFuzzing", |
| 53 | + dependencies: ["WasmKit"], |
| 54 | + path: "FuzzTesting/Sources/WasmKitFuzzing" |
| 55 | + ), |
| 56 | + .testTarget( |
| 57 | + name: "WasmKitTests", |
| 58 | + dependencies: ["WasmKit", "WAT", "WasmKitFuzzing"], |
| 59 | + exclude: ["ExtraSuite"] |
| 60 | + ), |
| 61 | + |
| 62 | + .target( |
| 63 | + name: "WAT", |
| 64 | + dependencies: ["WasmParser"], |
| 65 | + exclude: ["CMakeLists.txt"] |
| 66 | + ), |
| 67 | + .testTarget(name: "WATTests", dependencies: ["WAT"]), |
| 68 | + |
| 69 | + .target( |
| 70 | + name: "WasmParser", |
| 71 | + dependencies: [ |
| 72 | + "WasmTypes", |
| 73 | + .product(name: "SystemPackage", package: "swift-system"), |
| 74 | + ], |
| 75 | + exclude: ["CMakeLists.txt"] |
| 76 | + ), |
| 77 | + .testTarget(name: "WasmParserTests", dependencies: ["WasmParser"]), |
| 78 | + |
| 79 | + .target(name: "WasmTypes", exclude: ["CMakeLists.txt"]), |
| 80 | + |
| 81 | + .target( |
| 82 | + name: "WasmKitWASI", |
| 83 | + dependencies: ["WasmKit", "WASI"], |
| 84 | + exclude: ["CMakeLists.txt"] |
| 85 | + ), |
| 86 | + .target( |
| 87 | + name: "WASI", |
| 88 | + dependencies: ["WasmTypes", "SystemExtras"], |
| 89 | + exclude: ["CMakeLists.txt"] |
| 90 | + ), |
| 91 | + .testTarget(name: "WASITests", dependencies: ["WASI", "WasmKitWASI"]), |
| 92 | + |
| 93 | + .target( |
| 94 | + name: "SystemExtras", |
| 95 | + dependencies: [ |
| 96 | + .product(name: "SystemPackage", package: "swift-system"), |
| 97 | + .target(name: "CSystemExtras", condition: .when(platforms: [.wasi])), |
| 98 | + ], |
| 99 | + exclude: ["CMakeLists.txt"], |
| 100 | + swiftSettings: [ |
| 101 | + .define("SYSTEM_PACKAGE_DARWIN", .when(platforms: DarwinPlatforms)) |
| 102 | + ] |
| 103 | + ), |
| 104 | + |
| 105 | + .target(name: "CSystemExtras"), |
| 106 | + |
| 107 | + .executableTarget( |
| 108 | + name: "WITTool", |
| 109 | + dependencies: [ |
| 110 | + "WIT", |
| 111 | + "WITOverlayGenerator", |
| 112 | + "WITExtractor", |
| 113 | + .product(name: "ArgumentParser", package: "swift-argument-parser"), |
| 114 | + ] |
| 115 | + ), |
| 116 | + |
| 117 | + .target(name: "WIT"), |
| 118 | + .testTarget(name: "WITTests", dependencies: ["WIT"]), |
| 119 | + |
| 120 | + .target(name: "WITOverlayGenerator", dependencies: ["WIT"]), |
| 121 | + .target(name: "_CabiShims"), |
| 122 | + |
| 123 | + .target(name: "WITExtractor"), |
| 124 | + .testTarget(name: "WITExtractorTests", dependencies: ["WITExtractor", "WIT"]), |
| 125 | + |
| 126 | + .target(name: "GDBRemoteProtocol", |
| 127 | + dependencies: [ |
| 128 | + .product(name: "Logging", package: "swift-log"), |
| 129 | + .product(name: "NIOCore", package: "swift-nio"), |
| 130 | + ] |
| 131 | + ), |
| 132 | + .testTarget(name: "GDBRemoteProtocolTests", dependencies: ["GDBRemoteProtocol"]), |
| 133 | + ], |
| 134 | +) |
| 135 | + |
| 136 | +if ProcessInfo.processInfo.environment["SWIFTCI_USE_LOCAL_DEPS"] == nil { |
| 137 | + package.dependencies += [ |
| 138 | + .package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.1"), |
| 139 | + .package(url: "https://github.com/apple/swift-system", from: "1.5.0"), |
| 140 | + .package(url: "https://github.com/apple/swift-nio", from: "2.86.2"), |
| 141 | + .package(url: "https://github.com/apple/swift-log", from: "1.6.4"), |
| 142 | + ] |
| 143 | +} else { |
| 144 | + package.dependencies += [ |
| 145 | + .package(path: "../swift-argument-parser"), |
| 146 | + .package(path: "../swift-system"), |
| 147 | + .package(path: "../swift-nio"), |
| 148 | + .package(path: "../swift-log"), |
| 149 | + ] |
| 150 | +} |
| 151 | + |
| 152 | +#if !os(Windows) |
| 153 | + // Add build tool plugins only for non-Windows platforms |
| 154 | + package.products.append(contentsOf: [ |
| 155 | + .plugin(name: "WITOverlayPlugin", targets: ["WITOverlayPlugin"]), |
| 156 | + .plugin(name: "WITExtractorPlugin", targets: ["WITExtractorPlugin"]), |
| 157 | + ]) |
| 158 | + |
| 159 | + package.targets.append(contentsOf: [ |
| 160 | + .plugin(name: "WITOverlayPlugin", capability: .buildTool(), dependencies: ["WITTool"]), |
| 161 | + .plugin(name: "GenerateOverlayForTesting", capability: .buildTool(), dependencies: ["WITTool"]), |
| 162 | + .testTarget( |
| 163 | + name: "WITOverlayGeneratorTests", |
| 164 | + dependencies: ["WITOverlayGenerator", "WasmKit", "WasmKitWASI"], |
| 165 | + exclude: ["Fixtures", "Compiled", "Generated", "EmbeddedSupport"], |
| 166 | + plugins: [.plugin(name: "GenerateOverlayForTesting")] |
| 167 | + ), |
| 168 | + .plugin( |
| 169 | + name: "WITExtractorPlugin", |
| 170 | + capability: .command( |
| 171 | + intent: .custom(verb: "extract-wit", description: "Extract WIT definition from Swift module"), |
| 172 | + permissions: [] |
| 173 | + ), |
| 174 | + dependencies: ["WITTool"] |
| 175 | + ), |
| 176 | + .testTarget( |
| 177 | + name: "WITExtractorPluginTests", |
| 178 | + exclude: ["Fixtures"] |
| 179 | + ), |
| 180 | + |
| 181 | + .target( |
| 182 | + name: "WasmKitGDBHandler", |
| 183 | + dependencies: [ |
| 184 | + .product(name: "_NIOFileSystem", package: "swift-nio"), |
| 185 | + .product(name: "NIOCore", package: "swift-nio"), |
| 186 | + .product(name: "SystemPackage", package: "swift-system"), |
| 187 | + "WasmKit", |
| 188 | + "WasmKitWASI", |
| 189 | + "GDBRemoteProtocol", |
| 190 | + ], |
| 191 | + ), |
| 192 | + ]) |
| 193 | +#endif |
0 commit comments