build.gradle.kts 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /*
  2. * Copyright 2019-2021 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/master/LICENSE
  8. */
  9. @file:Suppress("UNUSED_VARIABLE")
  10. import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
  11. plugins {
  12. kotlin("multiplatform")
  13. // id("kotlinx-atomicfu")
  14. kotlin("plugin.serialization")
  15. id("net.mamoe.kotlin-jvm-blocking-bridge")
  16. `maven-publish`
  17. }
  18. description = "Mirai Protocol implementation for QQ Android"
  19. afterEvaluate {
  20. tasks.getByName("compileKotlinCommon").enabled = false
  21. tasks.getByName("compileTestKotlinCommon").enabled = false
  22. tasks.getByName("compileCommonMainKotlinMetadata").enabled = false
  23. tasks.getByName("compileKotlinMetadata").enabled = false
  24. }
  25. kotlin {
  26. explicitApi()
  27. if (isAndroidSDKAvailable) {
  28. // apply(from = rootProject.file("gradle/android.gradle"))
  29. // android("android") {
  30. // publishAllLibraryVariants()
  31. // }
  32. jvm("android") {
  33. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm)
  34. // publishAllLibraryVariants()
  35. }
  36. } else {
  37. printAndroidNotInstalled()
  38. }
  39. jvm("common") {
  40. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
  41. }
  42. jvm("jvm")
  43. /*
  44. jvm("android") {
  45. attributes.attribute(ATTRIBUTE_MIRAI_TARGET_PLATFORM, "android")
  46. }*/
  47. sourceSets.apply {
  48. val commonMain by getting {
  49. dependencies {
  50. api(project(":mirai-core-api"))
  51. implementation(project(":mirai-core-utils"))
  52. api1(`kotlinx-serialization-core`)
  53. api1(`kotlinx-serialization-json`)
  54. implementation1(`kotlinx-serialization-protobuf`)
  55. api1(`kotlinx-atomicfu`)
  56. api1(`kotlinx-coroutines-core`)
  57. api1(`kotlinx-io-jvm`)
  58. implementation1(`kotlinx-coroutines-io`)
  59. implementation(`netty-all`)
  60. implementation(`log4j-api`)
  61. implementation(bouncycastle)
  62. }
  63. }
  64. commonTest {
  65. dependencies {
  66. implementation(kotlin("script-runtime"))
  67. }
  68. }
  69. if (isAndroidSDKAvailable) {
  70. val androidMain by getting {
  71. dependsOn(commonMain)
  72. dependencies {
  73. compileOnly(`android-runtime`)
  74. }
  75. }
  76. val androidTest by getting {
  77. dependencies {
  78. implementation(kotlin("test", Versions.kotlinCompiler))
  79. implementation(kotlin("test-junit5", Versions.kotlinCompiler))
  80. implementation(kotlin("test-annotations-common"))
  81. implementation(kotlin("test-common"))
  82. //implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  83. }
  84. }
  85. }
  86. val jvmMain by getting {
  87. dependencies {
  88. //implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  89. // api(kotlinx("coroutines-debug", Versions.coroutines))
  90. }
  91. }
  92. val jvmTest by getting {
  93. dependencies {
  94. api1(`kotlinx-coroutines-debug`)
  95. // implementation("net.mamoe:mirai-login-solver-selenium:1.0-dev-14")
  96. }
  97. }
  98. }
  99. }
  100. if (isAndroidSDKAvailable) {
  101. tasks.register("checkAndroidApiLevel") {
  102. doFirst {
  103. analyzes.AndroidApiLevelCheck.check(
  104. buildDir.resolve("classes/kotlin/android/main"),
  105. project.property("mirai.android.target.api.level")!!.toString().toInt(),
  106. project
  107. )
  108. }
  109. group = "verification"
  110. this.mustRunAfter("androidMainClasses")
  111. }
  112. tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel")
  113. }
  114. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) =
  115. implementation(dependencyNotation) {
  116. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  117. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  118. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  119. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  120. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  121. }
  122. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.api1(dependencyNotation: String) =
  123. api(dependencyNotation) {
  124. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  125. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  126. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  127. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  128. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  129. }
  130. configureMppPublishing()