blob: ce0bff1cdf2d2aa66668c4516ace436cd3b2d92a [file] [log] [blame]
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +03001/*
Aurimas Liutikas79e555e2021-05-17 17:41:41 +00002 * Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +03003 */
4
Victor Turansky964cd922020-05-02 19:52:56 +03005@file:Suppress("UnstableApiUsage")
6
Victor Turansky4511c232020-05-15 12:00:36 +03007import me.champeau.gradle.*
8import org.jetbrains.kotlin.gradle.tasks.*
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +03009
10plugins {
11 id("net.ltgt.apt")
12 id("com.github.johnrengelman.shadow")
Victor Turansky4511c232020-05-15 12:00:36 +030013 id("me.champeau.gradle.jmh") apply false
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030014}
15
16repositories {
17 maven("https://repo.typesafe.com/typesafe/releases/")
18}
19
Victor Turansky4511c232020-05-15 12:00:36 +030020java {
21 sourceCompatibility = JavaVersion.VERSION_1_8
22 targetCompatibility = JavaVersion.VERSION_1_8
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030023}
24
Victor Turansky4511c232020-05-15 12:00:36 +030025apply(plugin="me.champeau.gradle.jmh")
26
27tasks.named<KotlinCompile>("compileJmhKotlin") {
28 kotlinOptions {
29 jvmTarget = "1.8"
30 freeCompilerArgs += "-Xjvm-default=enable"
31 }
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030032}
33
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030034
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030035
36// It is better to use the following to run benchmarks, otherwise you may get unexpected errors:
37// ./gradlew --no-daemon cleanJmhJar jmh -Pjmh="MyBenchmark"
Victor Turansky4511c232020-05-15 12:00:36 +030038extensions.configure<JMHPluginExtension>("jmh") {
Vsevolod Tolstopyatov95875902020-10-20 02:40:38 -070039 jmhVersion = "1.26"
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030040 duplicateClassesStrategy = DuplicatesStrategy.INCLUDE
41 failOnError = true
42 resultFormat = "CSV"
43 project.findProperty("jmh")?.also {
44 include = listOf(".*$it.*")
45 }
46// includeTests = false
47}
48
Victor Turansky4511c232020-05-15 12:00:36 +030049tasks.named<Jar>("jmhJar") {
Victor Turansky964cd922020-05-02 19:52:56 +030050 archiveBaseName by "benchmarks"
51 archiveClassifier by null
52 archiveVersion by null
53 destinationDirectory.file("$rootDir")
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030054}
55
56dependencies {
Vsevolod Tolstopyatov95875902020-10-20 02:40:38 -070057 compile("org.openjdk.jmh:jmh-core:1.26")
Victor Turansky1beebf12020-05-02 14:22:19 +030058 compile("io.projectreactor:reactor-core:${version("reactor")}")
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030059 compile("io.reactivex.rxjava2:rxjava:2.1.9")
60 compile("com.github.akarnokd:rxjava2-extensions:0.20.8")
61
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030062 compile("com.typesafe.akka:akka-actor_2.12:2.5.0")
63 compile(project(":kotlinx-coroutines-core"))
64
65 // add jmh dependency on main
Victor Turansky4511c232020-05-15 12:00:36 +030066 "jmhImplementation"(sourceSets.main.get().runtimeClasspath)
Vsevolod Tolstopyatov0f158122020-04-29 23:35:41 +030067}