xref: /aosp_15_r20/external/kotlinx.atomicfu/build.gradle (revision 68017707106cb9da9fed635c150bc497c09c160f)
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