Merge Stdlib generators
This commit is contained in:
@@ -1,29 +0,0 @@
|
||||
configurations {
|
||||
generatorRuntime
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url project.bootstrapKotlinRepo
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
generatorRuntime "org.jetbrains.kotlin:kotlin-stdlib:${project.bootstrapKotlinVersion}"
|
||||
generatorRuntime "org.jetbrains.kotlin:kotlin-reflect:${project.bootstrapKotlinVersion}"
|
||||
generatorRuntime "org.jetbrains.kotlin:kotlin-stdlib-gen:${project.bootstrapKotlinVersion}"
|
||||
}
|
||||
|
||||
task run(type: JavaExec) {
|
||||
group 'application'
|
||||
main 'generators.GenerateStandardLibKt'
|
||||
classpath configurations.generatorRuntime
|
||||
args = ["native", "${project(":runtime").projectDir}/src/main/kotlin/generated"]
|
||||
}
|
||||
|
||||
task generateUnicodeData(type: JavaExec) {
|
||||
group 'application'
|
||||
main 'generators.unicode.GenerateUnicodeDataKt'
|
||||
classpath configurations.generatorRuntime
|
||||
args = ["native", "${project(":runtime").projectDir}/src/main/kotlin/generated", "${project(":backend.native").projectDir}/tests/stdlib_external/text"]
|
||||
}
|
||||
@@ -47,16 +47,11 @@ fun main(args: Array<String>) {
|
||||
targetBaseDirs[KotlinTarget.JS] = baseDir.resolveExistingDir("libraries/stdlib/js/src/generated")
|
||||
targetBaseDirs[KotlinTarget.JS_IR] = baseDir.resolveExistingDir("libraries/stdlib/js-ir/src/generated")
|
||||
targetBaseDirs[KotlinTarget.WASM] = baseDir.resolveExistingDir("libraries/stdlib/wasm/src/generated")
|
||||
}
|
||||
2 -> {
|
||||
val (targetName, targetDir) = args
|
||||
val target = KotlinTarget.values.singleOrNull { it.name.equals(targetName, ignoreCase = true) } ?: error("Invalid target: $targetName")
|
||||
targetBaseDirs[target] = File(targetDir).also { it.requireExistingDir() }
|
||||
targetBaseDirs[KotlinTarget.Native] = baseDir.resolveExistingDir("kotlin-native/runtime/src/main/kotlin/generated")
|
||||
}
|
||||
else -> {
|
||||
println("""Parameters:
|
||||
<kotlin-base-dir> - generates sources for common, jvm, js, ir-js targets using paths derived from specified base path
|
||||
<target> <target-dir> - generates source for the specified target in the specified target directory
|
||||
<kotlin-base-dir> - generates sources for common, jvm, js, ir-js, native targets using paths derived from specified base path
|
||||
""")
|
||||
exitProcess(1)
|
||||
}
|
||||
|
||||
@@ -30,12 +30,9 @@ private const val derivedCorePropertiesUrl = "https://www.unicode.org/Public/$un
|
||||
|
||||
/**
|
||||
* This program generates sources related to UnicodeData.txt and SpecialCasing.txt.
|
||||
* There are two ways to run the program.
|
||||
* 1. Pass the root directory of the project to generate sources for js and js-ir.
|
||||
* Pass the root directory of the project to generate sources for js, js-ir and native.
|
||||
* _CharCategoryTest.kt and supporting files are also generated to test the generated sources.
|
||||
* The generated test is meant to be run after updating Unicode version and should not be merged to master.
|
||||
* 2. Pass the name of the target to generate sources for, and the directory to generate sources in.
|
||||
* No tests are generated.
|
||||
*/
|
||||
fun main(args: Array<String>) {
|
||||
fun readLines(url: String): List<String> {
|
||||
@@ -96,12 +93,12 @@ fun main(args: Array<String>) {
|
||||
oneToManyMappingsGenerators.add(lowercase)
|
||||
}
|
||||
|
||||
var categoryTestGenerator: CharCategoryTestGenerator? = null
|
||||
val categoryTestGenerator: CharCategoryTestGenerator
|
||||
|
||||
var stringUppercaseGenerator: StringUppercaseGenerator? = null
|
||||
var stringLowercaseGenerator: StringLowercaseGenerator? = null
|
||||
val stringUppercaseGenerator: StringUppercaseGenerator
|
||||
val stringLowercaseGenerator: StringLowercaseGenerator
|
||||
|
||||
var stringCasingTestGenerator: StringCasingTestGenerator? = null
|
||||
val stringCasingTestGenerator: StringCasingTestGenerator
|
||||
|
||||
when (args.size) {
|
||||
1 -> {
|
||||
@@ -121,6 +118,16 @@ fun main(args: Array<String>) {
|
||||
addRangesGenerators(jsIrGeneratedDir, KotlinTarget.JS_IR)
|
||||
oneToOneMappingsGenerators.add(MappingsGenerator.forTitlecase(jsIrGeneratedDir.resolve("_TitlecaseMappings.kt")))
|
||||
|
||||
val nativeGeneratedDir = baseDir.resolve("kotlin-native/runtime/src/main/kotlin/generated/")
|
||||
addRangesGenerators(nativeGeneratedDir, KotlinTarget.Native)
|
||||
addOneToOneMappingsGenerators(nativeGeneratedDir, KotlinTarget.Native)
|
||||
addOneToManyMappingsGenerators(nativeGeneratedDir, KotlinTarget.Native)
|
||||
stringUppercaseGenerator = StringUppercaseGenerator(nativeGeneratedDir.resolve("_StringUppercase.kt"), unicodeDataLines)
|
||||
stringLowercaseGenerator = StringLowercaseGenerator(nativeGeneratedDir.resolve("_StringLowercase.kt"), unicodeDataLines)
|
||||
|
||||
val nativeTestDir = baseDir.resolve("kotlin-native/backend.native/tests/stdlib_external/text")
|
||||
stringCasingTestGenerator = StringCasingTestGenerator(nativeTestDir)
|
||||
|
||||
// For debugging. To see the file content
|
||||
fun downloadFile(fromUrl: String) {
|
||||
val fileName = File(fromUrl).name
|
||||
@@ -130,29 +137,10 @@ fun main(args: Array<String>) {
|
||||
downloadFile(unicodeDataUrl)
|
||||
downloadFile(specialCasingUrl)
|
||||
}
|
||||
3 -> {
|
||||
val (targetName, targetDir, testDir) = args
|
||||
|
||||
val target = KotlinTarget.values.singleOrNull { it.name.equals(targetName, ignoreCase = true) }
|
||||
?: error("Invalid target: $targetName")
|
||||
|
||||
val generatedDir = File(targetDir)
|
||||
addRangesGenerators(generatedDir, target)
|
||||
|
||||
if (target == KotlinTarget.Native) {
|
||||
addOneToOneMappingsGenerators(generatedDir, target)
|
||||
addOneToManyMappingsGenerators(generatedDir, target)
|
||||
stringUppercaseGenerator = StringUppercaseGenerator(generatedDir.resolve("_StringUppercase.kt"), unicodeDataLines)
|
||||
stringLowercaseGenerator = StringLowercaseGenerator(generatedDir.resolve("_StringLowercase.kt"), unicodeDataLines)
|
||||
|
||||
stringCasingTestGenerator = StringCasingTestGenerator(File(testDir))
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
println(
|
||||
"""Parameters:
|
||||
<kotlin-base-dir> - generates sources for js and js-ir targets using paths derived from specified base path
|
||||
<target> <target-dir> <test-dir> - generates sources for the specified target in the specified target directory
|
||||
<kotlin-base-dir> - generates sources for js, js-ir and native targets using paths derived from specified base path
|
||||
"""
|
||||
)
|
||||
exitProcess(1)
|
||||
@@ -167,7 +155,7 @@ fun main(args: Array<String>) {
|
||||
it.generate()
|
||||
}
|
||||
|
||||
categoryTestGenerator?.let {
|
||||
categoryTestGenerator.let {
|
||||
bmpUnicodeDataLines.forEach { line -> it.appendLine(line) }
|
||||
it.generate()
|
||||
}
|
||||
@@ -182,17 +170,17 @@ fun main(args: Array<String>) {
|
||||
it.generate()
|
||||
}
|
||||
|
||||
stringUppercaseGenerator?.let {
|
||||
stringUppercaseGenerator.let {
|
||||
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
||||
it.generate()
|
||||
}
|
||||
stringLowercaseGenerator?.let {
|
||||
stringLowercaseGenerator.let {
|
||||
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
||||
propListLines.forEach { line -> it.appendPropListLine(line) }
|
||||
wordBreakPropertyLines.forEach { line -> it.appendWordBreakPropertyLine(line) }
|
||||
it.generate()
|
||||
}
|
||||
stringCasingTestGenerator?.let {
|
||||
stringCasingTestGenerator.let {
|
||||
derivedCorePropertiesLines.forEach { line -> it.appendDerivedCorePropertiesLine(line) }
|
||||
it.generate()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user