[build]: platform lib build added
distPlatformLibs - command build and install klibs in dist
This commit is contained in:
committed by
Vasily Levchenko
parent
ca02d71dcf
commit
ce3ed52705
@@ -264,6 +264,51 @@ targetList.each { target ->
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
targetDefFiles(target).forEach{
|
||||||
|
defFile ->
|
||||||
|
def taskName = defFileToTaskName(target, defFile)
|
||||||
|
def suffix = null
|
||||||
|
if (new PlatformInfo().isWindows())
|
||||||
|
suffix = 'bat'
|
||||||
|
task(taskName, type:GradleBuild) {
|
||||||
|
dependsOn ':tools:kotlin-native-gradle-plugin:jar'
|
||||||
|
tasks = ['clean', 'compileKonan', 'klibInstall']
|
||||||
|
buildFile project('klib').file('platform.gradle')
|
||||||
|
dir project(':klib').projectDir
|
||||||
|
startParameter.projectProperties = [
|
||||||
|
'kotlin_version' : kotlin_version,
|
||||||
|
'name' : defToLibName(defFile),
|
||||||
|
'defFile' : defFile.absolutePath,
|
||||||
|
'konan.home' : project.file('dist'),
|
||||||
|
'target' : target,
|
||||||
|
'suffix' : suffix
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<File> targetDefFiles(String target) {
|
||||||
|
def platform = targetToPlatform(target)
|
||||||
|
project(':klib').file("src/platform/$platform").listFiles().findAll { it.name.endsWith(".def") }
|
||||||
|
}
|
||||||
|
|
||||||
|
private String targetToPlatform(String target) {
|
||||||
|
new TargetManager(target).target.platform.name().toLowerCase()
|
||||||
|
}
|
||||||
|
|
||||||
|
private String defFileToTaskName(String target, File defFile) {
|
||||||
|
def libname = defToLibName(defFile)
|
||||||
|
return "$target-$libname".toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
private String defToLibName(File defFile) {
|
||||||
|
defFile.name.split('\\.').dropRight(1).join('.')
|
||||||
|
}
|
||||||
|
|
||||||
|
task distPlatformLibs {
|
||||||
|
def target = TargetManager.host.name().toLowerCase()
|
||||||
|
dependsOn targetDefFiles(target).collect {defFileToTaskName(target, it)}
|
||||||
}
|
}
|
||||||
|
|
||||||
task dist {
|
task dist {
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
apply plugin: 'konan'
|
||||||
|
|
||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(project.file('../tools/kotlin-native-gradle-plugin/build/libs').listFiles().findAll {
|
||||||
|
it.name.endsWith('.jar')
|
||||||
|
}.collect().first().absolutePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def taskName = "${gradle.startParameter.projectProperties['name']}"
|
||||||
|
|
||||||
|
konanInterop {
|
||||||
|
"$taskName" {
|
||||||
|
defFile gradle.startParameter.projectProperties.defFile
|
||||||
|
pkg gradle.startParameter.projectProperties.name
|
||||||
|
target gradle.startParameter.projectProperties.target
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def suffix = gradle.startParameter.projectProperties['suffix']
|
||||||
|
def klibProgram = suffix?"${gradle.startParameter.projectProperties['konan.home']}/bin/klib.$suffix" : "${gradle.startParameter.projectProperties['konan.home']}/bin/klib"
|
||||||
|
|
||||||
|
task klibInstall(type:Exec) {
|
||||||
|
dependsOn compileKonan
|
||||||
|
commandLine klibProgram,
|
||||||
|
'install',
|
||||||
|
project.file("build/konan/interopCompiledStubs/${taskName}InteropStubs/${taskName}InteropStubs.klib"),
|
||||||
|
'-repository',
|
||||||
|
gradle.startParameter.projectProperties['konan.home']
|
||||||
|
}
|
||||||
@@ -16,6 +16,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.konan.target
|
package org.jetbrains.kotlin.konan.target
|
||||||
|
|
||||||
|
enum class Platform {
|
||||||
|
OSX,
|
||||||
|
LINUX,
|
||||||
|
WINDOWS,
|
||||||
|
ANDROID,
|
||||||
|
WASM
|
||||||
|
}
|
||||||
|
|
||||||
enum class KonanTarget(val targetSuffix: String, val programSuffix: String, var enabled: Boolean = false) {
|
enum class KonanTarget(val targetSuffix: String, val programSuffix: String, var enabled: Boolean = false) {
|
||||||
ANDROID_ARM32("android_arm32", "so"),
|
ANDROID_ARM32("android_arm32", "so"),
|
||||||
ANDROID_ARM64("android_arm64", "so"),
|
ANDROID_ARM64("android_arm64", "so"),
|
||||||
@@ -28,6 +36,17 @@ enum class KonanTarget(val targetSuffix: String, val programSuffix: String, var
|
|||||||
WASM32("wasm32", "wasm");
|
WASM32("wasm32", "wasm");
|
||||||
|
|
||||||
val userName get() = name.toLowerCase()
|
val userName get() = name.toLowerCase()
|
||||||
|
val platform get() = when (this) {
|
||||||
|
ANDROID_ARM32 -> Platform.ANDROID
|
||||||
|
ANDROID_ARM64 -> Platform.ANDROID
|
||||||
|
IPHONE -> Platform.OSX
|
||||||
|
IPHONE_SIM -> Platform.OSX
|
||||||
|
MACBOOK -> Platform.OSX
|
||||||
|
RASPBERRYPI -> Platform.LINUX
|
||||||
|
LINUX -> Platform.LINUX
|
||||||
|
MINGW -> Platform.WINDOWS
|
||||||
|
WASM32 -> Platform.WASM
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hostTargetSuffix(host: KonanTarget, target: KonanTarget) =
|
fun hostTargetSuffix(host: KonanTarget, target: KonanTarget) =
|
||||||
|
|||||||
Reference in New Issue
Block a user