import com.vanniktech.maven.publish.SonatypeHost import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.androidLibrary) alias(libs.plugins.vanniktech.mavenPublish) kotlin("plugin.serialization") version "2.1.20" id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.17.0" } group = "cn.rdlevel" version = "0.1.0" kotlin { // jvm jvm { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } // android androidTarget { publishLibraryVariants("release") compilerOptions { jvmTarget.set(JvmTarget.JVM_11) } } // native // t1 macosX64() macosArm64() iosSimulatorArm64() iosX64() iosArm64() // t2 linuxX64() linuxArm64() watchosSimulatorArm64() watchosX64() watchosArm32() watchosArm64() tvosSimulatorArm64() tvosX64() tvosArm64() // t3 androidNativeArm32() androidNativeArm64() androidNativeX86() androidNativeX64() mingwX64() watchosDeviceArm64() // js js { browser { } nodejs { } binaries.executable() } // wasm @OptIn(ExperimentalWasmDsl::class) wasmJs { browser() nodejs() d8() binaries.executable() } @OptIn(ExperimentalWasmDsl::class) wasmWasi { nodejs() binaries.executable() } sourceSets { val commonMain by getting { dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1") } } val commonTest by getting { dependencies { implementation(libs.kotlin.test) } } } explicitApi() } android { namespace = "cn.rdlevel.rdkt" compileSdk = libs.versions.android.compileSdk.get().toInt() defaultConfig { minSdk = libs.versions.android.minSdk.get().toInt() } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } } mavenPublishing { publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL) signAllPublications() coordinates(group.toString(), "rdkt-core", version.toString()) pom { name = "rdkt" description = "A library to write Rhythm Doctor levels on Kotlin." inceptionYear = "2025" url = "https://github.com/RDCN-Community-Developers/rdkt/" licenses { license { name = "XXX" url = "YYY" distribution = "ZZZ" } } developers { developer { id = "XXX" name = "YYY" url = "ZZZ" } } scm { url = "XXX" connection = "YYY" developerConnection = "ZZZ" } } }