1*68017707SAndroid Build Coastguard Worker/* 2*68017707SAndroid Build Coastguard Worker * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3*68017707SAndroid Build Coastguard Worker */ 4*68017707SAndroid Build Coastguard Worker 5*68017707SAndroid Build Coastguard Workerimport org.jetbrains.kotlin.konan.target.HostManager 6*68017707SAndroid Build Coastguard Worker 7*68017707SAndroid Build Coastguard Workerbuildscript { 8*68017707SAndroid Build Coastguard Worker def overridingKotlinVersion = KotlinConfiguration.getOverridingKotlinVersion(project) 9*68017707SAndroid Build Coastguard Worker if (overridingKotlinVersion != null) { project.kotlin_version = overridingKotlinVersion } 10*68017707SAndroid Build Coastguard Worker 11*68017707SAndroid Build Coastguard Worker /* 12*68017707SAndroid Build Coastguard Worker * This property group is used to build kotlinx.atomicfu against Kotlin compiler snapshots. 13*68017707SAndroid Build Coastguard Worker * When build_snapshot_train is set to true, kotlin_version property is overridden with kotlin_snapshot_version. 14*68017707SAndroid Build Coastguard Worker * Additionally, mavenLocal and Sonatype snapshots are added to repository list 15*68017707SAndroid Build Coastguard Worker * (the former is required for AFU and public, the latter is required for compiler snapshots). 16*68017707SAndroid Build Coastguard Worker * DO NOT change the name of these properties without adapting kotlinx.train build chain. 17*68017707SAndroid Build Coastguard Worker */ 18*68017707SAndroid Build Coastguard Worker def buildSnapshotTrainGradleProperty = project.findProperty("build_snapshot_train") 19*68017707SAndroid Build Coastguard Worker ext.build_snapshot_train = buildSnapshotTrainGradleProperty != null && buildSnapshotTrainGradleProperty != "" 20*68017707SAndroid Build Coastguard Worker if (build_snapshot_train) { 21*68017707SAndroid Build Coastguard Worker project.kotlin_version = project.findProperty("kotlin_snapshot_version") 22*68017707SAndroid Build Coastguard Worker if (project.kotlin_version == null) { 23*68017707SAndroid Build Coastguard Worker throw new IllegalArgumentException("'kotlin_snapshot_version' should be defined when building with a snapshot compiler") 24*68017707SAndroid Build Coastguard Worker } 25*68017707SAndroid Build Coastguard Worker repositories { 26*68017707SAndroid Build Coastguard Worker maven { url "https://oss.sonatype.org/content/repositories/snapshots" } 27*68017707SAndroid Build Coastguard Worker } 28*68017707SAndroid Build Coastguard Worker } 29*68017707SAndroid Build Coastguard Worker 30*68017707SAndroid Build Coastguard Worker repositories { 31*68017707SAndroid Build Coastguard Worker mavenCentral() 32*68017707SAndroid Build Coastguard Worker gradlePluginPortal() 33*68017707SAndroid Build Coastguard Worker KotlinConfiguration.addCustomKotlinRepositoryIfEnabled(delegate, project) 34*68017707SAndroid Build Coastguard Worker } 35*68017707SAndroid Build Coastguard Worker 36*68017707SAndroid Build Coastguard Worker dependencies { 37*68017707SAndroid Build Coastguard Worker classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 38*68017707SAndroid Build Coastguard Worker classpath "com.github.node-gradle:gradle-node-plugin:$gradle_node_version" 39*68017707SAndroid Build Coastguard Worker } 40*68017707SAndroid Build Coastguard Worker 41*68017707SAndroid Build Coastguard Worker ext.native_targets_enabled = !project.hasProperty("disable_native_targets") 42*68017707SAndroid Build Coastguard Worker} 43*68017707SAndroid Build Coastguard Worker 44*68017707SAndroid Build Coastguard Workerplugins { 45*68017707SAndroid Build Coastguard Worker id 'org.jetbrains.kotlinx.binary-compatibility-validator' version '0.13.2' 46*68017707SAndroid Build Coastguard Worker} 47*68017707SAndroid Build Coastguard Worker 48*68017707SAndroid Build Coastguard Workerallprojects { 49*68017707SAndroid Build Coastguard Worker // the only place where HostManager could be instantiated 50*68017707SAndroid Build Coastguard Worker project.ext.hostManager = new HostManager() 51*68017707SAndroid Build Coastguard Worker 52*68017707SAndroid Build Coastguard Worker def overridingKotlinVersion = KotlinConfiguration.getOverridingKotlinVersion(project) 53*68017707SAndroid Build Coastguard Worker if (overridingKotlinVersion != null) { project.kotlin_version = overridingKotlinVersion } 54*68017707SAndroid Build Coastguard Worker 55*68017707SAndroid Build Coastguard Worker if (build_snapshot_train) { 56*68017707SAndroid Build Coastguard Worker project.kotlin_version = project.findProperty("kotlin_snapshot_version") 57*68017707SAndroid Build Coastguard Worker repositories { 58*68017707SAndroid Build Coastguard Worker maven { url "https://oss.sonatype.org/content/repositories/snapshots" } 59*68017707SAndroid Build Coastguard Worker } 60*68017707SAndroid Build Coastguard Worker } 61*68017707SAndroid Build Coastguard Worker 62*68017707SAndroid Build Coastguard Worker logger.info("Using Kotlin compiler ${project.kotlin_version} for project ${project.name}") 63*68017707SAndroid Build Coastguard Worker 64*68017707SAndroid Build Coastguard Worker repositories { 65*68017707SAndroid Build Coastguard Worker mavenCentral() 66*68017707SAndroid Build Coastguard Worker KotlinConfiguration.addCustomKotlinRepositoryIfEnabled(delegate, project) 67*68017707SAndroid Build Coastguard Worker } 68*68017707SAndroid Build Coastguard Worker 69*68017707SAndroid Build Coastguard Worker def deployVersion = project.findProperty("DeployVersion") 70*68017707SAndroid Build Coastguard Worker if (deployVersion != null) project.version = deployVersion 71*68017707SAndroid Build Coastguard Worker 72*68017707SAndroid Build Coastguard Worker // atomicfu-native check is a kludge so that existing YouTrack config works, todo: remove 73*68017707SAndroid Build Coastguard Worker if (project != rootProject && project.name != "atomicfu-native") { 74*68017707SAndroid Build Coastguard Worker apply from: rootProject.file("gradle/publishing.gradle") 75*68017707SAndroid Build Coastguard Worker } 76*68017707SAndroid Build Coastguard Worker 77*68017707SAndroid Build Coastguard Worker // this fixes "org.gradle.jvm.version" in Gradle metadata 78*68017707SAndroid Build Coastguard Worker plugins.withType(JavaPlugin).configureEach { 79*68017707SAndroid Build Coastguard Worker java { 80*68017707SAndroid Build Coastguard Worker toolchain { 81*68017707SAndroid Build Coastguard Worker languageVersion.set(JavaLanguageVersion.of(8)) 82*68017707SAndroid Build Coastguard Worker } 83*68017707SAndroid Build Coastguard Worker } 84*68017707SAndroid Build Coastguard Worker } 85*68017707SAndroid Build Coastguard Worker 86*68017707SAndroid Build Coastguard Worker tasks.withType(org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile).configureEach { 87*68017707SAndroid Build Coastguard Worker compilerOptions { freeCompilerArgs.add("-Xpartial-linkage-loglevel=ERROR") } 88*68017707SAndroid Build Coastguard Worker } 89*68017707SAndroid Build Coastguard Worker tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile).configureEach { 90*68017707SAndroid Build Coastguard Worker compilerOptions { freeCompilerArgs.add("-Xpartial-linkage-loglevel=ERROR") } 91*68017707SAndroid Build Coastguard Worker } 92*68017707SAndroid Build Coastguard Worker} 93*68017707SAndroid Build Coastguard Worker 94*68017707SAndroid Build Coastguard Workerif (build_snapshot_train) { 95*68017707SAndroid Build Coastguard Worker afterEvaluate { 96*68017707SAndroid Build Coastguard Worker println "Manifest of kotlin-compiler-embeddable.jar for atomicfu" 97*68017707SAndroid Build Coastguard Worker configure(subprojects.findAll { it.name == "atomicfu" }) { 98*68017707SAndroid Build Coastguard Worker configurations.matching { it.name == "kotlinCompilerClasspath" }.configureEach { 99*68017707SAndroid Build Coastguard Worker resolvedConfiguration.getFiles().findAll { it.name.contains("kotlin-compiler-embeddable") }.each { 100*68017707SAndroid Build Coastguard Worker def manifest = zipTree(it).matching { 101*68017707SAndroid Build Coastguard Worker include 'META-INF/MANIFEST.MF' 102*68017707SAndroid Build Coastguard Worker }.getFiles().first() 103*68017707SAndroid Build Coastguard Worker 104*68017707SAndroid Build Coastguard Worker manifest.readLines().each { 105*68017707SAndroid Build Coastguard Worker println it 106*68017707SAndroid Build Coastguard Worker } 107*68017707SAndroid Build Coastguard Worker } 108*68017707SAndroid Build Coastguard Worker } 109*68017707SAndroid Build Coastguard Worker } 110*68017707SAndroid Build Coastguard Worker } 111*68017707SAndroid Build Coastguard Worker} 112*68017707SAndroid Build Coastguard Worker 113*68017707SAndroid Build Coastguard Worker// main deployment task 114*68017707SAndroid Build Coastguard Workertask deploy(dependsOn: getTasksByName("publish", true) + getTasksByName("publishNpm", true)) 115*68017707SAndroid Build Coastguard Worker 116*68017707SAndroid Build Coastguard Worker// Right now it is used for switching nodejs version which is supports generated wasm bytecode 117*68017707SAndroid Build Coastguard Workerextensions.findByType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension.class).with { 118*68017707SAndroid Build Coastguard Worker // canary nodejs that supports recent Wasm GC changes 119*68017707SAndroid Build Coastguard Worker it.nodeVersion = '21.0.0-v8-canary202309167e82ab1fa2' 120*68017707SAndroid Build Coastguard Worker it.nodeDownloadBaseUrl = 'https://nodejs.org/download/v8-canary' 121*68017707SAndroid Build Coastguard Worker} 122*68017707SAndroid Build Coastguard Worker 123*68017707SAndroid Build Coastguard Worker// We need to ignore unsupported engines (i.e. canary) for npm 124*68017707SAndroid Build Coastguard Workertasks.withType(org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask).configureEach { 125*68017707SAndroid Build Coastguard Worker args.add("--ignore-engines") 126*68017707SAndroid Build Coastguard Worker} 127