From 084be21d89e7132fa98dc360b4dbdd500e85f2fc Mon Sep 17 00:00:00 2001 From: SvyatoslavScherbina Date: Fri, 7 Jun 2019 12:06:36 +0300 Subject: [PATCH] Optimize platform libraries build by sharing module cache (#3052) Was disabled with #2831. --- .../native/interop/indexer/ModuleSupport.kt | 17 +++++++++++++---- platformLibs/build.gradle | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/ModuleSupport.kt b/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/ModuleSupport.kt index 72e5eaca6bd..9c649fe8229 100644 --- a/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/ModuleSupport.kt +++ b/Interop/Indexer/src/main/kotlin/org/jetbrains/kotlin/native/interop/indexer/ModuleSupport.kt @@ -33,13 +33,22 @@ private fun buildModulesInfo(index: CXIndex, modules: List, modulesASTFi } internal open class ModularCompilation(compilation: Compilation): Compilation by compilation, Disposable { - private val moduleCacheDirectory = createTempDir("ModuleCache") - override val compilerArgs = compilation.compilerArgs + - listOf("-fmodules", "-fmodules-cache-path=${moduleCacheDirectory.absolutePath}") + companion object { + private const val moduleCacheFlag = "-fmodules-cache-path=" + } + + private val moduleCacheDirectory = if (compilation.compilerArgs.none { it.startsWith(moduleCacheFlag) }) { + createTempDir("ModuleCache") + } else { + null + } + + override val compilerArgs: List = compilation.compilerArgs + + listOfNotNull("-fmodules", moduleCacheDirectory?.let { "$moduleCacheFlag${it.absolutePath}" }) override fun dispose() { - moduleCacheDirectory.deleteRecursively() + moduleCacheDirectory?.deleteRecursively() } } diff --git a/platformLibs/build.gradle b/platformLibs/build.gradle index c456491bead..62114dd7685 100644 --- a/platformLibs/build.gradle +++ b/platformLibs/build.gradle @@ -64,6 +64,7 @@ project.rootProject.ext.platformManager.enabled.each { target -> klibs df.config.depends } extraOpts '-Xpurge-user-libs' + compilerOpts "-fmodules-cache-path=${project.buildDir}/clangModulesCache" } }