From 3334b9b3adec966b1a44d174e67b5a1fbd0a3cc9 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Wed, 25 Mar 2020 19:45:01 +0700 Subject: [PATCH] [Platform libs] Store def files in distribution on per-target basis --- build.gradle | 19 ++++++++++++++++--- platformLibs/build.gradle | 3 +-- .../utilities/GeneratePlatformLibraries.kt | 4 ++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index cc08a5fd3c2..1fc3ab3d3c1 100644 --- a/build.gradle +++ b/build.gradle @@ -74,6 +74,14 @@ ext { ] cacheableTargetNames = cacheableTargets.collect { it.visibleName } + // Some targets miss zlib in their sysroots. + // We skip these targets when generate a corresponding platform library. + // See also: the :distDef task, targetDefFiles in the :platformLibs project. + targetsWithoutZlib = [ + KonanTarget.LINUX_MIPS32.INSTANCE, + KonanTarget.LINUX_MIPSEL32.INSTANCE + ] + kotlinCompilerModule="org.jetbrains.kotlin:kotlin-compiler:${kotlinVersion}" kotlinStdLibModule="org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}" kotlinCommonStdlibModule="org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinStdlibVersion}:sources" @@ -388,9 +396,14 @@ task distDef(type: Copy) { destinationDir distDir - from(project("platformLibs").file("src/platform")) { - into('konan/platformDef') - include '**/*.def' + platformManager.targetValues.each { target -> + from(project("platformLibs").file("src/platform/${target.family.name().toLowerCase()}")) { + into("konan/platformDef/${target.visibleName}") + include '**/*.def' + if (target in targetsWithoutZlib) { + exclude '**/zlib.def' + } + } } } diff --git a/platformLibs/build.gradle b/platformLibs/build.gradle index 716026ed3d3..37d0363bace 100644 --- a/platformLibs/build.gradle +++ b/platformLibs/build.gradle @@ -42,8 +42,7 @@ private ArrayList targetDefFiles(KonanTarget target) { .findAll { it.name.endsWith(".def") } // The libz.a/libz.so and zlib.h are missing in MIPS sysroots. // Just workaround it until we have sysroots corrected. - .findAll { ! ((target instanceof KonanTarget.LINUX_MIPS32 || - target instanceof KonanTarget.LINUX_MIPSEL32) && it.name == 'zlib.def') } + .findAll { ! ((target in targetsWithoutZlib) && it.name == 'zlib.def') } .collect { DefFileKt.DefFile(it, target) } } diff --git a/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/GeneratePlatformLibraries.kt b/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/GeneratePlatformLibraries.kt index 53351499340..f4d67d2798c 100644 --- a/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/GeneratePlatformLibraries.kt +++ b/utilities/src/main/kotlin/org/jetbrains/kotlin/cli/utilities/GeneratePlatformLibraries.kt @@ -69,7 +69,7 @@ fun generatePlatformLibraries(args: Array) { val inputDirectoryPath by argParser.option( ArgType.String, "input-directory", "i", - "Input directory. Default value is /konan/platformDef/" + "Input directory. Default value is /konan/platformDef/" ) val outputDirectoryPath by argParser.option( ArgType.String, @@ -123,7 +123,7 @@ fun generatePlatformLibraries(args: Array) { val target = HostManager(distribution).targetByName(targetName) val inputDirectory = inputDirectoryPath?.File() - ?: File(distribution.konanSubdir, "platformDef").child(target.family.visibleName) + ?: File(distribution.konanSubdir, "platformDef").child(target.visibleName) val outputDirectory = outputDirectoryPath?.File() ?: File(distribution.klib, "platform").child(target.visibleName)