1
+ @file:OptIn(ExperimentalWasmDsl ::class )
2
+
3
+ import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
4
+
1
5
plugins {
2
- kotlin(" multiplatform" ) version " 2.0.20 "
3
- id(" org.jetbrains.dokka" ) version " 1.9.20 "
6
+ kotlin(" multiplatform" ) version " 2.1.0 "
7
+ id(" org.jetbrains.dokka" ) version " 2.0.0 "
4
8
id(" io.kotest.multiplatform" ) version " 5.9.1"
5
9
id(" io.github.gradle-nexus.publish-plugin" ) version " 1.3.0"
6
10
`maven- publish`
7
11
signing
8
12
}
9
13
10
14
group = " io.github.devngho"
11
- version = " 0.2.3 "
15
+ version = " 0.2.4 "
12
16
13
17
repositories {
14
18
mavenCentral()
@@ -22,6 +26,23 @@ val javadocJar: TaskProvider<Jar> by tasks.registering(Jar::class) {
22
26
from(dokkaHtml.outputDirectory)
23
27
}
24
28
29
+ // copied from ionspin/kotlin-multiplatform-bignum (at build.gradle.kts), Apache 2.0
30
+ enum class HostOs {
31
+ LINUX , WINDOWS , MAC
32
+ }
33
+
34
+
35
+ fun getHostOsName (): HostOs {
36
+ val target = System .getProperty(" os.name" )
37
+ if (target == " Linux" ) return HostOs .LINUX
38
+ if (target.startsWith(" Windows" )) return HostOs .WINDOWS
39
+ if (target.startsWith(" Mac" )) return HostOs .MAC
40
+ throw GradleException (" Unknown OS: $target " )
41
+ }
42
+
43
+ val hostOs = getHostOsName()
44
+ // copy end
45
+
25
46
kotlin {
26
47
publishing {
27
48
signing {
@@ -92,18 +113,42 @@ kotlin {
92
113
}
93
114
}
94
115
95
- val hostOs = System .getProperty(" os.name" )
96
- val isMingwX64 = hostOs.startsWith(" Windows" )
97
-
98
- when {
99
- hostOs == " Mac OS X" -> macosX64()
100
- hostOs == " Linux" -> linuxX64()
101
- isMingwX64 -> mingwX64()
102
- else -> throw GradleException (" Host OS is not supported in Kotlin/Native." )
116
+ // copied from ionspin/kotlin-multiplatform-bignum (at build.gradle.kts), Apache 2.0
117
+ // removed watchosDeviceArm64 and modified js
118
+ js {
119
+ nodejs()
120
+ browser()
103
121
}
122
+ linuxX64()
123
+ linuxArm64()
124
+ androidNativeX64()
125
+ androidNativeX86()
126
+ androidNativeArm32()
127
+ androidNativeArm64()
128
+ iosX64()
129
+ iosArm64()
130
+ iosSimulatorArm64()
131
+ macosX64()
132
+ macosArm64()
133
+ tvosArm64()
134
+ tvosSimulatorArm64()
135
+ tvosX64()
136
+ watchosArm32()
137
+ watchosArm64()
138
+ watchosX64()
139
+ watchosSimulatorArm64()
140
+ mingwX64()
141
+ // copy end
104
142
105
143
jvm()
106
144
145
+ wasmJs {
146
+ browser()
147
+ nodejs()
148
+ d8()
149
+ }
150
+ wasmWasi()
151
+
107
152
sourceSets {
108
153
val kotestVersion = " 5.9.1"
109
154
@@ -121,28 +166,182 @@ kotlin {
121
166
}
122
167
123
168
tasks {
124
- getByName(" signKotlinMultiplatformPublication" ) {
125
- dependsOn(" publishJvmPublicationToSonatypeRepository" , " publishJvmPublicationToMavenLocal" )
126
- }
169
+ // copied from ionspin/kotlin-multiplatform-bignum (at build.gradle.kts), Apache 2.0
170
+ // fixed for correct task dependencies in this project
171
+ all {
172
+ if (hostOs == HostOs .MAC ) {
173
+ // macOS task dependencies
174
+ // @formatter:off
175
+ when (this .name) {
176
+ " signAndroidNativeArm32Publication" -> { this .mustRunAfter(" signAndroidNativeArm64Publication" ) }
177
+ " signAndroidNativeArm64Publication" -> { this .mustRunAfter(" signAndroidNativeX64Publication" ) }
178
+ " signAndroidNativeX64Publication" -> { this .mustRunAfter(" signAndroidNativeX86Publication" ) }
179
+ " signAndroidNativeX86Publication" -> { this .mustRunAfter(" signJsPublication" ) }
180
+ " signJsPublication" -> { this .mustRunAfter(" signJvmPublication" ) }
181
+ " signJvmPublication" -> { this .mustRunAfter(" signKotlinMultiplatformPublication" ) }
182
+ " signKotlinMultiplatformPublication" -> { this .mustRunAfter(" signLinuxArm64Publication" ) }
183
+ " signLinuxArm64Publication" -> { this .mustRunAfter(" signLinuxX64Publication" ) }
184
+ " signLinuxX64Publication" -> { this .mustRunAfter(" signWasmJsPublication" ) }
185
+ " signWasmJsPublication" -> { this .mustRunAfter(" signWasmWasiPublication" ) }
186
+ " signWasmWasiPublication" -> { this .mustRunAfter(" signMingwX64Publication" ) }
187
+ " signMingwX64Publication" -> { this .mustRunAfter(" signIosArm64Publication" ) }
188
+ " signIosArm64Publication" -> { this .mustRunAfter(" signIosSimulatorArm64Publication" ) }
189
+ " signIosSimulatorArm64Publication" -> { this .mustRunAfter(" signIosX64Publication" ) }
190
+ " signIosX64Publication" -> { this .mustRunAfter(" signMacosArm64Publication" ) }
191
+ " signMacosArm64Publication" -> { this .mustRunAfter(" signMacosX64Publication" ) }
192
+ " signMacosX64Publication" -> { this .mustRunAfter(" signTvosArm64Publication" ) }
193
+ " signTvosArm64Publication" -> { this .mustRunAfter(" signTvosSimulatorArm64Publication" ) }
194
+ " signTvosSimulatorArm64Publication" -> { this .mustRunAfter(" signTvosX64Publication" ) }
195
+ " signTvosX64Publication" -> { this .mustRunAfter(" signWatchosArm32Publication" ) }
196
+ " signWatchosArm32Publication" -> { this .mustRunAfter(" signWatchosArm64Publication" ) }
197
+ " signWatchosArm64Publication" -> { this .mustRunAfter(" signWatchosSimulatorArm64Publication" ) }
198
+ " signWatchosSimulatorArm64Publication" -> { this .mustRunAfter(" signWatchosX64Publication" ) }
199
+ }
200
+ // @formatter:on
127
201
128
- val hostOs = System .getProperty(" os.name" )
129
- val isMingwX64 = hostOs.startsWith(" Windows" )
130
- val nativeTargets = mutableListOf<String >()
131
-
132
- if (hostOs == " Mac OS X" ) nativeTargets.add(" MacosX64" )
133
- if (hostOs == " Linux" ) nativeTargets.add(" LinuxX64" )
134
- if (isMingwX64) nativeTargets.add(" MingwX64" )
135
-
136
- nativeTargets.forEach { target ->
137
- getByName(" sign${target} Publication" ) {
138
- dependsOn(
139
- " publishJvmPublicationToSonatypeRepository" ,
140
- " publishJvmPublicationToMavenLocal" ,
141
- " publishKotlinMultiplatformPublicationToMavenLocal" ,
142
- " publishKotlinMultiplatformPublicationToSonatypeRepository"
143
- )
202
+ if (this .name.startsWith(" publish" )) {
203
+ this .mustRunAfter(" signAndroidNativeArm32Publication" )
204
+ this .mustRunAfter(" signAndroidNativeArm64Publication" )
205
+ this .mustRunAfter(" signAndroidNativeX64Publication" )
206
+ this .mustRunAfter(" signAndroidNativeX86Publication" )
207
+ this .mustRunAfter(" signJsPublication" )
208
+ this .mustRunAfter(" signJvmPublication" )
209
+ this .mustRunAfter(" signKotlinMultiplatformPublication" )
210
+ this .mustRunAfter(" signLinuxArm64Publication" )
211
+ this .mustRunAfter(" signLinuxX64Publication" )
212
+ this .mustRunAfter(" signWasmJsPublication" )
213
+ this .mustRunAfter(" signWasmWasiPublication" )
214
+ this .mustRunAfter(" signMingwX64Publication" )
215
+ this .mustRunAfter(" signIosArm64Publication" )
216
+ this .mustRunAfter(" signIosSimulatorArm64Publication" )
217
+ this .mustRunAfter(" signIosX64Publication" )
218
+ this .mustRunAfter(" signMacosArm64Publication" )
219
+ this .mustRunAfter(" signMacosX64Publication" )
220
+ this .mustRunAfter(" signTvosArm64Publication" )
221
+ this .mustRunAfter(" signTvosSimulatorArm64Publication" )
222
+ this .mustRunAfter(" signTvosX64Publication" )
223
+ this .mustRunAfter(" signWatchosArm32Publication" )
224
+ this .mustRunAfter(" signWatchosArm64Publication" )
225
+ this .mustRunAfter(" signWatchosSimulatorArm64Publication" )
226
+ this .mustRunAfter(" signWatchosX64Publication" )
227
+ }
228
+
229
+ if (this .name.startsWith(" compileTest" )) {
230
+ this .mustRunAfter(" signAndroidNativeArm32Publication" )
231
+ this .mustRunAfter(" signAndroidNativeArm64Publication" )
232
+ this .mustRunAfter(" signAndroidNativeX64Publication" )
233
+ this .mustRunAfter(" signAndroidNativeX86Publication" )
234
+ this .mustRunAfter(" signJsPublication" )
235
+ this .mustRunAfter(" signJvmPublication" )
236
+ this .mustRunAfter(" signKotlinMultiplatformPublication" )
237
+ this .mustRunAfter(" signLinuxArm64Publication" )
238
+ this .mustRunAfter(" signLinuxX64Publication" )
239
+ this .mustRunAfter(" signWasmJsPublication" )
240
+ this .mustRunAfter(" signWasmWasiPublication" )
241
+ this .mustRunAfter(" signMingwX64Publication" )
242
+ this .mustRunAfter(" signIosArm64Publication" )
243
+ this .mustRunAfter(" signIosSimulatorArm64Publication" )
244
+ this .mustRunAfter(" signIosX64Publication" )
245
+ this .mustRunAfter(" signMacosArm64Publication" )
246
+ this .mustRunAfter(" signMacosX64Publication" )
247
+ this .mustRunAfter(" signTvosArm64Publication" )
248
+ this .mustRunAfter(" signTvosSimulatorArm64Publication" )
249
+ this .mustRunAfter(" signTvosX64Publication" )
250
+ this .mustRunAfter(" signWatchosArm32Publication" )
251
+ this .mustRunAfter(" signWatchosArm64Publication" )
252
+ this .mustRunAfter(" signWatchosSimulatorArm64Publication" )
253
+ }
254
+ if (this .name.startsWith(" linkDebugTest" )) {
255
+ this .mustRunAfter(" signAndroidNativeArm32Publication" )
256
+ this .mustRunAfter(" signAndroidNativeArm64Publication" )
257
+ this .mustRunAfter(" signAndroidNativeX64Publication" )
258
+ this .mustRunAfter(" signAndroidNativeX86Publication" )
259
+ this .mustRunAfter(" signJsPublication" )
260
+ this .mustRunAfter(" signJvmPublication" )
261
+ this .mustRunAfter(" signKotlinMultiplatformPublication" )
262
+ this .mustRunAfter(" signLinuxArm64Publication" )
263
+ this .mustRunAfter(" signLinuxX64Publication" )
264
+ this .mustRunAfter(" signWasmJsPublication" )
265
+ this .mustRunAfter(" signWasmWasiPublication" )
266
+ this .mustRunAfter(" signMingwX64Publication" )
267
+ this .mustRunAfter(" signIosArm64Publication" )
268
+ this .mustRunAfter(" signIosSimulatorArm64Publication" )
269
+ this .mustRunAfter(" signIosX64Publication" )
270
+ this .mustRunAfter(" signMacosArm64Publication" )
271
+ this .mustRunAfter(" signMacosX64Publication" )
272
+ this .mustRunAfter(" signTvosArm64Publication" )
273
+ this .mustRunAfter(" signTvosSimulatorArm64Publication" )
274
+ this .mustRunAfter(" signTvosX64Publication" )
275
+ this .mustRunAfter(" signWatchosArm32Publication" )
276
+ this .mustRunAfter(" signWatchosArm64Publication" )
277
+ this .mustRunAfter(" signWatchosSimulatorArm64Publication" )
278
+ }
279
+ } else {
280
+ // Windows || linux task dependecies
281
+
282
+ // @formatter:off
283
+ when (this .name) {
284
+ " signAndroidNativeArm32Publication" -> { this .mustRunAfter(" signAndroidNativeArm64Publication" ) }
285
+ " signAndroidNativeArm64Publication" -> { this .mustRunAfter(" signAndroidNativeX64Publication" ) }
286
+ " signAndroidNativeX64Publication" -> { this .mustRunAfter(" signAndroidNativeX86Publication" ) }
287
+ " signAndroidNativeX86Publication" -> { this .mustRunAfter(" signJsPublication" ) }
288
+ " signJsPublication" -> { this .mustRunAfter(" signJvmPublication" ) }
289
+ " signJvmPublication" -> { this .mustRunAfter(" signKotlinMultiplatformPublication" ) }
290
+ " signKotlinMultiplatformPublication" -> { this .mustRunAfter(" signLinuxArm64Publication" ) }
291
+ " signLinuxArm64Publication" -> { this .mustRunAfter(" signLinuxX64Publication" ) }
292
+ " signLinuxX64Publication" -> { this .mustRunAfter(" signWasmJsPublication" ) }
293
+ " signWasmJsPublication" -> { this .mustRunAfter(" signWasmWasiPublication" ) }
294
+ " signWasmWasiPublication" -> { this .mustRunAfter(" signMingwX64Publication" ) }
295
+ }
296
+ // @formatter:on
297
+
298
+ if (this .name.startsWith(" publish" )) {
299
+ this .mustRunAfter(" signAndroidNativeArm32Publication" )
300
+ this .mustRunAfter(" signAndroidNativeArm64Publication" )
301
+ this .mustRunAfter(" signAndroidNativeX64Publication" )
302
+ this .mustRunAfter(" signAndroidNativeX86Publication" )
303
+ this .mustRunAfter(" signJsPublication" )
304
+ this .mustRunAfter(" signJvmPublication" )
305
+ this .mustRunAfter(" signKotlinMultiplatformPublication" )
306
+ this .mustRunAfter(" signLinuxArm64Publication" )
307
+ this .mustRunAfter(" signLinuxX64Publication" )
308
+ this .mustRunAfter(" signWasmJsPublication" )
309
+ this .mustRunAfter(" signWasmWasiPublication" )
310
+ this .mustRunAfter(" signMingwX64Publication" )
311
+ }
312
+
313
+ if (this .name.startsWith(" compileTest" )) {
314
+ this .mustRunAfter(" signAndroidNativeArm32Publication" )
315
+ this .mustRunAfter(" signAndroidNativeArm64Publication" )
316
+ this .mustRunAfter(" signAndroidNativeX64Publication" )
317
+ this .mustRunAfter(" signAndroidNativeX86Publication" )
318
+ this .mustRunAfter(" signJsPublication" )
319
+ this .mustRunAfter(" signJvmPublication" )
320
+ this .mustRunAfter(" signKotlinMultiplatformPublication" )
321
+ this .mustRunAfter(" signLinuxArm64Publication" )
322
+ this .mustRunAfter(" signLinuxX64Publication" )
323
+ this .mustRunAfter(" signWasmJsPublication" )
324
+ this .mustRunAfter(" signWasmWasiPublication" )
325
+ this .mustRunAfter(" signMingwX64Publication" )
326
+ }
327
+
328
+ if (this .name.startsWith(" linkDebugTest" )) {
329
+ this .mustRunAfter(" signAndroidNativeArm32Publication" )
330
+ this .mustRunAfter(" signAndroidNativeArm64Publication" )
331
+ this .mustRunAfter(" signAndroidNativeX64Publication" )
332
+ this .mustRunAfter(" signAndroidNativeX86Publication" )
333
+ this .mustRunAfter(" signJsPublication" )
334
+ this .mustRunAfter(" signJvmPublication" )
335
+ this .mustRunAfter(" signKotlinMultiplatformPublication" )
336
+ this .mustRunAfter(" signLinuxArm64Publication" )
337
+ this .mustRunAfter(" signLinuxX64Publication" )
338
+ this .mustRunAfter(" signWasmJsPublication" )
339
+ this .mustRunAfter(" signWasmWasiPublication" )
340
+ this .mustRunAfter(" signMingwX64Publication" )
341
+ }
144
342
}
145
343
}
344
+ // copy end
146
345
147
346
named<Test >(" jvmTest" ) {
148
347
useJUnitPlatform()
0 commit comments