Unverified Commit 71d274ad authored by alexander-gorshenev's avatar alexander-gorshenev Committed by GitHub

Publish skiko as mpp library (#219)

parent 290578db
...@@ -90,7 +90,7 @@ jobs: ...@@ -90,7 +90,7 @@ jobs:
source ./emsdk_env.sh source ./emsdk_env.sh
cd .. cd ..
./gradlew -Pskiko.wasm.enabled=true jsTest ./gradlew -Pskiko.wasm.enabled=true jsTest
./gradlew -Pskiko.wasm.enabled=true publishSkikoWasmRuntimePublicationToMavenLocal publishSkikoJsRuntimePublicationToMavenLocal ./gradlew -Pskiko.wasm.enabled=true publishSkikoWasmRuntimePublicationToMavenLocal
windows: windows:
runs-on: windows-2019 runs-on: windows-2019
steps: steps:
......
...@@ -39,15 +39,14 @@ kotlin { ...@@ -39,15 +39,14 @@ kotlin {
} }
sourceSets { sourceSets {
val commonMain by getting {} val commonMain by getting {
dependencies {
implementation("org.jetbrains.skiko:skiko:$version")
}
}
val jsMain by getting { val jsMain by getting {
dependsOn(commonMain) dependsOn(commonMain)
dependencies {
// This one is tricky - it has js and wasm binaries required for final linking.
// We cannot use it directly but need to extract data from there.
implementation("org.jetbrains.skiko:skiko-js-runtime:$version")
}
resources.setSrcDirs(resources.srcDirs) resources.setSrcDirs(resources.srcDirs)
resources.srcDirs(unzipTask.map { it.destinationDir }) resources.srcDirs(unzipTask.map { it.destinationDir })
} }
......
...@@ -52,7 +52,7 @@ kotlin { ...@@ -52,7 +52,7 @@ kotlin {
sourceSets { sourceSets {
val commonMain by getting { val commonMain by getting {
dependencies { dependencies {
implementation(kotlin("stdlib-common")) implementation("org.jetbrains.skiko:skiko:$version")
} }
} }
...@@ -66,7 +66,6 @@ kotlin { ...@@ -66,7 +66,6 @@ kotlin {
dependsOn(nativeMain) dependsOn(nativeMain)
dependencies { dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-macosx64:1.5.2") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-macosx64:1.5.2")
implementation("org.jetbrains.skiko:skiko-native-runtime-$target:$version")
} }
} }
} }
......
...@@ -740,7 +740,7 @@ val skikoWasmJar by project.tasks.registering(Jar::class) { ...@@ -740,7 +740,7 @@ val skikoWasmJar by project.tasks.registering(Jar::class) {
// disable unexpected native publications (default C++ publications are failing) // disable unexpected native publications (default C++ publications are failing)
tasks.withType<AbstractPublishToMaven>().configureEach { tasks.withType<AbstractPublishToMaven>().configureEach {
doFirst { doFirst {
if (!publication.name.startsWith("skiko")) { if (!publication.isSkikoPublication()) {
throw StopExecutionException("Publication '${publication.name}' is disabled") throw StopExecutionException("Publication '${publication.name}' is disabled")
} }
} }
...@@ -777,8 +777,16 @@ tasks.withType<Test>().configureEach { ...@@ -777,8 +777,16 @@ tasks.withType<Test>().configureEach {
} }
} }
fun Publication.isSkikoPublication() = fun Publication.isSkikoPublication(): Boolean {
(this as? MavenPublication)?.name?.startsWith("skiko") == true val component = (this as? org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication)?.component
// Don't publish libraries included into jvm-runtime-*.
// Or whatever `cpp-library` considers their public api.
if (component is CppBinary ||
component?.javaClass?.simpleName == "MainLibraryVariant") return false
return true
}
fun Task.disable() { fun Task.disable() {
enabled = false enabled = false
...@@ -800,14 +808,14 @@ afterEvaluate { ...@@ -800,14 +808,14 @@ afterEvaluate {
} }
} }
// Disable publishing Gradle Metadata, because it seems unnecessary at the moment. // Gradle metadata for default C++ publications fails.
// Also generating metadata for default C++ publications fails
tasks.withType(GenerateModuleMetadata::class).configureEach { tasks.withType(GenerateModuleMetadata::class).configureEach {
disable() if (!this.publication.get().isSkikoPublication()) {
disable()
}
} }
// Disable publishing for default publications, because // Publishing for default C++ publications fails.
// publishing for default C++ publications fails
tasks.withType<AbstractPublishToMaven>().configureEach { tasks.withType<AbstractPublishToMaven>().configureEach {
if (!publication.isSkikoPublication()) { if (!publication.isSkikoPublication()) {
disable() disable()
...@@ -860,39 +868,14 @@ publishing { ...@@ -860,39 +868,14 @@ publishing {
} }
} }
} }
create<MavenPublication>("skikoMetadata") {
artifactId = SkikoArtifacts.metadataArtifactId
afterEvaluate {
artifact(project.tasks.named("metadataJar").get())
}
}
create<MavenPublication>("skikoJvm") {
artifactId = SkikoArtifacts.commonArtifactId
afterEvaluate {
artifact(skikoJvmJar.map { it.archiveFile.get() })
}
}
create<MavenPublication>("skikoJvmRuntime") { create<MavenPublication>("skikoJvmRuntime") {
artifactId = SkikoArtifacts.runtimeArtifactIdFor(targetOs, targetArch) artifactId = SkikoArtifacts.runtimeArtifactIdFor(targetOs, targetArch)
afterEvaluate { afterEvaluate {
artifact(skikoJvmRuntimeJar.map { it.archiveFile.get() }) artifact(skikoJvmRuntimeJar.map { it.archiveFile.get() })
} }
} }
if (supportNative) {
create<MavenPublication>("skikoNativeRuntime") {
artifactId = SkikoArtifacts.nativeRuntimeArtifactIdFor(targetOs, targetArch)
afterEvaluate {
artifact(project.tasks.withType(KotlinNativeCompile::class.java)
.single { it.name.startsWith("compileKotlin") } // Exclude compileTestKotlin.
.outputs.files.single { it.name.endsWith(".klib") })
}
}
}
create<MavenPublication>("skikoJsRuntime") {
artifactId = SkikoArtifacts.jsArtifactId
artifact(project.tasks.named("jsJar").get())
}
if (supportWasm) { if (supportWasm) {
create<MavenPublication>("skikoWasmRuntime") { create<MavenPublication>("skikoWasmRuntime") {
artifactId = SkikoArtifacts.jsWasmArtifactId artifactId = SkikoArtifacts.jsWasmArtifactId
......
...@@ -147,9 +147,7 @@ class SkikoProperties(private val myProject: Project) { ...@@ -147,9 +147,7 @@ class SkikoProperties(private val myProject: Project) {
object SkikoArtifacts { object SkikoArtifacts {
// names are also used in samples, e.g. samples/SkijaInjectSample/build.gradle // names are also used in samples, e.g. samples/SkijaInjectSample/build.gradle
val commonArtifactId = "skiko-jvm" val jvmArtifactId = "skiko-jvm"
val metadataArtifactId = "skiko-metadata"
val jsArtifactId = "skiko-js-runtime"
val jsWasmArtifactId = "skiko-js-wasm-runtime" val jsWasmArtifactId = "skiko-js-wasm-runtime"
fun runtimeArtifactIdFor(os: OS, arch: Arch) = fun runtimeArtifactIdFor(os: OS, arch: Arch) =
"skiko-jvm-runtime-${targetId(os, arch)}" "skiko-jvm-runtime-${targetId(os, arch)}"
......
...@@ -20,7 +20,7 @@ dependencies { ...@@ -20,7 +20,7 @@ dependencies {
} }
} }
skikoDep(SkikoArtifacts.commonArtifactId) skikoDep(SkikoArtifacts.jvmArtifactId)
skikoDep(SkikoArtifacts.runtimeArtifactIdFor(OS.Windows, Arch.X64)) skikoDep(SkikoArtifacts.runtimeArtifactIdFor(OS.Windows, Arch.X64))
skikoDep(SkikoArtifacts.runtimeArtifactIdFor(OS.Linux, Arch.X64)) skikoDep(SkikoArtifacts.runtimeArtifactIdFor(OS.Linux, Arch.X64))
skikoDep(SkikoArtifacts.runtimeArtifactIdFor(OS.Linux, Arch.Arm64)) skikoDep(SkikoArtifacts.runtimeArtifactIdFor(OS.Linux, Arch.Arm64))
......
kotlin.code.style=official kotlin.code.style=official
deploy.version=0.0.0 deploy.version=0.0.0
kotlin.mpp.enableGranularSourceSetsMetadata=true
dependencies.skia.windows-x64=m94-fd7c5792ca dependencies.skia.windows-x64=m94-fd7c5792ca
dependencies.skia.linux-x64=m94-fd7c5792ca dependencies.skia.linux-x64=m94-fd7c5792ca
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment