Skip to content

Commit ef2d1ca

Browse files
authored
Split WebAPIKit into modules manually (#46)
New `Module` type is added that specifies dependencies between modules manually. More advanced approaches could be implemented in the future. For example, automated dependency resolution as investigated in #30. Partially resolves #14.
1 parent 19229a9 commit ef2d1ca

33 files changed

+23223
-22491
lines changed

Package.swift

+68-16
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,48 @@
1-
// swift-tools-version:5.3
1+
// swift-tools-version:5.5
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
55

66
let package = Package(
77
name: "WebAPIKit",
8+
platforms: [.macOS(.v10_13)],
89
products: [
910
.executable(
1011
name: "WebAPIKitDemo",
1112
targets: ["WebAPIKitDemo"]
1213
),
1314
.library(
14-
name: "WebAPIKit",
15-
targets: ["WebAPIKit"]
15+
name: "WebAPIBase",
16+
targets: ["WebAPIBase"]
17+
),
18+
.library(
19+
name: "DOM",
20+
targets: ["DOM"]
21+
),
22+
.library(
23+
name: "WebSockets",
24+
targets: ["WebSockets"]
25+
),
26+
.library(
27+
name: "WebAudio",
28+
targets: ["WebAudio"]
29+
),
30+
.library(
31+
name: "WebAnimations",
32+
targets: ["WebAnimations"]
33+
),
34+
.library(
35+
name: "WebGL1",
36+
targets: ["WebGL1"]
37+
),
38+
.library(
39+
name: "WebGL2",
40+
targets: ["WebGL2"]
41+
),
42+
.library(
43+
name: "WebGPU",
44+
targets: ["WebGPU"]
1645
),
17-
.library(name: "WebIDL", targets: ["WebIDL"]),
1846
.executable(name: "WebIDLToSwift", targets: ["WebIDLToSwift"]),
1947
],
2048
dependencies: [
@@ -24,32 +52,56 @@ let package = Package(
2452
),
2553
],
2654
targets: [
27-
.target(
55+
.executableTarget(
2856
name: "WebAPIKitDemo",
29-
dependencies: ["WebAPIKit"]
57+
dependencies: ["DOM", "WebGL2"]
3058
),
3159
.target(
32-
name: "WebAPIKit",
33-
dependencies: [
34-
"ECMAScript",
35-
"JavaScriptKit",
36-
.product(name: "JavaScriptEventLoop", package: "JavaScriptKit"),
37-
.product(name: "JavaScriptBigIntSupport", package: "JavaScriptKit"),
38-
]
60+
name: "WebAPIBase",
61+
dependencies: ["ECMAScript"]
62+
),
63+
.target(
64+
name: "DOM",
65+
dependencies: ["WebAPIBase", "ECMAScript"]
66+
),
67+
.target(
68+
name: "WebSockets",
69+
dependencies: ["DOM", "WebAPIBase", "ECMAScript"]
70+
),
71+
.target(
72+
name: "WebAudio",
73+
dependencies: ["DOM", "WebAPIBase", "ECMAScript"]
74+
),
75+
.target(
76+
name: "WebAnimations",
77+
dependencies: ["DOM", "WebAPIBase", "WebAudio", "ECMAScript"]
78+
),
79+
.target(
80+
name: "WebGL1",
81+
dependencies: ["DOM", "WebAPIBase", "WebAudio", "WebAnimations", "ECMAScript"]
82+
),
83+
.target(
84+
name: "WebGL2",
85+
dependencies: ["DOM", "WebAPIBase", "WebAudio", "WebAnimations", "WebGL1", "ECMAScript"]
86+
),
87+
.target(
88+
name: "WebGPU",
89+
dependencies: ["DOM", "WebAPIBase", "WebAudio", "WebAnimations", "WebGL1", "ECMAScript"]
3990
),
4091
// This support library should be moved to JavaScriptKit
4192
.target(name: "ECMAScript", dependencies: [
4293
"JavaScriptKit",
4394
.product(name: "JavaScriptEventLoop", package: "JavaScriptKit"),
95+
.product(name: "JavaScriptBigIntSupport", package: "JavaScriptKit"),
4496
]),
4597
.target(name: "WebIDL"),
46-
.target(
98+
.executableTarget(
4799
name: "WebIDLToSwift",
48100
dependencies: ["WebIDL"]
49101
),
50102
.testTarget(
51103
name: "WebAPIKitTests",
52-
dependencies: ["WebAPIKit"]
104+
dependencies: ["DOM"]
53105
),
54106
]
55-
)
107+
)

0 commit comments

Comments
 (0)