-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathio.arrow-kt.arrow-gradle-config-kotlin.gradle.kts
120 lines (102 loc) · 3.6 KB
/
io.arrow-kt.arrow-gradle-config-kotlin.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
group = property("projects.group").toString()
tasks {
withType<Test>().configureEach {
maxParallelForks = Runtime.getRuntime().availableProcessors()
useJUnitPlatform()
testLogging {
setExceptionFormat("full")
setEvents(listOf("passed", "skipped", "failed", "standardOut", "standardError"))
}
}
named("clean") { doFirst { delete("$projectDir/../../../arrow-site/docs/apidocs") } }
}
configure<KotlinProjectExtension> {
explicitApi()
}
configure<JavaPluginExtension> {
toolchain {
languageVersion.set(JavaLanguageVersion.of(8))
}
}
val enable_wasm = (project.rootProject.properties["enable_wasm"] as? String).toBoolean()
if (isKotlinMultiplatform) {
configure<KotlinMultiplatformExtension> {
jvm {
// Fix JVM target ignores Java sources and compiles only Kotlin source files.
withJava()
}
js(IR) {
browser()
nodejs()
}
if (enable_wasm) {
@OptIn(ExperimentalWasmDsl::class) wasmJs()
}
// Native: https://kotlinlang.org/docs/native-target-support.html
// -- Tier 1 --
linuxX64()
macosX64()
macosArm64()
iosSimulatorArm64()
iosX64()
// -- Tier 2 --
linuxArm64()
watchosSimulatorArm64()
watchosX64()
watchosArm32()
watchosArm64()
tvosSimulatorArm64()
tvosX64()
tvosArm64()
iosArm64()
// -- Tier 3 --
mingwX64()
// Android and watchOS not included
// -- Deprecated as of 1.8.20 --
// iosArm32() // deprecated as of 1.8.20
// watchosX86()
sourceSets {
val commonMain by getting
val commonTest by getting
val nonJvmMain by creating { dependsOn(commonMain) }
val nonJvmTest by creating { dependsOn(commonTest) }
val nativeMain by creating { dependsOn(nonJvmMain) }
val nativeTest by creating { dependsOn(nonJvmTest) }
// Native
// -- Tier 1 --
val linuxX64Main by getting { dependsOn(nativeMain) }
val macosX64Main by getting { dependsOn(nativeMain) }
val macosArm64Main by getting { dependsOn(nativeMain) }
val iosSimulatorArm64Main by getting { dependsOn(nativeMain) }
val iosX64Main by getting { dependsOn(nativeMain) }
// -- Tier 2 --
val linuxArm64Main by getting { dependsOn(nativeMain) }
val watchosSimulatorArm64Main by getting { dependsOn(nativeMain) }
val watchosX64Main by getting { dependsOn(nativeMain) }
val watchosArm32Main by getting { dependsOn(nativeMain) }
val watchosArm64Main by getting { dependsOn(nativeMain) }
val tvosSimulatorArm64Main by getting { dependsOn(nativeMain) }
val tvosX64Main by getting { dependsOn(nativeMain) }
val tvosArm64Main by getting { dependsOn(nativeMain) }
val iosArm64Main by getting { dependsOn(nativeMain) }
// -- Tier 3 --
val mingwX64Main by getting { dependsOn(nativeMain) }
val jsMain by getting { dependsOn(nonJvmMain) }
val jsTest by getting { dependsOn(nonJvmTest) }
if (enable_wasm) {
val wasmJsMain by getting { dependsOn(nonJvmMain) }
val wasmJsTest by getting { dependsOn(nonJvmTest) }
}
}
}
}
if (isKotlinJvm) {
configurations.all { resolutionStrategy.cacheChangingModulesFor(0, "seconds") }
}
internal val Project.isKotlinJvm: Boolean
get() = pluginManager.hasPlugin("org.jetbrains.kotlin.jvm")
internal val Project.isKotlinMultiplatform: Boolean
get() = pluginManager.hasPlugin("org.jetbrains.kotlin.multiplatform")