Fix linkTaskName getters of K/N compilations

This commit is contained in:
Ilya Matveev
2019-01-10 15:23:57 +07:00
parent 5eea0145b3
commit 9ca07bc706
5 changed files with 11 additions and 10 deletions
@@ -183,6 +183,7 @@ class NewMultiplatformIT : BaseGradleIT() {
build("checkBinaryGetters") {
assertTrue(output.contains("Wasm binary file: main.wasm"))
assertTrue(output.contains("Wasm link task: linkMainReleaseExecutableWasm32"))
assertTrue(output.contains("Wasm link task name: linkMainReleaseExecutableWasm32"))
val testFiles = listOf(
"MacOS" to "test.kexe",
@@ -64,6 +64,7 @@ kotlin {
doLast {
println("Wasm binary file: ${wasm32.compilations.getByName("main").getBinary("EXECUTABLE", "RELEASE").name}")
println("Wasm link task: ${wasm32.compilations.getByName("main").getLinkTask("EXECUTABLE", "RELEASE").name}")
println("Wasm link task name: ${wasm32.compilations.getByName("main").linkTaskName("EXECUTABLE", "RELEASE")}")
println("Windows test file: ${mingw64.compilations.getByName("test").getBinary("EXECUTABLE", "DEBUG").name}")
println("Windows test link task: ${mingw64.compilations.getByName("test").getLinkTask("EXECUTABLE", "DEBUG").name}")
@@ -84,6 +84,7 @@ task checkBinaryGetters {
doLast {
println("Wasm binary file: ${kotlin.targets.wasm32.compilations.main.getBinary("EXECUTABLE", "RELEASE").name}")
println("Wasm link task: ${kotlin.targets.wasm32.compilations.main.getLinkTask("EXECUTABLE", "RELEASE").name}")
println("Wasm link task name: ${kotlin.targets.wasm32.compilations.main.linkTaskName("EXECUTABLE", "RELEASE")}")
println("Windows test file: ${kotlin.targets.mingw64.compilations.test.getBinary("EXECUTABLE", "DEBUG").name}")
println("Windows test link task: ${kotlin.targets.mingw64.compilations.test.getLinkTask("EXECUTABLE", "DEBUG").name}")
@@ -36,16 +36,13 @@ open class KotlinNativeBinaryContainer @Inject constructor(
internal val prefixGroups: NamedDomainObjectSet<PrefixGroup> = WrapUtil.toNamedDomainObjectSet(PrefixGroup::class.java)
// region DSL getters.
private fun generateName(prefix: String, buildType: NativeBuildType, outputKindClassifier: String) =
lowerCamelCaseName(prefix, buildType.getName(), outputKindClassifier)
private inline fun <reified T : NativeBinary> getBinary(
namePrefix: String,
buildType: NativeBuildType,
outputKind: NativeOutputKind
): T {
val classifier = outputKind.taskNameClassifier
val name = generateName(namePrefix, buildType, classifier)
val name = generateBinaryName(namePrefix, buildType, classifier)
val binary = getByName(name)
require(binary is T && binary.buildType == buildType) {
"Binary $name has incorrect outputKind or build type.\n" +
@@ -60,7 +57,7 @@ open class KotlinNativeBinaryContainer @Inject constructor(
outputKind: NativeOutputKind
): T? {
val classifier = outputKind.taskNameClassifier
val name = generateName(namePrefix, buildType, classifier)
val name = generateBinaryName(namePrefix, buildType, classifier)
val binary = findByName(name)
return if (binary is T && binary.buildType == buildType) {
binary
@@ -112,7 +109,7 @@ open class KotlinNativeBinaryContainer @Inject constructor(
}
buildTypes.forEach { buildType ->
val name = generateName(namePrefix, buildType, outputKind.taskNameClassifier)
val name = generateBinaryName(namePrefix, buildType, outputKind.taskNameClassifier)
require(name !in nameToBinary) {
"Cannot create binary $name: binary with such a name already exists"
@@ -149,6 +146,9 @@ open class KotlinNativeBinaryContainer @Inject constructor(
companion object {
internal val DEFAULT_TEST_BUILD_TYPE = NativeBuildType.DEBUG
internal fun generateBinaryName(prefix: String, buildType: NativeBuildType, outputKindClassifier: String) =
lowerCamelCaseName(prefix, buildType.getName(), outputKindClassifier)
}
// endregion.
@@ -412,10 +412,8 @@ class KotlinNativeCompilation(
fun linkTaskName(kind: NativeOutputKind, buildType: NativeBuildType): String =
lowerCamelCaseName(
"link",
compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }.orEmpty(),
buildType.name.toLowerCase(),
kind.taskNameClassifier,
target.disambiguationClassifier
KotlinNativeBinaryContainer.generateBinaryName(compilationName, buildType, kind.taskNameClassifier),
target.targetName
)
fun linkTaskName(kind: String, buildType: String) =