Files
native-mdns/build.gradle.kts
T
2026-03-14 00:12:51 +08:00

141 lines
3.6 KiB
Kotlin

import com.vanniktech.maven.publish.SonatypeHost
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
kotlin("multiplatform") version "2.3.10"
id("com.vanniktech.maven.publish") version "0.31.0-rc2"
id("signing")
id("cn.rtast.kdef") version "0.1.1"
}
val libVersion: String by project
group = "cn.rtast.nmdns"
version = libVersion
repositories {
mavenCentral()
}
kotlin {
val nativeTargets = listOf(
linuxArm64(),
linuxX64(),
mingwX64 {
compilations["main"].cinterops {
@Suppress("UNUSED")
val joinMulticastGroup by creating {
definitionFile = file("src/cinterop/win32_join_multicast_group.def")
}
}
},
macosArm64(),
macosX64()
)
jvm { compilerOptions { jvmTarget = JvmTarget.JVM_11 } }
nativeTargets.forEach {
it.binaries {
staticLib {
baseName = "nmdns"
}
sharedLib {
baseName = "nmdns"
}
}
}
compilerOptions { freeCompilerArgs.addAll("-Xexpect-actual-classes") }
explicitApi()
sourceSets {
commonMain.dependencies {
}
commonTest.dependencies {
implementation(kotlin("test"))
}
}
}
mavenPublishing {
publishing {
repositories {
mavenLocal()
maven("https://repo.maven.rtast.cn/releases") {
name = "RTAST"
credentials {
username = "RTAkland"
password = System.getenv("PUBLISH_TOKEN")
}
}
mavenCentral()
}
}
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
if (System.getenv("PUBLISH_TOKEN") == null) signAllPublications()
coordinates("cn.rtast.nmdns", project.name, libVersion)
pom {
name = project.name
description = "mDNS in kotlin multiplatform"
url = "https://github.com/RTAkland/native-mdns"
developers {
developer {
id = "rtakland"
name = "RTAkland"
email = "rtakland@outlook.com"
}
}
licenses {
license {
name = "The Apache License, Version 2.0"
url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
}
}
scm {
url = "https://github.com/RTAkland/native-mdns"
connection = "scm:git:git://github.com/RTAkland/native-mdns.git"
developerConnection = "scm:git:ssh://git@github.com/RTAkland/native-mdns.git"
}
}
}
if (System.getenv("PUBLISH_TOKEN") == null) {
signing {
useGpgCmd()
sign(publishing.publications)
}
}
/**
* link all targets static lib
* Apple target can only be compiled on macos
*/
tasks.register("linkStaticLibrary") {
group = "nmdns"
dependsOn(tasks.named("linkReleaseStaticLinuxArm64"))
dependsOn(tasks.named("linkReleaseStaticLinuxX64"))
dependsOn(tasks.named("linkReleaseStaticMacosArm64"))
dependsOn(tasks.named("linkReleaseStaticMingwX64"))
}
/**
* link all targrts to shared lib
* Apple target can only be compiled on macos
*/
tasks.register("linkSharedLibrary") {
group = "nmdns"
dependsOn(tasks.named("linkReleaseSharedLinuxArm64"))
dependsOn(tasks.named("linkReleaseSharedLinuxX64"))
dependsOn(tasks.named("linkReleaseSharedMacosArm64"))
dependsOn(tasks.named("linkReleaseSharedMingwX64"))
}
kdef {
outputDir = file("src/cinterop")
defFiles.add(file("src/cinterop/template/win32_join_multicast_group.def"))
}