[JS] Get rid of outputFile in compiler args (KT-61116)

^KT-56753 fixed
This commit is contained in:
Ilya Goncharov
2023-11-08 14:30:58 +01:00
committed by Space Team
parent 9fcf6c5f89
commit 2340d59f40
27 changed files with 23 additions and 645 deletions
@@ -15,22 +15,12 @@ internal abstract class KotlinJsCompilerOptionsDefault @javax.inject.Inject cons
override val main: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode> =
objectFactory.property(org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode::class.java).convention(org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.CALL)
override val metaInfo: org.gradle.api.provider.Property<kotlin.Boolean> =
objectFactory.property(kotlin.Boolean::class.java).convention(true)
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 = "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> =
objectFactory.property(kotlin.Boolean::class.java).convention(false)
@@ -14,11 +14,8 @@ internal object KotlinJsCompilerOptionsHelper {
org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.fillCompilerArguments(from, args)
args.friendModulesDisabled = from.friendModulesDisabled.get()
args.main = from.main.get().mode
args.metaInfo = from.metaInfo.get()
args.moduleKind = from.moduleKind.get().kind
args.moduleName = from.moduleName.orNull
args.noStdlib = from.noStdlib.get()
args.outputFile = from.outputFile.orNull
args.sourceMap = from.sourceMap.get()
args.sourceMapEmbedSources = from.sourceMapEmbedSources.orNull?.mode
args.sourceMapNamesPolicy = from.sourceMapNamesPolicy.orNull?.policy
@@ -35,11 +32,8 @@ internal object KotlinJsCompilerOptionsHelper {
org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.syncOptionsAsConvention(from, into)
into.friendModulesDisabled.convention(from.friendModulesDisabled)
into.main.convention(from.main)
into.metaInfo.convention(from.metaInfo)
into.moduleKind.convention(from.moduleKind)
into.moduleName.convention(from.moduleName)
into.noStdlib.convention(from.noStdlib)
into.outputFile.convention(from.outputFile)
into.sourceMap.convention(from.sourceMap)
into.sourceMapEmbedSources.convention(from.sourceMapEmbedSources)
into.sourceMapNamesPolicy.convention(from.sourceMapNamesPolicy)
@@ -58,23 +58,10 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
val kotlinSourceDirectorySet = compilationInfo.tcs.compilation.defaultSourceSet.kotlin
kotlinSourceDirectorySet.destinationDirectory.value(defaultKotlinDestinationDir)
task.configure {
if (it is Kotlin2JsCompile) {
it.defaultDestinationDirectory.convention(kotlinSourceDirectorySet.destinationDirectory)
} else {
it.destinationDirectory.convention(kotlinSourceDirectorySet.destinationDirectory)
}
it.destinationDirectory.convention(kotlinSourceDirectorySet.destinationDirectory)
}
compilationInfo.classesDirs.from(kotlinSourceDirectorySet.destinationDirectory).builtBy(task)
if (compilationInfo.tcs.compilation.platformType == KotlinPlatformType.js) {
@Suppress("UNCHECKED_CAST")
kotlinSourceDirectorySet.compiledBy(
task as TaskProvider<Kotlin2JsCompile>,
Kotlin2JsCompile::defaultDestinationDirectory
)
(kotlinSourceDirectorySet.classesDirectory as Property<Directory>).set(task.flatMap { it.destinationDirectory })
} else {
kotlinSourceDirectorySet.compiledBy(task, AbstractKotlinCompile<*>::destinationDirectory)
}
kotlinSourceDirectorySet.compiledBy(task, AbstractKotlinCompile<*>::destinationDirectory)
if (compilationInfo.isMain) {
project.tasks.named(
compilationInfo.tcs.compilation.target.artifactsTaskName,
@@ -133,11 +120,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
protected fun applyStandardTaskConfiguration(taskConfiguration: AbstractKotlinCompileConfig<*>) {
taskConfiguration.configureTask {
it.description = taskDescription
if (it is Kotlin2JsCompile) {
it.defaultDestinationDirectory.convention(defaultKotlinDestinationDir)
} else {
it.destinationDirectory.convention(defaultKotlinDestinationDir)
}
it.destinationDirectory.convention(defaultKotlinDestinationDir)
it.libraries.from({ compilationInfo.compileDependencyFiles })
}
}
@@ -87,10 +87,9 @@ internal object CompilerArgumentMetrics : FusMetrics {
is K2JSCompilerArguments -> {
val args = K2JSCompilerArguments()
parseCommandLineArguments(argsArray.toList(), args)
if (!args.isPreIrBackendDisabled() || args.irProduceJs) {
metricsConsumer.report(BooleanMetrics.JS_SOURCE_MAP, args.sourceMap)
}
if (args.irProduceJs) {
metricsConsumer.report(BooleanMetrics.JS_SOURCE_MAP, args.sourceMap)
metricsConsumer.report(StringMetrics.JS_PROPERTY_LAZY_INITIALIZATION, args.irPropertyLazyInitialization.toString())
}
}
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.*
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.klibModuleName
import org.jetbrains.kotlin.gradle.utils.providerWithLazyConvention
import java.io.File
internal typealias Kotlin2JsCompileConfig = BaseKotlin2JsCompileConfig<Kotlin2JsCompile>
@@ -37,26 +36,6 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
configureAdditionalFreeCompilerArguments(task, compilation)
task.destinationDirectory
.convention(
project.objects.directoryProperty().fileProvider(
task.defaultDestinationDirectory.map {
val freeArgs = task.enhancedFreeCompilerArgs.get()
@Suppress("DEPRECATION")
if (task.compilerOptions.outputFile.orNull != null) {
if (freeArgs.contains(PRODUCE_UNZIPPED_KLIB)) {
val file = File(task.compilerOptions.outputFile.get())
if (file.extension == "") file else file.parentFile
} else {
File(task.compilerOptions.outputFile.get()).parentFile
}
} else {
it.asFile
}
}
)
)
task.libraryFilterCacheService.value(libraryFilterCachingService).disallowChanges()
task.incrementalModuleInfoProvider.value(incrementalModuleInfoProvider).disallowChanges()
}