1
+ import kotlinx.team.infra.mavenPublicationsPom
2
+
3
+ plugins {
4
+ id(" kotlin-multiplatform" )
5
+ `maven- publish`
6
+ kotlin(" plugin.serialization" ) version " 1.9.21"
7
+ }
8
+
9
+ base {
10
+ archivesBaseName = " kotlinx-collections-immutable-serialization" // doesn't work
11
+ }
12
+
13
+ mavenPublicationsPom {
14
+ description.set(" Kotlin Immutable Collections serializers" )
15
+ }
16
+
17
+ kotlin {
18
+ applyDefaultHierarchyTemplate()
19
+ explicitApi()
20
+
21
+ // According to https://kotlinlang.org/docs/native-target-support.html
22
+ // Tier 1
23
+ linuxX64()
24
+ macosX64()
25
+ macosArm64()
26
+ iosSimulatorArm64()
27
+ iosX64()
28
+
29
+ // Tier 2
30
+ linuxArm64()
31
+ watchosSimulatorArm64()
32
+ watchosX64()
33
+ watchosArm32()
34
+ watchosArm64()
35
+ tvosSimulatorArm64()
36
+ tvosX64()
37
+ tvosArm64()
38
+ iosArm64()
39
+
40
+ // Tier 3
41
+ androidNativeArm32()
42
+ androidNativeArm64()
43
+ androidNativeX86()
44
+ androidNativeX64()
45
+ mingwX64()
46
+ watchosDeviceArm64()
47
+
48
+ jvm {
49
+ compilations.all {
50
+ kotlinOptions {
51
+ jvmTarget = " 1.8"
52
+ }
53
+ }
54
+ }
55
+
56
+ js {
57
+ nodejs {
58
+ testTask {
59
+ useMocha {
60
+ timeout = " 30000"
61
+ }
62
+ }
63
+ }
64
+ compilations.all {
65
+ kotlinOptions {
66
+ sourceMap = true
67
+ moduleKind = " umd"
68
+ metaInfo = true
69
+ }
70
+ }
71
+ }
72
+
73
+ wasmJs {
74
+ nodejs {
75
+ testTask {
76
+ useMocha {
77
+ timeout = " 30000"
78
+ }
79
+ }
80
+ }
81
+ }
82
+
83
+ wasmWasi {
84
+ nodejs {
85
+ testTask {
86
+ useMocha {
87
+ timeout = " 30000"
88
+ }
89
+ }
90
+ }
91
+ }
92
+
93
+ sourceSets.all {
94
+ kotlin.setSrcDirs(listOf (" $name /src" ))
95
+ resources.setSrcDirs(listOf (" $name /resources" ))
96
+ languageSettings.apply {
97
+ // progressiveMode = true
98
+ optIn(" kotlin.RequiresOptIn" )
99
+ }
100
+ }
101
+
102
+ sourceSets {
103
+ val commonMain by getting {
104
+ dependencies {
105
+ implementation(" org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" )
106
+ implementation(project(" :kotlinx-collections-immutable" ))
107
+ }
108
+ }
109
+ val commonTest by getting {
110
+ dependencies {
111
+ implementation(kotlin(" test" ))
112
+ }
113
+ }
114
+
115
+ val jvmMain by getting {
116
+ }
117
+ val jvmTest by getting {
118
+ dependencies {
119
+ implementation(" com.google.guava:guava-testlib:18.0" )
120
+ }
121
+ }
122
+
123
+ val jsMain by getting {
124
+ }
125
+ val jsTest by getting {
126
+ }
127
+
128
+ val wasmMain by creating {
129
+ dependsOn(commonMain)
130
+ }
131
+ val wasmTest by creating {
132
+ dependsOn(commonTest)
133
+ }
134
+
135
+ val wasmJsMain by getting {
136
+ dependsOn(wasmMain)
137
+ }
138
+ val wasmJsTest by getting {
139
+ dependsOn(wasmTest)
140
+ }
141
+
142
+ val wasmWasiMain by getting {
143
+ dependsOn(wasmMain)
144
+ }
145
+ val wasmWasiTest by getting {
146
+ dependsOn(wasmTest)
147
+ }
148
+
149
+ val nativeMain by getting {
150
+ }
151
+ val nativeTest by getting {
152
+ }
153
+ }
154
+ }
155
+
156
+ tasks {
157
+ named(" jvmTest" , Test ::class ) {
158
+ maxHeapSize = " 1024m"
159
+ }
160
+ }
161
+
162
+ with (org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin .apply (rootProject)) {
163
+ nodeVersion = " 21.0.0-v8-canary202309167e82ab1fa2"
164
+ nodeDownloadBaseUrl = " https://nodejs.org/download/v8-canary"
165
+ }
166
+
167
+ // Drop this when node js version become stable
168
+ tasks.withType< org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask > ().configureEach {
169
+ args.add(" --ignore-engines" )
170
+ }
0 commit comments