[performance] enable project performance
(cherry picked from commit 947c3bd92b2ee8d252619cf987427a7e195191cb)
This commit is contained in:
committed by
Stanislav Erokhin
parent
f2524dbb8d
commit
c9e0928038
@@ -2,36 +2,96 @@ import org.jetbrains.kotlin.RegressionsReporter
|
||||
import org.jetbrains.kotlin.RegressionsSummaryReporter
|
||||
import org.jetbrains.kotlin.BuildRegister
|
||||
import org.jetbrains.kotlin.MPPTools
|
||||
import org.jetbrains.kotlin.UtilsKt
|
||||
import org.jetbrains.kotlin.konan.CompilerVersionKt
|
||||
|
||||
buildscript {
|
||||
ext.rootBuildDirectory = file('..')
|
||||
|
||||
ext {
|
||||
def properties = new java.util.Properties()
|
||||
properties.load(new java.io.FileReader(project.file("../../gradle.properties")))
|
||||
properties.each { k, v->
|
||||
set(k as String, v)
|
||||
}
|
||||
}
|
||||
ext["withoutEmbedabble"] = true
|
||||
MiscKt.kotlinInit(project, findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean())
|
||||
ext["bootstrapKotlinRepo"] = BootstrapKt.getBootstrapKotlinRepo(project)
|
||||
ext["bootstrapKotlinVersion"] = BootstrapKt.getBootstrapKotlinVersion(project)
|
||||
|
||||
apply from: "$rootBuildDirectory/gradle/loadRootProperties.gradle"
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
repositories {
|
||||
maven { url 'https://cache-redirector.jetbrains.com/jcenter'}
|
||||
maven { url 'https://cache-redirector.jetbrains.com/maven-central' }
|
||||
mavenCentral()
|
||||
maven { url buildKotlinCompilerRepo }
|
||||
maven { url kotlinCompilerRepo }
|
||||
jcenter()
|
||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven{ url = "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies" }
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-native-build-tools:$konanVersion"
|
||||
classpath("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.25")
|
||||
}
|
||||
}
|
||||
|
||||
def globalProperties = new java.util.Properties()
|
||||
ext.kotlin_root = project.file("../..").absolutePath
|
||||
project.logger.info("kotlin_root: $kotlin_root")
|
||||
globalProperties.load(new java.io.FileReader(project.file("$kotlin_root/gradle.properties")))
|
||||
ext.kotlinNativeVersionInResources = true
|
||||
//TODO: fix VersionGeneratorKt.kotlinNativeVersionValue(project)
|
||||
def versionString = VersionGeneratorKt.kotlinNativeVersionResourceFile(project).readLines().first()
|
||||
def kotlinNativeVersionObject = CompilerVersionKt.parseCompilerVersion(versionString)
|
||||
|
||||
subprojects { proj ->
|
||||
globalProperties.each { k, v->
|
||||
proj.logger.info("${proj.name}<<<[$k] = $v>>>")
|
||||
proj.ext.set(k as String, v)
|
||||
}
|
||||
MiscKt.kotlinInit(proj, findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() ?: false)
|
||||
proj.ext["bootstrapKotlinRepo"] = BootstrapKt.getBootstrapKotlinRepo(proj)
|
||||
proj.ext["bootstrapKotlinVersion"] = BootstrapKt.getBootstrapKotlinVersion(proj)
|
||||
proj.ext["kotlin.native.home"] = proj.projectDir.relativePath(UtilsKt.getKotlinNativeDist(project))
|
||||
proj.ext["konanVersion"] = kotlinNativeVersionObject.toString()
|
||||
proj.ext["kotlin.native.enabled"] = true
|
||||
proj.logger.info("${proj.name}<<<[kotlin.native.home] = ${proj.ext["kotlin.native.home"]}")
|
||||
proj.logger.info("${proj.name}<<<[konanVersion] = ${proj.ext["konanVersion"]}>>>")
|
||||
|
||||
proj.ext["buildNumber"] = findProperty("build.number")?.toString() ?: defaultSnapshotVersion
|
||||
proj.ext["kotlinVersion"] = findProperty("deployVersion")?.toString()?.identity { deploySnapshotStr ->
|
||||
if (deploySnapshotStr != "default.snapshot") deploySnapshotStr else defaultSnapshotVersion
|
||||
} ?: proj.ext["buildNumber"]
|
||||
|
||||
proj.buildscript.repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url proj.ext["bootstrapKotlinRepo"]
|
||||
}
|
||||
}
|
||||
proj.repositories {
|
||||
maven {
|
||||
url proj.ext["bootstrapKotlinRepo"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def rootBuildDirectory = projectDir.parentFile
|
||||
|
||||
task buildAnalyzer {
|
||||
dependsOn gradle.includedBuild("benchmarksAnalyzer").task(":${getAnalyzerTargetName()}Binaries")
|
||||
}
|
||||
|
||||
task konanRun {
|
||||
dependsOn buildAnalyzer
|
||||
subprojects.each {
|
||||
dependsOn "${it.path}:konanRun"
|
||||
}
|
||||
}
|
||||
|
||||
task jvmRun {
|
||||
dependsOn buildAnalyzer
|
||||
subprojects.each {
|
||||
dependsOn "${it.path}:jvmRun"
|
||||
}
|
||||
@@ -41,6 +101,7 @@ task clean {
|
||||
subprojects.each {
|
||||
dependsOn "${it.path}:clean"
|
||||
}
|
||||
dependsOn gradle.includedBuild("benchmarksAnalyzer").task(":clean")
|
||||
doLast {
|
||||
delete "${buildDir.absolutePath}"
|
||||
}
|
||||
@@ -60,9 +121,6 @@ private static String getAnalyzerTargetName() {
|
||||
private String findAnalyzerBinary() {
|
||||
String result = "${projectDir}/../${analyzerToolDirectory}/${getAnalyzerTargetName()}/" +
|
||||
"${analyzerTool}ReleaseExecutable/${analyzerTool}${MPPTools.getNativeProgramExtension()}"
|
||||
|
||||
if (file(result).exists()) return result
|
||||
else return null
|
||||
}
|
||||
|
||||
// Produce and send slack report.
|
||||
@@ -247,59 +305,65 @@ subprojects.each {
|
||||
|
||||
task teamCityStat(type:Exec) {
|
||||
def analyzer = findAnalyzerBinary()
|
||||
if (analyzer != null) {
|
||||
commandLine "${analyzer}", "-r", "teamcity", "${buildDir.absolutePath}/${nativeJson}"
|
||||
} else {
|
||||
println("No analyzer $analyzerTool found in subdirectories of ${rootBuildDirectory}/${analyzerToolDirectory}")
|
||||
}
|
||||
commandLine analyzer, "-r", "teamcity", "${buildDir.absolutePath}/${nativeJson}"
|
||||
}
|
||||
|
||||
task cinterop {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'cinterop:konanRun'
|
||||
}
|
||||
|
||||
task framework {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'framework:konanRun'
|
||||
}
|
||||
|
||||
task helloworld {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'helloworld:konanRun'
|
||||
}
|
||||
|
||||
task objcinterop {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'objcinterop:konanRun'
|
||||
}
|
||||
|
||||
task ring {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'ring:konanRun'
|
||||
}
|
||||
|
||||
task numerical {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'numerical:konanRun'
|
||||
}
|
||||
|
||||
task startup {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'startup:konanRun'
|
||||
}
|
||||
|
||||
task swiftinterop {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'swiftinterop:konanRun'
|
||||
}
|
||||
|
||||
task videoplayer {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'videoplayer:konanRun'
|
||||
}
|
||||
|
||||
task KotlinVsSwift {
|
||||
dependsOn 'clean'
|
||||
dependsOn buildAnalyzer
|
||||
dependsOn 'KotlinVsSwift:konanRun'
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import java.util.Properties
|
||||
import java.io.FileReader
|
||||
|
||||
extra["versions.native-platform"] = "0.14"
|
||||
|
||||
|
||||
|
||||
buildscript {
|
||||
java.util.Properties().also {
|
||||
it.load(java.io.FileReader(project.file("../../../gradle.properties")))
|
||||
}.forEach { k, v->
|
||||
println("${project.name}<<<[$k] = $v>>>")
|
||||
extra[k as String] = v
|
||||
}
|
||||
val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() ?: false
|
||||
|
||||
extra["defaultSnapshotVersion"] = kotlinBuildProperties.defaultSnapshotVersion
|
||||
kotlinBootstrapFrom(BootstrapOption.SpaceBootstrap(kotlinBuildProperties.kotlinBootstrapVersion!!, cacheRedirectorEnabled))
|
||||
|
||||
repositories {
|
||||
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies")
|
||||
jcenter()
|
||||
project.bootstrapKotlinRepo?.let {
|
||||
maven(url = it)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.25")
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${project.bootstrapKotlinVersion}")
|
||||
}
|
||||
}
|
||||
|
||||
apply{
|
||||
plugin("kotlin")
|
||||
plugin("kotlin-sam-with-receiver")
|
||||
}
|
||||
plugins {
|
||||
`kotlin-dsl`
|
||||
//kotlin("multiplatform") version "${project.bootstrapKotlinVersion}"
|
||||
}
|
||||
|
||||
val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true
|
||||
repositories {
|
||||
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies")
|
||||
jcenter()
|
||||
maven("https://jetbrains.bintray.com/intellij-third-party-dependencies/")
|
||||
maven("https://kotlin.bintray.com/kotlin-dependencies")
|
||||
maven("https://cache-redirector.jetbrains.com/dl.kotlin.bintray.com/kotlinx")
|
||||
gradlePluginPortal()
|
||||
maven("https://kotlin.bintray.com/kotlin-dev")
|
||||
extra["bootstrapKotlinRepo"]?.let {
|
||||
maven(url = it)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.validatePlugins.configure {
|
||||
enabled = false
|
||||
}
|
||||
|
||||
|
||||
sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
|
||||
kotlin.srcDir("src/main/kotlin")
|
||||
//kotlin.srcDir("tools/benchmarks/shared/src/main/kotlin")
|
||||
kotlin.srcDir("../../build-tools/src/main/kotlin")
|
||||
//kotlin.srcDir("../../build-tools/src/main/kotlin")
|
||||
kotlin.srcDir("../../shared/src/library/kotlin")
|
||||
kotlin.srcDir("../../shared/src/main/kotlin")
|
||||
kotlin.srcDir("../../tools/benchmarks/shared/src/main/kotlin/report")
|
||||
kotlin.srcDir("../../../native/utils/src")
|
||||
}
|
||||
|
||||
tasks.withType<KotlinCompile>().configureEach {
|
||||
kotlinOptions.freeCompilerArgs +=
|
||||
listOf("-Xopt-in=kotlin.RequiresOptIn",
|
||||
"-Xskip-runtime-version-check",
|
||||
"-Xopt-in=kotlin.ExperimentalStdlibApi")
|
||||
}
|
||||
|
||||
|
||||
dependencies {
|
||||
implementation("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.25")
|
||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${project.bootstrapKotlinVersion}")
|
||||
api("org.jetbrains.kotlin:kotlin-native-utils:${project.bootstrapKotlinVersion}")
|
||||
compileOnly(gradleApi())
|
||||
val kotlinVersion = project.bootstrapKotlinVersion
|
||||
val ktorVersion = "1.2.1"
|
||||
val slackApiVersion = "1.2.0"
|
||||
val shadowVersion = "5.1.0"
|
||||
val metadataVersion = "0.0.1-dev-10"
|
||||
|
||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
|
||||
implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
|
||||
implementation("com.ullink.slack:simpleslackapi:$slackApiVersion")
|
||||
|
||||
implementation("io.ktor:ktor-client-auth:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-cio:$ktorVersion")
|
||||
|
||||
api("org.jetbrains.kotlin:kotlin-native-utils:$kotlinVersion")
|
||||
|
||||
// Located in <repo root>/shared and always provided by the composite build.
|
||||
//api("org.jetbrains.kotlin:kotlin-native-shared:$konanVersion")
|
||||
implementation("com.github.jengelman.gradle.plugins:shadow:$shadowVersion")
|
||||
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-metadata-klib:$metadataVersion")
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
plugins {
|
||||
create("benchmarkPlugin") {
|
||||
id = "benchmarking"
|
||||
implementationClass = "org.jetbrains.kotlin.benchmark.KotlinNativeBenchmarkingPlugin"
|
||||
}
|
||||
create("compileBenchmarking") {
|
||||
id = "compile-benchmarking"
|
||||
implementationClass = "org.jetbrains.kotlin.benchmark.CompileBenchmarkingPlugin"
|
||||
}
|
||||
create("swiftBenchmarking") {
|
||||
id = "swift-benchmarking"
|
||||
implementationClass = "org.jetbrains.kotlin.benchmark.SwiftBenchmarkingPlugin"
|
||||
}
|
||||
create("compileToBitcode") {
|
||||
id = "compile-to-bitcode"
|
||||
implementationClass = "org.jetbrains.kotlin.bitcode.CompileToBitcodePlugin"
|
||||
}
|
||||
create("runtimeTesting") {
|
||||
id = "runtime-testing"
|
||||
implementationClass = "org.jetbrains.kotlin.testing.native.RuntimeTestingPlugin"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import java.io.File
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies")
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-dependencies")
|
||||
}
|
||||
dependencies {
|
||||
classpath("org.jetbrains.kotlin:kotlin-build-gradle-plugin:0.0.25")
|
||||
}
|
||||
}
|
||||
|
||||
//include("tools")
|
||||
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
import org.gradle.api.Project
|
||||
|
||||
fun Project.kotlinInit(cacheRedirectorEnabled: Boolean) {
|
||||
extensions.extraProperties["defaultSnapshotVersion"] = kotlinBuildProperties.defaultSnapshotVersion
|
||||
kotlinBootstrapFrom(BootstrapOption.SpaceBootstrap(kotlinBuildProperties.kotlinBootstrapVersion!!, cacheRedirectorEnabled))
|
||||
|
||||
extensions.extraProperties["kotlinVersion"] = findProperty("kotlinVersion")
|
||||
extensions.extraProperties["konanVersion"] = findProperty("konanVersion")
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -7,9 +7,6 @@ buildscript {
|
||||
apply from: "$rootProject.projectDir/../gradle/kotlinGradlePlugin.gradle"
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url 'https://cache-redirector.jetbrains.com/jcenter'
|
||||
}
|
||||
jcenter()
|
||||
}
|
||||
}
|
||||
@@ -17,18 +14,10 @@ buildscript {
|
||||
apply plugin: 'kotlin-multiplatform'
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url 'https://cache-redirector.jetbrains.com/jcenter'
|
||||
}
|
||||
jcenter()
|
||||
maven {
|
||||
url kotlinCompilerRepo
|
||||
}
|
||||
maven {
|
||||
url buildKotlinCompilerRepo
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def toolsPath = '../../tools'
|
||||
def frameworkName = 'benchmarksAnalyzer'
|
||||
|
||||
@@ -37,9 +26,6 @@ def buildType = NativeBuildType.valueOf(findProperty('nativeBuildType') ?: 'DEBU
|
||||
kotlin {
|
||||
sourceSets {
|
||||
macosMain {
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlinVersion"
|
||||
}
|
||||
kotlin.srcDir "$toolsPath/benchmarks/shared/src"
|
||||
kotlin.srcDir "$toolsPath/benchmarksAnalyzer/src/main/kotlin"
|
||||
kotlin.srcDir "$rootProject.projectDir/../endorsedLibraries/kotlinx.cli/src/main/kotlin"
|
||||
@@ -69,7 +55,10 @@ task konanRun {
|
||||
}
|
||||
}
|
||||
|
||||
task jvmRun(type: RunJvmTask) {
|
||||
/**
|
||||
* TODO: it would be better to make help function generating such nop task in buildSrc.
|
||||
*/
|
||||
task jvmRun {
|
||||
doLast {
|
||||
println("JVM run is unsupported")
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -1,4 +1,4 @@
|
||||
kotlin.native.home=../dist
|
||||
kotlin.native.home=../../dist
|
||||
org.jetbrains.kotlin.native.jvmArgs=-Xmx6G
|
||||
org.gradle.jvmargs=-Xmx2048m
|
||||
jvmWarmup = 1000
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -19,5 +19,4 @@ if (System.getProperty("os.name") == "Mac OS X") {
|
||||
}
|
||||
}
|
||||
|
||||
includeBuild '../build-tools'
|
||||
|
||||
includeBuild '../tools/benchmarksAnalyzer'
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
@@ -1 +0,0 @@
|
||||
kotlin.native.home=../../dist
|
||||
Reference in New Issue
Block a user