Commit 644574a6 authored by Alexey Tsvetkov's avatar Alexey Tsvetkov

Revert accidental push

parent 4b9b9ad1
...@@ -3,7 +3,6 @@ import org.gradle.crypto.checksum.Checksum ...@@ -3,7 +3,6 @@ import org.gradle.crypto.checksum.Checksum
import org.gradle.api.tasks.testing.AbstractTestTask import org.gradle.api.tasks.testing.AbstractTestTask
import org.jetbrains.compose.internal.publishing.MavenCentralProperties import org.jetbrains.compose.internal.publishing.MavenCentralProperties
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestExceptionFormat
...@@ -24,6 +23,7 @@ fun targetSuffix(os: OS, arch: Arch): String { ...@@ -24,6 +23,7 @@ fun targetSuffix(os: OS, arch: Arch): String {
val skiko = SkikoProperties(rootProject) val skiko = SkikoProperties(rootProject)
val buildType = skiko.buildType val buildType = skiko.buildType
val generatedKotlin = "$buildDir/kotlin/commonMain"
allprojects { allprojects {
group = "org.jetbrains.skiko" group = "org.jetbrains.skiko"
...@@ -132,7 +132,7 @@ if (supportWasm) { ...@@ -132,7 +132,7 @@ if (supportWasm) {
fun compileNativeBridgesTask(os: OS, arch: Arch): TaskProvider<CompileSkikoCppTask> { fun compileNativeBridgesTask(os: OS, arch: Arch): TaskProvider<CompileSkikoCppTask> {
val skiaNativeDir = registerOrGetSkiaDirProvider(os, arch) val skiaNativeDir = registerOrGetSkiaDirProvider(os, arch)
return project.registerSkikoTask<CompileSkikoCppTask>("compileNativeBridges", os, arch) { return tasks.register<CompileSkikoCppTask>("${os.id}_${arch.id}_CrossCompile") {
dependsOn(skiaNativeDir) dependsOn(skiaNativeDir)
val unpackedSkia = skiaNativeDir.get() val unpackedSkia = skiaNativeDir.get()
...@@ -218,17 +218,13 @@ kotlin { ...@@ -218,17 +218,13 @@ kotlin {
compilations.all { compilations.all {
kotlinOptions.jvmTarget = "11" kotlinOptions.jvmTarget = "11"
} }
generateVersion(targetOs, targetArch)
} }
if (supportAndroid) { if (supportAndroid) {
// todo: use android target
jvm("android") { jvm("android") {
compilations.all { compilations.all {
kotlinOptions.jvmTarget = "11" kotlinOptions.jvmTarget = "11"
} }
// todo: what is the actual target arch? what does "jvm(android)" target even mean?
generateVersion(OS.Android, targetArch)
} }
} }
...@@ -243,7 +239,6 @@ kotlin { ...@@ -243,7 +239,6 @@ kotlin {
} }
} }
binaries.executable() binaries.executable()
generateVersion(OS.Wasm, Arch.Wasm)
} }
} }
...@@ -416,8 +411,6 @@ kotlin { ...@@ -416,8 +411,6 @@ kotlin {
fun configureNativeTarget(os: OS, arch: Arch, target: KotlinNativeTarget) { fun configureNativeTarget(os: OS, arch: Arch, target: KotlinNativeTarget) {
if (!os.isCompatibleWithHost) return if (!os.isCompatibleWithHost) return
target.generateVersion(os, arch)
val targetString = "${os.id}-${arch.id}" val targetString = "${os.id}-${arch.id}"
val unzipper = registerOrGetSkiaDirProvider(os, arch) val unzipper = registerOrGetSkiaDirProvider(os, arch)
...@@ -467,7 +460,7 @@ fun configureNativeTarget(os: OS, arch: Arch, target: KotlinNativeTarget) { ...@@ -467,7 +460,7 @@ fun configureNativeTarget(os: OS, arch: Arch, target: KotlinNativeTarget) {
val crossCompileTask = compileNativeBridgesTask(os, arch) val crossCompileTask = compileNativeBridgesTask(os, arch)
val linkTask = project.registerSkikoTask<Exec>("linkNativeBridges", targetOs, targetArch) { val linkTask = project.tasks.register<Exec>("linkNativeBridges$targetString") {
dependsOn(crossCompileTask) dependsOn(crossCompileTask)
val objectFilesDir = crossCompileTask.map { it.outDir.get() } val objectFilesDir = crossCompileTask.map { it.outDir.get() }
val objectFiles = project.fileTree(objectFilesDir) { val objectFiles = project.fileTree(objectFilesDir) {
...@@ -627,11 +620,8 @@ fun androidJar(version: String = "30"): String { ...@@ -627,11 +620,8 @@ fun androidJar(version: String = "30"): String {
return androidHome.resolve("platforms/android-$version/android.jar").absolutePath return androidHome.resolve("platforms/android-$version/android.jar").absolutePath
} }
fun createCompileJvmBindingsTask( fun createCompileJvmBindingsTask(targetOs: OS, targetArch: Arch, skiaJvmBindingsDir: Provider<File>) =
targetOs: OS, tasks.register<CompileSkikoCppTask>("compileJvmBindings-${targetOs.id}-${targetArch.id}") {
targetArch: Arch,
skiaJvmBindingsDir: Provider<File>
) = project.registerSkikoTask<CompileSkikoCppTask>("compileJvmBindings", targetOs, targetArch) {
// Prefer 'java.home' system property to simplify overriding from Intellij. // Prefer 'java.home' system property to simplify overriding from Intellij.
// When used from command-line, it is effectively equal to JAVA_HOME. // When used from command-line, it is effectively equal to JAVA_HOME.
if (JavaVersion.current() < JavaVersion.VERSION_11) { if (JavaVersion.current() < JavaVersion.VERSION_11) {
...@@ -731,12 +721,10 @@ fun createCompileJvmBindingsTask( ...@@ -731,12 +721,10 @@ fun createCompileJvmBindingsTask(
) )
} }
fun createLinkJvmBindings( fun createLinkJvmBindings(targetOs: OS, targetArch: Arch,
targetOs: OS, skiaJvmBindingsDir: Provider<File>,
targetArch: Arch, compileTask: TaskProvider<CompileSkikoCppTask>) =
skiaJvmBindingsDir: Provider<File>, tasks.register<LinkSkikoTask>("linkJvmBindings-${targetOs.id}-${targetArch.id}") {
compileTask: TaskProvider<CompileSkikoCppTask>
) = project.registerSkikoTask<LinkSkikoTask>("linkJvmBindings", targetOs, targetArch) {
val target = targetId(targetOs, targetArch) val target = targetId(targetOs, targetArch)
val skiaBinSubdir = "out/${buildType.id}-$target" val skiaBinSubdir = "out/${buildType.id}-$target"
val skiaBinDir = skiaJvmBindingsDir.get().absolutePath + "/" + skiaBinSubdir val skiaBinDir = skiaJvmBindingsDir.get().absolutePath + "/" + skiaBinSubdir
...@@ -865,38 +853,23 @@ if (hostOs == OS.MacOS) { ...@@ -865,38 +853,23 @@ if (hostOs == OS.MacOS) {
} }
} }
fun KotlinTarget.generateVersion( val generateVersion = generateVersionTask(targetOs, targetArch)
targetOs: OS,
targetArch: Arch fun generateVersionTask(targetOs: OS, targetArch: Arch) = project.tasks.register("generateVersion") {
) { val outDir = generatedKotlin
val targetName = this.name file(outDir).mkdirs()
val generatedDir = project.layout.buildDirectory.dir("generated/$targetName") val out = "$outDir/Version.kt"
val generateVersionTask = project.registerSkikoTask<DefaultTask>("generateVersion", targetOs, targetArch) { outputs.dir(outDir)
inputs.property("buildType", buildType.id) doFirst {
outputs.dir(generatedDir) val target = "${targetOs.id}-${targetArch.id}"
doFirst { val skiaTag = project.property("dependencies.skia.$target") as String
val outDir = generatedDir.get().asFile File(out).writeText("""
outDir.deleteRecursively() package org.jetbrains.skiko
outDir.mkdirs() object Version {
val out = "$outDir/Version.kt" val skiko = "${skiko.deployVersion}"
val skia = "${skiaTag}"
val target = "${targetOs.id}-${targetArch.id}"
val skiaTag = project.property("dependencies.skia.$target") as String
File(out).writeText("""
package org.jetbrains.skiko
object Version {
val skiko = "${skiko.deployVersion}"
val skia = "${skiaTag}"
}
""".trimIndent()
)
} }
} """.trimIndent())
val compilation = compilations["main"] ?: error("Could not find 'main' compilation for target '$this'")
compilation.compileKotlinTaskProvider.configure {
dependsOn(generateVersionTask)
(this as AbstractCompile).source(generatedDir.get().asFile)
} }
} }
...@@ -905,11 +878,8 @@ val skikoJvmJar by project.tasks.registering(Jar::class) { ...@@ -905,11 +878,8 @@ val skikoJvmJar by project.tasks.registering(Jar::class) {
from(kotlin.jvm("awt").compilations["main"].output.allOutputs) from(kotlin.jvm("awt").compilations["main"].output.allOutputs)
} }
fun maybeSignTask( fun maybeSignTask(targetOs: OS, targetArch: Arch, linkJvmBindings: Provider<LinkSkikoTask>) =
targetOs: OS, project.tasks.register<SealAndSignSharedLibraryTask>("maybeSign-${targetOs.id}-${targetArch.id}") {
targetArch: Arch,
linkJvmBindings: Provider<LinkSkikoTask>
) = project.registerSkikoTask<SealAndSignSharedLibraryTask>("maybeSign", targetOs, targetArch) {
dependsOn(linkJvmBindings) dependsOn(linkJvmBindings)
val linkOutputFile = linkJvmBindings.map { task -> val linkOutputFile = linkJvmBindings.map { task ->
...@@ -937,12 +907,10 @@ fun maybeSignTask( ...@@ -937,12 +907,10 @@ fun maybeSignTask(
signToken.set(skiko.signToken) signToken.set(skiko.signToken)
} }
fun createChecksumsTask( fun createChecksumsTask(targetOs: OS, targetArch: Arch,
targetOs: OS, maybeSign: Provider<SealAndSignSharedLibraryTask>,
targetArch: Arch, bindingsDir: Provider<File>) =
maybeSign: Provider<SealAndSignSharedLibraryTask>, project.tasks.register<Checksum>("createChecksums-${targetOs.id}-${targetArch.id}") {
bindingsDir: Provider<File>
) = project.registerSkikoTask<Checksum>("createChecksums", targetOs, targetArch) {
val skiaBinSubdir = "out/${buildType.id}-${targetOs.id}-${targetArch.id}" val skiaBinSubdir = "out/${buildType.id}-${targetOs.id}-${targetArch.id}"
dependsOn(maybeSign) dependsOn(maybeSign)
files = project.files(maybeSign.flatMap { it.outputFiles }) + files = project.files(maybeSign.flatMap { it.outputFiles }) +
...@@ -951,13 +919,11 @@ fun createChecksumsTask( ...@@ -951,13 +919,11 @@ fun createChecksumsTask(
outputDir = file("$buildDir/checksums") outputDir = file("$buildDir/checksums")
} }
fun skikoJvmRuntimeJarTask( fun skikoJvmRuntimeJarTask(targetOs: OS, targetArch: Arch,
targetOs: OS, maybeSign: Provider<SealAndSignSharedLibraryTask>,
targetArch: Arch, createChecksums: Provider<Checksum>,
maybeSign: Provider<SealAndSignSharedLibraryTask>, bindingsDir: Provider<File>) =
createChecksums: Provider<Checksum>, project.tasks.register<Jar>("skikoJvmRuntimeJar-${targetOs.id}-${targetArch.id}") {
bindingsDir: Provider<File>
) = project.registerSkikoTask<Jar>("skikoJvmRuntimeJar", targetOs, targetArch) {
dependsOn(maybeSign) dependsOn(maybeSign)
dependsOn(createChecksums) dependsOn(createChecksums)
dependsOn(skikoJvmJar) dependsOn(skikoJvmJar)
...@@ -972,11 +938,9 @@ fun skikoJvmRuntimeJarTask( ...@@ -972,11 +938,9 @@ fun skikoJvmRuntimeJarTask(
from(createChecksums.map { it.outputs.files }) from(createChecksums.map { it.outputs.files })
} }
fun skikoRuntimeDirForTestsTask( fun skikoRuntimeDirForTestsTask(targetOs: OS, targetArch: Arch,
targetOs: OS, skikoJvmRuntimeJar: Provider<Jar>) =
targetArch: Arch, project.tasks.register<Copy>("skikoRuntimeDirForTests-${targetOs.id}-${targetArch.id}") {
skikoJvmRuntimeJar: Provider<Jar>
) = project.registerSkikoTask<Copy>("skikoRuntimeDirForTests", targetOs, targetArch) {
dependsOn(skikoJvmRuntimeJar) dependsOn(skikoJvmRuntimeJar)
from(zipTree(skikoJvmRuntimeJar.flatMap { it.archiveFile })) { from(zipTree(skikoJvmRuntimeJar.flatMap { it.archiveFile })) {
include("*.so") include("*.so")
...@@ -1104,13 +1068,12 @@ publishing { ...@@ -1104,13 +1068,12 @@ publishing {
allJvmRuntimeJars.forEach { entry -> allJvmRuntimeJars.forEach { entry ->
val os = entry.key.first val os = entry.key.first
val arch = entry.key.second val arch = entry.key.second
create<MavenPublication>("skikoJvmRuntime${toTitleCase(os.id)}${toTitleCase(arch.id)}") { create<MavenPublication>("skikoJvmRuntime${targetId(os, arch)}") {
pomNameForPublication[name] = "Skiko JVM Runtime for ${os.name} ${arch.name}" pomNameForPublication[name] = "Skiko JVM Runtime for ${os.name} ${arch.name}"
artifactId = SkikoArtifacts.jvmRuntimeArtifactIdFor(os, arch) artifactId = SkikoArtifacts.jvmRuntimeArtifactIdFor(os, arch)
afterEvaluate { afterEvaluate {
artifact(entry.value.map { it.archiveFile.get() }) artifact(entry.value.map { it.archiveFile.get() })
var jvmSourcesArtifact: Any? = null var jvmSourcesArtifact: Any? = null
// todo: use correct sources jar for each jvm source set
kotlin.jvm("awt").mavenPublication { kotlin.jvm("awt").mavenPublication {
jvmSourcesArtifact = artifacts.find { it.classifier == "sources" } jvmSourcesArtifact = artifacts.find { it.classifier == "sources" }
} }
...@@ -1153,10 +1116,17 @@ if (skiko.isCIBuild || mavenCentral.signArtifacts) { ...@@ -1153,10 +1116,17 @@ if (skiko.isCIBuild || mavenCentral.signArtifacts) {
afterEvaluate { afterEvaluate {
tasks.withType<KotlinCompile>().configureEach { // this one is actually KotlinJvmCompile tasks.withType<KotlinCompile>().configureEach { // this one is actually KotlinJvmCompile
dependsOn(generateVersion)
source(generatedKotlin)
if (name == "compileTestKotlinJvm") { if (name == "compileTestKotlinJvm") {
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
} }
} }
tasks.withType<KotlinNativeCompile>().configureEach {
dependsOn(generateVersion)
source(generatedKotlin)
}
} }
// Kotlin/JS has a bug preventing compilation on non-x86 Linux machines, // Kotlin/JS has a bug preventing compilation on non-x86 Linux machines,
......
import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.api.file.Directory import org.gradle.api.file.Directory
import org.gradle.api.provider.Provider import org.gradle.api.provider.Provider
import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.TaskContainer
import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.register
import java.util.* import java.util.*
...@@ -18,21 +16,6 @@ inline fun <reified T : Task> TaskContainer.registerOrGetTask( ...@@ -18,21 +16,6 @@ inline fun <reified T : Task> TaskContainer.registerOrGetTask(
return taskProvider.map { it as T } return taskProvider.map { it as T }
} }
inline fun <reified T : Task> Project.registerSkikoTask(
taskName: String,
crossinline fn: T.() -> Unit
): TaskProvider<T> = tasks.register(taskName, T::class) { fn() }
inline fun <reified T : Task> Project.registerSkikoTask(
actionName: String,
targetOs: OS,
targetArch: Arch,
crossinline fn: T.() -> Unit
): TaskProvider<T> {
val taskName = joinToTitleCamelCase(actionName, targetOs.id, targetArch.id)
return registerSkikoTask(taskName, fn)
}
fun joinToTitleCamelCase(vararg parts: String): String = fun joinToTitleCamelCase(vararg parts: String): String =
parts.joinToString(separator = "") { toTitleCase(it) } parts.joinToString(separator = "") { toTitleCase(it) }
......
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