build.gradle.kts 4.1 KB

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