[build]: platform lib build added

distPlatformLibs - command build and install klibs in dist
This commit is contained in:
Vasily Levchenko
2017-09-08 13:41:08 +03:00
committed by Vasily Levchenko
parent ca02d71dcf
commit ce3ed52705
3 changed files with 95 additions and 0 deletions
+45
View File
@@ -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 {
+31
View File
@@ -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
enum class Platform {
OSX,
LINUX,
WINDOWS,
ANDROID,
WASM
}
enum class KonanTarget(val targetSuffix: String, val programSuffix: String, var enabled: Boolean = false) {
ANDROID_ARM32("android_arm32", "so"),
ANDROID_ARM64("android_arm64", "so"),
@@ -28,6 +36,17 @@ enum class KonanTarget(val targetSuffix: String, val programSuffix: String, var
WASM32("wasm32", "wasm");
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) =