build.gradle.kts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import org.gradle.internal.os.OperatingSystem
  2. import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
  3. plugins {
  4. val kotlinVersion = "2.2.21"
  5. kotlin("multiplatform") version kotlinVersion
  6. kotlin("plugin.serialization") version kotlinVersion
  7. id("org.sirekanyan.version-checker") version "1.0.14"
  8. distribution
  9. }
  10. group = "org.sirekanyan"
  11. version = "1.0.1"
  12. repositories {
  13. mavenCentral()
  14. }
  15. dependencies {
  16. commonMainImplementation("com.github.ajalt.clikt:clikt-core:5.0.3")
  17. commonMainImplementation("org.jetbrains.kotlinx:kotlinx-datetime:0.7.1")
  18. commonMainImplementation("org.jetbrains.kotlinx:kotlinx-io-core:0.8.2")
  19. }
  20. kotlin {
  21. val os = OperatingSystem.current()
  22. buildList {
  23. add(linuxX64())
  24. add(linuxArm64())
  25. if (os.isMacOsX) {
  26. add(macosX64())
  27. add(macosArm64())
  28. }
  29. }.forEach {
  30. it.binaries {
  31. executable(listOf(if (hasProperty("release")) RELEASE else DEBUG))
  32. }
  33. }
  34. }
  35. private val kotlinTargetNames: List<String> =
  36. kotlin.targets.filterIsInstance<KotlinNativeTarget>().map { it.name }
  37. distributions {
  38. kotlinTargetNames.forEach { targetName ->
  39. create(targetName) {
  40. distributionBaseName = "todo-${targetName.replace("X64", "-amd64").replace("Arm64", "-arm64")}"
  41. contents {
  42. from("build/bin/${targetName}/releaseExecutable/todo.kexe") {
  43. rename { it.removeSuffix(".kexe") }
  44. }
  45. }
  46. }
  47. }
  48. }
  49. kotlinTargetNames.forEach { targetName ->
  50. tasks {
  51. getByName<Tar>("${targetName}DistTar") {
  52. filePermissions { unix("755") }
  53. compression = Compression.GZIP
  54. archiveExtension = "tar.gz"
  55. }
  56. }
  57. }