[Gradle, JS] Add arguments for building caches
This commit is contained in:
+10
@@ -161,6 +161,16 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
)
|
||||
var includes: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xcache-directories",
|
||||
valueDescription = "<path>",
|
||||
description = "A path to cache directories"
|
||||
)
|
||||
var cacheDirectories: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(value = "-Xir-build-cache", description = "Use compiler to build cache")
|
||||
var irBuildCache: Boolean by FreezableVar(false)
|
||||
|
||||
@Argument(
|
||||
value = "-Xgenerate-dts",
|
||||
description = "Generate TypeScript declarations .d.ts file alongside JS file. Available in IR backend only."
|
||||
|
||||
+2
@@ -1,5 +1,6 @@
|
||||
Usage: kotlinc-js <options> <source files>
|
||||
where advanced options include:
|
||||
-Xcache-directories=<path> A path to cache directories
|
||||
-Xenable-js-scripting Enable experimental support of .kts files using K/JS (with -Xir only)
|
||||
-Xerror-tolerance-policy Set up error tolerance policy (NONE, SEMANTIC, SYNTAX, ALL)
|
||||
-Xfake-override-validator Enable IR fake override validator
|
||||
@@ -7,6 +8,7 @@ where advanced options include:
|
||||
-Xfriend-modules-disabled Disable internal declaration export
|
||||
-Xgenerate-dts Generate TypeScript declarations .d.ts file alongside JS file. Available in IR backend only.
|
||||
-Xinclude=<path> A path to an intermediate library that should be processed in the same manner as source files.
|
||||
-Xir-build-cache Use compiler to build cache
|
||||
-Xir-dce Perform experimental dead code elimination
|
||||
-Xir-dce-driven Perform a more experimental faster dead code elimination
|
||||
-Xir-dce-print-reachability-info
|
||||
|
||||
+11
-21
@@ -112,11 +112,9 @@ abstract class KotlinJsIrLink @Inject constructor(
|
||||
allCacheDirectories
|
||||
)
|
||||
|
||||
args.freeArgs += "-Xcache-directory=${
|
||||
cacheArgs.joinToString(File.pathSeparator) {
|
||||
it.normalize().absolutePath
|
||||
}
|
||||
}"
|
||||
args.cacheDirectories = cacheArgs.joinToString(File.pathSeparator) {
|
||||
it.normalize().absolutePath
|
||||
}
|
||||
}
|
||||
super.callCompilerAsync(args, sourceRoots, changedFiles)
|
||||
}
|
||||
@@ -235,10 +233,7 @@ internal class CacheBuilder(
|
||||
visitedFiles,
|
||||
compileClasspath.files,
|
||||
cacheDirectory,
|
||||
(allCacheDirectories + associatedCaches).distinct(),
|
||||
|
||||
|
||||
file.name
|
||||
(allCacheDirectories + associatedCaches).distinct()
|
||||
)
|
||||
allCacheDirectories.add(cacheDirectory)
|
||||
}
|
||||
@@ -278,9 +273,7 @@ internal class CacheBuilder(
|
||||
.flatMap { it.moduleArtifacts }
|
||||
.map { it.file },
|
||||
cacheDirectory,
|
||||
dependenciesCacheDirectories,
|
||||
|
||||
library.name
|
||||
dependenciesCacheDirectories
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -290,10 +283,7 @@ internal class CacheBuilder(
|
||||
visitedFiles: MutableSet<File>,
|
||||
dependencies: Collection<File>,
|
||||
cacheDirectory: File,
|
||||
dependenciesCacheDirectories: Collection<File>,
|
||||
|
||||
|
||||
jsName: String
|
||||
dependenciesCacheDirectories: Collection<File>
|
||||
) {
|
||||
if (file in visitedFiles) return
|
||||
val compilerArgs = compilerArgsFactory()
|
||||
@@ -307,11 +297,11 @@ internal class CacheBuilder(
|
||||
|
||||
visitedFiles.add(file)
|
||||
compilerArgs.includes = file.normalize().absolutePath
|
||||
compilerArgs.outputFile = cacheDirectory.resolve("${jsName}.js").normalize().absolutePath
|
||||
compilerArgs.freeArgs += "-Xcache-directory=${dependenciesCacheDirectories.joinToString(File.pathSeparator)}"
|
||||
|
||||
// Change it for produce caches
|
||||
compilerArgs.irProduceJs = true
|
||||
compilerArgs.outputFile = cacheDirectory.normalize().absolutePath
|
||||
if (dependenciesCacheDirectories.isNotEmpty()) {
|
||||
compilerArgs.cacheDirectories = dependenciesCacheDirectories.joinToString(File.pathSeparator)
|
||||
}
|
||||
compilerArgs.irBuildCache = true
|
||||
|
||||
compilerArgs.libraries = dependencies
|
||||
.filter { it.exists() && libraryFilter(it) }
|
||||
|
||||
Reference in New Issue
Block a user