build.gradle.kts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. @file:Suppress("UNUSED_VARIABLE")
  2. plugins {
  3. kotlin("multiplatform")
  4. id("kotlinx-atomicfu")
  5. id("kotlinx-serialization")
  6. `maven-publish`
  7. id("com.jfrog.bintray") version "1.8.4-jetbrains-3"
  8. }
  9. val kotlinVersion: String by rootProject.ext
  10. val atomicFuVersion: String by rootProject.ext
  11. val coroutinesVersion: String by rootProject.ext
  12. val coroutinesIoVersion: String by rootProject.ext
  13. val klockVersion: String by rootProject.ext
  14. val ktorVersion: String by rootProject.ext
  15. val serializationVersion: String by rootProject.ext
  16. fun kotlinx(id: String, version: String) = "org.jetbrains.kotlinx:kotlinx-$id:$version"
  17. fun ktor(id: String, version: String) = "io.ktor:ktor-$id:$version"
  18. description = "QQ protocol library"
  19. version = rootProject.ext.get("mirai_version")!!.toString()
  20. val isAndroidSDKAvailable: Boolean by project
  21. kotlin {
  22. if (isAndroidSDKAvailable) {
  23. apply(from = rootProject.file("gradle/android.gradle"))
  24. android("android") {
  25. publishAllLibraryVariants()
  26. }
  27. } else {
  28. println(
  29. """Android SDK 可能未安装.
  30. $name 的 Android 目标编译将不会进行.
  31. 这不会影响 Android 以外的平台的编译.
  32. """.trimIndent()
  33. )
  34. println(
  35. """Android SDK might not be installed.
  36. Android target of $name will not be compiled.
  37. It does no influence on the compilation of other platforms.
  38. """.trimIndent()
  39. )
  40. }
  41. jvm("jvm") {
  42. }
  43. sourceSets {
  44. all {
  45. languageSettings.enableLanguageFeature("InlineClasses")
  46. languageSettings.useExperimentalAnnotation("kotlin.Experimental")
  47. dependencies {
  48. api(project(":mirai-core"))
  49. api(kotlin("stdlib", kotlinVersion))
  50. api("org.jetbrains.kotlinx:atomicfu:$atomicFuVersion")
  51. api(kotlinx("coroutines-io", coroutinesIoVersion))
  52. api(kotlinx("coroutines-core", coroutinesVersion))
  53. }
  54. }
  55. commonMain {
  56. dependencies {
  57. api(kotlinx("serialization-runtime-common", serializationVersion))
  58. }
  59. }
  60. commonTest {
  61. dependencies {
  62. api(kotlin("test-annotations-common"))
  63. api(kotlin("test-common"))
  64. implementation(kotlin("script-runtime"))
  65. }
  66. }
  67. if (isAndroidSDKAvailable) {
  68. val androidMain by getting {
  69. dependencies {
  70. }
  71. }
  72. val androidTest by getting {
  73. dependencies {
  74. implementation(kotlin("test", kotlinVersion))
  75. implementation(kotlin("test-junit", kotlinVersion))
  76. implementation(kotlin("test-annotations-common"))
  77. implementation(kotlin("test-common"))
  78. }
  79. }
  80. }
  81. val jvmMain by getting {
  82. dependencies {
  83. runtimeOnly(files("build/classes/kotlin/jvm/main")) // classpath is not properly set by IDE
  84. api(kotlinx("serialization-runtime", serializationVersion))
  85. }
  86. }
  87. val jvmTest by getting {
  88. dependencies {
  89. api(kotlin("test", kotlinVersion))
  90. api(kotlin("test-junit", kotlinVersion))
  91. implementation("org.pcap4j:pcap4j-distribution:1.8.2")
  92. runtimeOnly(files("build/classes/kotlin/jvm/main")) // classpath is not properly set by IDE
  93. runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE
  94. }
  95. }
  96. }
  97. }
  98. //
  99. //tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
  100. // kotlinOptions.jvmTarget = "1.8"
  101. //}
  102. apply(from = rootProject.file("gradle/publish.gradle"))