[Gradle, JS] outputName -> moduleName

This commit is contained in:
Ilya Goncharov
2022-09-19 17:55:56 +02:00
committed by teamcity
parent 55731f27a4
commit cab79d950f
16 changed files with 53 additions and 34 deletions
@@ -16,6 +16,10 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
@JvmStatic private val serialVersionUID = 0L
}
@GradleOption(
value = DefaultValues.StringNullDefault::class,
gradleInputType = GradleInputTypes.INTERNAL // handled by task 'outputFileProperty'
)
@GradleDeprecatedOption(
message = "Only for legacy backend. For IR backend please use task.destinationDirectory and moduleName",
level = DeprecationLevel.WARNING,
@@ -27,8 +31,12 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
@Argument(value = "-Xir-output-dir", valueDescription = "<directory>", description = "Destination for generated files")
var outputDir: String? by NullableStringFreezableVar(null)
@Argument(value = "-Xir-output-name", description = "Base name of generated files")
var outputName: String? by NullableStringFreezableVar(null)
@GradleOption(
value = DefaultValues.StringNullDefault::class,
gradleInputType = GradleInputTypes.INPUT
)
@Argument(value = "-Xir-module-name", description = "Base name of generated files")
var moduleName: String? by NullableStringFreezableVar(null)
@GradleOption(
value = DefaultValues.BooleanTrueDefault::class,
@@ -185,7 +193,7 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
var irOnly: Boolean by FreezableVar(false)
@Argument(
value = "-Xir-module-name",
value = "-Xir-klib-module-name",
valueDescription = "<name>",
description = "Specify a compilation module name for IR backend"
)
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.cli.js
import com.intellij.openapi.Disposable
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.backend.common.CompilationException
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
@@ -48,14 +47,12 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImplForJsIC
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
import org.jetbrains.kotlin.js.config.*
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.serialization.js.ModuleKind
import org.jetbrains.kotlin.utils.KotlinPaths
import org.jetbrains.kotlin.utils.PathUtil
import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
import org.jetbrains.kotlin.utils.join
import java.io.File
import java.io.IOException
@@ -239,7 +236,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
if (!checkKotlinPackageUsage(environmentForJS.configuration, sourcesFiles)) return ExitCode.COMPILATION_ERROR
val outputDirPath = arguments.outputDir
val outputName = arguments.outputName
val outputName = arguments.moduleName
if (outputDirPath == null) {
messageCollector.report(ERROR, "IR: Specify output dir via -Xir-output-dir", null)
return ExitCode.COMPILATION_ERROR
@@ -2,7 +2,6 @@ package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.incremental.testingUtils.BuildLogFinder
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
import java.io.File
abstract class AbstractIncrementalJsKlibCompilerRunnerTest : AbstractIncrementalJsCompilerRunnerTest() {
@@ -10,7 +9,7 @@ abstract class AbstractIncrementalJsKlibCompilerRunnerTest : AbstractIncremental
K2JSCompilerArguments().apply {
libraries = "build/js-ir-runtime/full-runtime.klib"
outputDir = destinationDir.path
outputName = testDir.name
moduleName = testDir.name
outputFile = null
sourceMap = false
irProduceKlibDir = false
@@ -20,7 +20,7 @@ abstract class AbstractIncrementalMultiModuleJsKlibCompilerRunnerTest :
K2JSCompilerArguments().apply {
libraries = STDLIB_DEPENDENCY
outputDir = destinationDir.path
outputName = testDir.name
moduleName = testDir.name
sourceMap = false
irProduceKlibDir = false
irProduceKlibFile = true
@@ -83,7 +83,7 @@ abstract class AbstractIncrementalMultiModuleJsKlibCompilerRunnerTest :
libraries = sb.toString()
outputDir = outFile.parentFile.path
outputName = outFile.nameWithoutExtension
moduleName = outFile.nameWithoutExtension
}
companion object {
@@ -107,7 +107,7 @@ abstract class AbstractJsKlibLookupTrackerTest : AbstractJsLookupTrackerTest() {
args.irProduceKlibDir = true
args.irOnly = true
args.outputDir = outDir.normalize().absolutePath
args.outputName = "out"
args.moduleName = "out"
}
}
@@ -54,7 +54,7 @@ abstract class AbstractJsKlibBinaryCompatibilityTest : AbstractKlibBinaryCompati
freeArgs = createFiles(module.versionFiles(version))
libraries = module.dependenciesToLibrariesArg(version = version)
outputDir = workingDir.normalize().absolutePath
outputName = module.name(version)
moduleName = module.name(version)
irProduceKlibFile = true
irOnly = true
irModuleName = module.name
@@ -69,7 +69,7 @@ abstract class AbstractJsKlibBinaryCompatibilityTest : AbstractKlibBinaryCompati
freeArgs = createFiles(module.files) + runnerFunctionFile()
libraries = module.dependenciesToLibrariesArg(version = 2)
outputDir = workingDir.normalize().absolutePath
outputName = module.name
moduleName = module.name
irProduceJs = true
irOnly = true
irModuleName = module.name
@@ -37,6 +37,14 @@ interface CompilerJsOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonOpti
@get:org.gradle.api.tasks.Input
val moduleKind: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsModuleKind>
/**
* Base name of generated files
* Default value: null
*/
@get:org.gradle.api.tasks.Optional
@get:org.gradle.api.tasks.Input
val moduleName: org.gradle.api.provider.Property<kotlin.String>
/**
* Don't automatically include the default Kotlin/JS stdlib into compilation dependencies
* Default value: true
@@ -48,12 +56,9 @@ interface CompilerJsOptions : org.jetbrains.kotlin.gradle.dsl.CompilerCommonOpti
* Destination *.js file for the compilation result
* Default value: null
*/
@Deprecated(message = "Use task 'outputFileProperty' to specify location", level = DeprecationLevel.WARNING)
@Deprecated(message = "Only for legacy backend. For IR backend please use task.destinationDirectory and moduleName", level = DeprecationLevel.WARNING)
@get:org.gradle.api.tasks.Internal
val outputFile: org.gradle.api.provider.Property<kotlin.String?>
@get:org.gradle.api.tasks.Input
val outputName: org.gradle.api.provider.Property<kotlin.String>
val outputFile: org.gradle.api.provider.Property<kotlin.String>
/**
* Generate source map
@@ -51,6 +51,14 @@ interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
get() = options.moduleKind.get().moduleKindKotlinOption
set(value) = options.moduleKind.set(value.moduleKindCompilerOption)
/**
* Base name of generated files
* Default value: null
*/
var moduleName: kotlin.String?
get() = options.moduleName.orNull
set(value) = options.moduleName.set(value)
/**
* Don't automatically include the default Kotlin/JS stdlib into compilation dependencies
* Default value: true
@@ -21,11 +21,14 @@ internal abstract class CompilerJsOptionsDefault @javax.inject.Inject constructo
override val moduleKind: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsModuleKind> =
objectFactory.property(org.jetbrains.kotlin.gradle.dsl.JsModuleKind::class.java).convention(org.jetbrains.kotlin.gradle.dsl.JsModuleKind.MODULE_PLAIN)
override val moduleName: org.gradle.api.provider.Property<kotlin.String> =
objectFactory.property(kotlin.String::class.java)
override val noStdlib: org.gradle.api.provider.Property<kotlin.Boolean> =
objectFactory.property(kotlin.Boolean::class.java).convention(true)
@Deprecated(message = "Use task 'outputFileProperty' to specify location", level = DeprecationLevel.WARNING)
override val outputFile: org.gradle.api.provider.Property<kotlin.String?> =
@Deprecated(message = "Only for legacy backend. For IR backend please use task.destinationDirectory and moduleName", level = DeprecationLevel.WARNING)
override val outputFile: org.gradle.api.provider.Property<kotlin.String> =
objectFactory.property(kotlin.String::class.java)
override val sourceMap: org.gradle.api.provider.Property<kotlin.Boolean> =
@@ -49,6 +52,7 @@ internal abstract class CompilerJsOptionsDefault @javax.inject.Inject constructo
args.main = main.get().mode
args.metaInfo = metaInfo.get()
args.moduleKind = moduleKind.get().kind
args.moduleName = moduleName.orNull
args.noStdlib = noStdlib.get()
args.outputFile = outputFile.orNull
args.sourceMap = sourceMap.get()
@@ -64,6 +68,7 @@ internal abstract class CompilerJsOptionsDefault @javax.inject.Inject constructo
args.main = org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.CALL.mode
args.metaInfo = true
args.moduleKind = org.jetbrains.kotlin.gradle.dsl.JsModuleKind.MODULE_PLAIN.kind
args.moduleName = null
args.noStdlib = true
args.outputFile = null
args.sourceMap = false
@@ -22,7 +22,7 @@ internal const val PRODUCE_ZIPPED_KLIB = "-Xir-produce-klib-file"
internal const val MINIMIZED_MEMBER_NAMES = "-Xir-minimized-member-names"
internal const val MODULE_NAME = "-Xir-module-name"
internal const val KLIB_MODULE_NAME = "-Xir-klib-module-name"
internal const val PER_MODULE = "-Xir-per-module"
internal const val PER_MODULE_OUTPUT_NAME = "-Xir-per-module-output-name"
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.Task
import org.gradle.api.file.RegularFile
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.Copy
import org.gradle.language.base.plugins.LifecycleBasePlugin
@@ -207,7 +206,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
) { task ->
val entryFileProvider = binary.linkSyncTask.zip(binary.linkTask) { sync, link ->
sync.destinationDir
.resolve(link.compilerOptions.outputName.get() + ".js")
.resolve(link.compilerOptions.moduleName.get() + ".js")
}
task.description = "build webpack ${mode.name.toLowerCase()} bundle"
@@ -43,7 +43,7 @@ constructor(
val linkTask = binary.linkTask
val compiledWasmFile = linkTask.map { link ->
link.destinationDirectory.asFile.get().resolve(link.compilerOptions.outputName.get() + ".wasm")
link.destinationDirectory.asFile.get().resolve(link.compilerOptions.moduleName.get() + ".wasm")
}
//TODO This is temporary solution that overrides compiled files that triggers recompile and reoptimize wasm every time (when binaryen is enabled)
@@ -136,7 +136,7 @@ abstract class KotlinJsIrSubTarget(
else -> error("Only JS and WASM supported for KotlinJsTest")
}
binary.linkTask
.flatMap { linkTask -> linkTask.compilerOptions.outputName }
.flatMap { linkTask -> linkTask.compilerOptions.moduleName }
.map { outputName ->
copyTask.destinationDir
.resolve(outputName + extension)
@@ -1011,10 +1011,10 @@ abstract class Kotlin2JsCompile @Inject constructor(
if (outputFilePath != null) {
val outputFile = File(outputFilePath)
args.outputDir = (if (outputFile.extension == "") outputFile else outputFile.parentFile).normalize().absolutePath
args.outputName = outputFile.nameWithoutExtension
args.moduleName = outputFile.nameWithoutExtension
} else {
args.outputDir = destinationDirectory.get().asFile.normalize().absolutePath
args.outputName = compilerOptions.outputName.get()
args.moduleName = compilerOptions.moduleName.get()
}
} else {
args.outputFile = outputFileProperty.get().absoluteFile.normalize().absolutePath
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.tasks.configuration
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.isMainCompilationData
import org.jetbrains.kotlin.gradle.targets.js.ir.*
@@ -14,7 +13,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.PRODUCE_UNZIPPED_KLIB
import org.jetbrains.kotlin.gradle.targets.js.ir.PRODUCE_ZIPPED_KLIB
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.klibModuleName
import java.io.File
internal typealias Kotlin2JsCompileConfig = BaseKotlin2JsCompileConfig<Kotlin2JsCompile>
@@ -34,14 +32,14 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
configureAdditionalFreeCompilerArguments(task, compilation)
task.compilerOptions.outputName.convention(
task.compilerOptions.moduleName.convention(
compilation.ownModuleName
)
@Suppress("DEPRECATION")
task.outputFileProperty.value(
task.destinationDirectory.flatMap { dir ->
task.compilerOptions.outputName.map { name ->
task.compilerOptions.moduleName.map { name ->
dir.file(name).asFile
}
}
@@ -84,7 +82,7 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
} else {
"${project.name}_${compilation.compilationPurpose}"
}
add("$MODULE_NAME=${project.klibModuleName(baseName)}")
add("$KLIB_MODULE_NAME=${project.klibModuleName(baseName)}")
}
}
}
@@ -43,7 +43,7 @@ internal open class KotlinJsIrLinkConfig(
.map { it.dir(binary.name) }
.map { it.dir(NpmProject.DIST_FOLDER) }
)
task.compilerOptions.outputName.convention(project.provider { compilation.npmProject.name })
task.compilerOptions.moduleName.convention(project.provider { compilation.npmProject.name })
}
}