Tokamak/Package.swift

116 lines
2.9 KiB
Swift

// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to
// build this package.
import PackageDescription
let package = Package(
name: "Tokamak",
platforms: [
.macOS(.v11),
.iOS(.v13),
],
products: [
// Products define the executables and libraries produced by a package,
// and make them visible to other packages.
.executable(
name: "TokamakDemo",
targets: ["TokamakDemo"]
),
.library(
name: "TokamakDOM",
targets: ["TokamakDOM"]
),
.library(
name: "TokamakShim",
targets: ["TokamakShim"]
),
.library(
name: "TokamakStaticHTML",
targets: ["TokamakStaticHTML"]
),
.executable(
name: "TokamakStaticDemo",
targets: ["TokamakStaticDemo"]
),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
.package(
url: "https://github.com/swiftwasm/JavaScriptKit.git",
.upToNextMinor(from: "0.8.0")
),
.package(url: "https://github.com/MaxDesiatov/Runtime.git", from: "2.1.2"),
.package(url: "https://github.com/TokamakUI/OpenCombine.git", from: "0.12.0-alpha2"),
.package(url: "https://github.com/swiftwasm/OpenCombineJS.git", from: "0.0.1"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define
// a module or a test suite.
// Targets can depend on other targets in this package, and on products
// in packages which this package depends on.
.target(
name: "CombineShim",
dependencies: [.product(
name: "OpenCombine",
package: "OpenCombine",
condition: .when(platforms: [.wasi, .linux])
)]
),
.target(
name: "TokamakCore",
dependencies: ["CombineShim", "Runtime"]
),
.target(
name: "TokamakStaticHTML",
dependencies: [
"TokamakCore",
]
),
.target(
name: "TokamakDOM",
dependencies: [
"CombineShim",
"OpenCombineJS",
"TokamakCore",
"TokamakStaticHTML",
.product(
name: "JavaScriptKit",
package: "JavaScriptKit",
condition: .when(platforms: [.wasi])
),
]
),
.target(
name: "TokamakShim",
dependencies: [.target(name: "TokamakDOM", condition: .when(platforms: [.wasi]))]
),
.target(
name: "TokamakDemo",
dependencies: [
"TokamakShim",
.product(
name: "JavaScriptKit",
package: "JavaScriptKit",
condition: .when(platforms: [.wasi])
),
]
),
.target(
name: "TokamakStaticDemo",
dependencies: [
"TokamakStaticHTML",
]
),
.target(
name: "TokamakTestRenderer",
dependencies: ["TokamakCore"]
),
.testTarget(
name: "TokamakTests",
dependencies: ["TokamakTestRenderer"]
),
]
)