From d74721716a0c47fdbbf524c35988583c3d16c3a4 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Tue, 3 Dec 2019 14:30:32 +0300 Subject: [PATCH] [JS IR] Use short klib names instead of absolute paths --- compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt | 8 +++++++- libraries/stdlib/js-ir/build.gradle.kts | 14 +++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt b/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt index 530f50822c9..60f27215550 100644 --- a/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt +++ b/compiler/cli/cli-js-klib/src/GenerateJsIrKlib.kt @@ -104,12 +104,14 @@ fun main(args: Array) { var outputPath: String? = null val dependencies = mutableListOf() val commonSources = mutableListOf() + var moduleName: String? = null var index = 0 while (index < args.size) { val arg = args[index++] when (arg) { + "-n" -> moduleName = args[index++] "-o" -> outputPath = args[index++] "-d" -> dependencies += args[index++] "-c" -> commonSources += args[index++] @@ -121,11 +123,15 @@ fun main(args: Array) { error("Please set path to .klm file: `-o some/dir/module-name.klm`") } + if (moduleName == null) { + error("Please set module name: `-n module-name`") + } + val resolvedLibraries = jsResolveLibraries( dependencies, messageCollectorLogger(MessageCollector.NONE) ) - buildKLib(File(outputPath).absolutePath, listOfKtFilesFrom(inputFiles), outputPath, resolvedLibraries, listOfKtFilesFrom(commonSources)) + buildKLib(moduleName, listOfKtFilesFrom(inputFiles), outputPath, resolvedLibraries, listOfKtFilesFrom(commonSources)) } // Copied here from `K2JsIrCompiler` instead of reusing in order to avoid circular dependencies between Gradle tasks diff --git a/libraries/stdlib/js-ir/build.gradle.kts b/libraries/stdlib/js-ir/build.gradle.kts index 660811fe693..855d28cab5f 100644 --- a/libraries/stdlib/js-ir/build.gradle.kts +++ b/libraries/stdlib/js-ir/build.gradle.kts @@ -162,13 +162,13 @@ val reducedRuntimeSources by task { into("$buildDir/reducedRuntime/src") } -fun JavaExec.buildKLib(sources: List, dependencies: List, outPath: String, commonSources: List) { +fun JavaExec.buildKLib(moduleName: String, sources: List, dependencies: List, outPath: String, commonSources: List) { inputs.files(sources) outputs.dir(file(outPath).parent) classpath = jsIrKlibCli main = "org.jetbrains.kotlin.ir.backend.js.GenerateJsIrKlibKt" workingDir = rootDir - args = sources.toList() + listOf("-o", outPath) + dependencies.flatMap { listOf("-d", it) } + commonSources.flatMap { listOf("-c", it) } + args = sources.toList() + listOf("-n", moduleName, "-o", outPath) + dependencies.flatMap { listOf("-d", it) } + commonSources.flatMap { listOf("-c", it) } dependsOn(":compiler:cli-js-klib:jar") passClasspathInJar() @@ -179,7 +179,8 @@ val fullRuntimeDir = buildDir.resolve("fullRuntime/klib") val generateFullRuntimeKLib by eagerTask { dependsOn(fullRuntimeSources) - buildKLib(sources = listOf(fullRuntimeSources.get().outputs.files.singleFile.path), + buildKLib(moduleName = "kotlin", + sources = listOf(fullRuntimeSources.get().outputs.files.singleFile.path), dependencies = emptyList(), outPath = fullRuntimeDir.absolutePath, commonSources = listOf("common", "src", "unsigned").map { "$buildDir/fullRuntime/src/libraries/stdlib/$it" } @@ -197,7 +198,8 @@ val generateReducedRuntimeKLib by eagerTask { dependsOn(reducedRuntimeSources) val outPath = buildDir.resolve("reducedRuntime/klib").absolutePath - buildKLib(sources = listOf(reducedRuntimeSources.get().outputs.files.singleFile.path), + buildKLib(moduleName = "kotlin", + sources = listOf(reducedRuntimeSources.get().outputs.files.singleFile.path), dependencies = emptyList(), outPath = outPath, commonSources = listOf("common", "src", "unsigned").map { "$buildDir/reducedRuntime/src/libraries/stdlib/$it" } @@ -205,7 +207,8 @@ val generateReducedRuntimeKLib by eagerTask { } val generateWasmRuntimeKLib by eagerTask { - buildKLib(sources = listOf("$rootDir/libraries/stdlib/wasm"), + buildKLib(moduleName = "kotlin", + sources = listOf("$rootDir/libraries/stdlib/wasm"), dependencies = emptyList(), outPath = "$buildDir/wasmRuntime/klib", commonSources = emptyList() @@ -220,6 +223,7 @@ val generateKotlinTestKLib by eagerTask { dependsOn(generateFullRuntimeKLib) buildKLib( + moduleName = "kotlin-test", sources = listOf("$rootDir/libraries/kotlin.test/js/src/main") + kotlinTestCommonSources, dependencies = listOf("${generateFullRuntimeKLib.outputs.files.singleFile.path}/klib"), outPath = "$buildDir/kotlin.test/klib",