build.gradle.kts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. id("com.jfrog.bintray")
  18. java
  19. }
  20. description = "Mirai Protocol implementation for QQ Android"
  21. val isAndroidSDKAvailable: Boolean by project
  22. afterEvaluate {
  23. tasks.getByName("compileKotlinCommon").enabled = false
  24. tasks.getByName("compileTestKotlinCommon").enabled = false
  25. tasks.getByName("compileCommonMainKotlinMetadata").enabled = false
  26. tasks.getByName("compileKotlinMetadata").enabled = false
  27. }
  28. kotlin {
  29. if (isAndroidSDKAvailable) {
  30. apply(from = rootProject.file("gradle/android.gradle"))
  31. android("android") {
  32. publishAllLibraryVariants()
  33. }
  34. } else {
  35. printAndroidNotInstalled()
  36. }
  37. jvm("common") {
  38. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
  39. }
  40. jvm("jvm")
  41. /*
  42. jvm("android") {
  43. attributes.attribute(ATTRIBUTE_MIRAI_TARGET_PLATFORM, "android")
  44. }*/
  45. sourceSets.apply {
  46. all {
  47. dependencies {
  48. api(project(":mirai-core-api"))
  49. }
  50. }
  51. commonMain {
  52. dependencies {
  53. implementation(project(":mirai-core-utils"))
  54. api1(`kotlinx-serialization-core`)
  55. api1(`kotlinx-serialization-json`)
  56. implementation1(`kotlinx-serialization-protobuf`)
  57. api1(`kotlinx-atomicfu`)
  58. api1(`kotlinx-coroutines-core`)
  59. api1(`kotlinx-io`)
  60. implementation1(`kotlinx-coroutines-io`)
  61. }
  62. }
  63. commonTest {
  64. dependencies {
  65. implementation(kotlin("script-runtime"))
  66. }
  67. }
  68. if (isAndroidSDKAvailable) {
  69. androidMain {
  70. dependencies {
  71. }
  72. }
  73. androidTest {
  74. dependencies {
  75. implementation(kotlin("test", Versions.kotlinCompiler))
  76. implementation(kotlin("test-junit", Versions.kotlinCompiler))
  77. implementation(kotlin("test-annotations-common"))
  78. implementation(kotlin("test-common"))
  79. }
  80. }
  81. }
  82. jvmMain {
  83. dependencies {
  84. implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  85. api1(`kotlinx-io-jvm`)
  86. // api(kotlinx("coroutines-debug", Versions.coroutines))
  87. }
  88. }
  89. jvmTest {
  90. dependencies {
  91. implementation("org.pcap4j:pcap4j-distribution:1.8.2")
  92. // implementation("net.mamoe:mirai-login-solver-selenium:1.0-dev-14")
  93. }
  94. }
  95. }
  96. }
  97. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) =
  98. implementation(dependencyNotation) {
  99. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  100. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  101. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  102. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  103. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  104. }
  105. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.api1(dependencyNotation: String) =
  106. api(dependencyNotation) {
  107. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  108. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  109. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  110. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  111. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  112. }
  113. configureMppPublishing()