Tokamak/Package.swift

186 lines
4.9 KiB
Swift
Raw Normal View History

// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to
// build this package.
2018-12-07 19:21:37 +08:00
import PackageDescription
let package = Package(
name: "Tokamak",
platforms: [
.macOS(.v11),
.iOS(.v13),
],
2018-12-29 05:54:16 +08:00
products: [
// Products define the executables and libraries produced by a package,
// and make them visible to other packages.
2020-06-17 07:58:10 +08:00
.executable(
name: "TokamakDemo",
targets: ["TokamakDemo"]
),
2018-12-29 05:54:16 +08:00
.library(
2020-06-23 06:01:11 +08:00
name: "TokamakDOM",
targets: ["TokamakDOM"]
2018-12-29 05:54:16 +08:00
),
.library(
name: "TokamakStaticHTML",
targets: ["TokamakStaticHTML"]
),
.executable(
name: "TokamakStaticDemo",
targets: ["TokamakStaticDemo"]
),
.library(
name: "TokamakGTK",
targets: ["TokamakGTK"]
),
.executable(
name: "TokamakGTKDemo",
targets: ["TokamakGTKDemo"]
),
.library(
name: "TokamakShim",
targets: ["TokamakShim"]
),
.executable(
name: "TokamakStaticHTMLBenchmark",
targets: ["TokamakStaticHTMLBenchmark"]
),
2018-12-29 05:54:16 +08:00
],
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.10.0")
),
.package(url: "https://github.com/TokamakUI/OpenCombine.git", from: "0.12.0-alpha3"),
.package(url: "https://github.com/swiftwasm/OpenCombineJS.git", .upToNextMinor(from: "0.1.0")),
.package(name: "Benchmark", url: "https://github.com/google/swift-benchmark", from: "0.1.0"),
2018-12-29 05:54:16 +08:00
],
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])
)]
),
2018-12-29 05:54:16 +08:00
.target(
2020-06-23 18:47:54 +08:00
name: "TokamakCore",
dependencies: ["CombineShim"]
2018-12-29 05:54:16 +08:00
),
.target(
name: "TokamakShim",
dependencies: [
.target(name: "TokamakDOM", condition: .when(platforms: [.wasi])),
.target(name: "TokamakGTK", condition: .when(platforms: [.linux])),
]
),
.systemLibrary(
name: "CGTK",
pkgConfig: "gtk+-3.0",
providers: [
.apt(["libgtk+-3.0", "gtk+-3.0"]),
// .yum(["gtk3-devel"]),
.brew(["gtk+3"]),
]
),
.systemLibrary(
name: "CGDK",
pkgConfig: "gdk-3.0",
providers: [
.apt(["libgtk+-3.0", "gtk+-3.0"]),
// .yum(["gtk3-devel"]),
.brew(["gtk+3"]),
]
),
.target(
name: "TokamakGTKCHelpers",
dependencies: ["CGTK"]
),
.target(
name: "TokamakGTK",
dependencies: ["TokamakCore", "CGTK", "CGDK", "TokamakGTKCHelpers", "CombineShim"]
),
.target(
name: "TokamakGTKDemo",
dependencies: ["TokamakGTK"],
resources: [.copy("logo-header.png")]
),
.target(
name: "TokamakStaticHTML",
dependencies: [
"TokamakCore",
]
),
.target(
name: "TokamakCoreBenchmark",
dependencies: [
"Benchmark",
"TokamakCore",
]
),
.target(
name: "TokamakStaticHTMLBenchmark",
dependencies: [
"Benchmark",
"TokamakStaticHTML",
]
),
.target(
name: "TokamakDOM",
dependencies: [
"CombineShim",
"OpenCombineJS",
"TokamakCore",
"TokamakStaticHTML",
.product(
name: "JavaScriptKit",
package: "JavaScriptKit",
condition: .when(platforms: [.wasi])
2020-11-09 20:27:17 +08:00
),
]
),
.target(
name: "TokamakDemo",
dependencies: [
"TokamakShim",
.product(
name: "JavaScriptKit",
package: "JavaScriptKit",
condition: .when(platforms: [.wasi])
2020-11-09 20:27:17 +08:00
),
],
resources: [.copy("logo-header.png")]
),
.target(
name: "TokamakStaticDemo",
dependencies: [
"TokamakStaticHTML",
]
),
2018-12-29 05:54:16 +08:00
.target(
name: "TokamakTestRenderer",
2020-06-23 18:47:54 +08:00
dependencies: ["TokamakCore"]
2018-12-29 05:54:16 +08:00
),
.testTarget(
name: "TokamakTests",
dependencies: ["TokamakTestRenderer"]
2018-12-29 05:54:16 +08:00
),
// FIXME: re-enable when `ViewDeferredToRenderer` conformance conflicts issue is resolved
// Currently, when multiple modules that have conflicting `ViewDeferredToRenderer`
// implementations are linked in the same binary, only a single one is used with no defined
// behavior for that. We need to replace `ViewDeferredToRenderer` with a different solution
// that isn't prone to these hard to debug errors.
// .testTarget(
// name: "TokamakStaticHTMLTests",
// dependencies: ["TokamakStaticHTML"]
// ),
2018-12-29 05:54:16 +08:00
]
2018-12-07 19:21:37 +08:00
)