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] = baseDir.resolveExistingDir("libraries/stdlib/js/src/generated")
|
||||||
targetBaseDirs[KotlinTarget.JS_IR] = baseDir.resolveExistingDir("libraries/stdlib/js-ir/src/generated")
|
targetBaseDirs[KotlinTarget.JS_IR] = baseDir.resolveExistingDir("libraries/stdlib/js-ir/src/generated")
|
||||||
targetBaseDirs[KotlinTarget.WASM] = baseDir.resolveExistingDir("libraries/stdlib/wasm/src/generated")
|
targetBaseDirs[KotlinTarget.WASM] = baseDir.resolveExistingDir("libraries/stdlib/wasm/src/generated")
|
||||||
}
|
targetBaseDirs[KotlinTarget.Native] = baseDir.resolveExistingDir("kotlin-native/runtime/src/main/kotlin/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() }
|
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
println("""Parameters:
|
println("""Parameters:
|
||||||
<kotlin-base-dir> - generates sources for common, jvm, js, ir-js targets using paths derived from specified base path
|
<kotlin-base-dir> - generates sources for common, jvm, js, ir-js, native targets using paths derived from specified base path
|
||||||
<target> <target-dir> - generates source for the specified target in the specified target directory
|
|
||||||
""")
|
""")
|
||||||
exitProcess(1)
|
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.
|
* This program generates sources related to UnicodeData.txt and SpecialCasing.txt.
|
||||||
* There are two ways to run the program.
|
* Pass the root directory of the project to generate sources for js, js-ir and native.
|
||||||
* 1. Pass the root directory of the project to generate sources for js and js-ir.
|
|
||||||
* _CharCategoryTest.kt and supporting files are also generated to test the generated sources.
|
* _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.
|
* 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 main(args: Array<String>) {
|
||||||
fun readLines(url: String): List<String> {
|
fun readLines(url: String): List<String> {
|
||||||
@@ -96,12 +93,12 @@ fun main(args: Array<String>) {
|
|||||||
oneToManyMappingsGenerators.add(lowercase)
|
oneToManyMappingsGenerators.add(lowercase)
|
||||||
}
|
}
|
||||||
|
|
||||||
var categoryTestGenerator: CharCategoryTestGenerator? = null
|
val categoryTestGenerator: CharCategoryTestGenerator
|
||||||
|
|
||||||
var stringUppercaseGenerator: StringUppercaseGenerator? = null
|
val stringUppercaseGenerator: StringUppercaseGenerator
|
||||||
var stringLowercaseGenerator: StringLowercaseGenerator? = null
|
val stringLowercaseGenerator: StringLowercaseGenerator
|
||||||
|
|
||||||
var stringCasingTestGenerator: StringCasingTestGenerator? = null
|
val stringCasingTestGenerator: StringCasingTestGenerator
|
||||||
|
|
||||||
when (args.size) {
|
when (args.size) {
|
||||||
1 -> {
|
1 -> {
|
||||||
@@ -121,6 +118,16 @@ fun main(args: Array<String>) {
|
|||||||
addRangesGenerators(jsIrGeneratedDir, KotlinTarget.JS_IR)
|
addRangesGenerators(jsIrGeneratedDir, KotlinTarget.JS_IR)
|
||||||
oneToOneMappingsGenerators.add(MappingsGenerator.forTitlecase(jsIrGeneratedDir.resolve("_TitlecaseMappings.kt")))
|
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
|
// For debugging. To see the file content
|
||||||
fun downloadFile(fromUrl: String) {
|
fun downloadFile(fromUrl: String) {
|
||||||
val fileName = File(fromUrl).name
|
val fileName = File(fromUrl).name
|
||||||
@@ -130,29 +137,10 @@ fun main(args: Array<String>) {
|
|||||||
downloadFile(unicodeDataUrl)
|
downloadFile(unicodeDataUrl)
|
||||||
downloadFile(specialCasingUrl)
|
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 -> {
|
else -> {
|
||||||
println(
|
println(
|
||||||
"""Parameters:
|
"""Parameters:
|
||||||
<kotlin-base-dir> - generates sources for js and js-ir targets using paths derived from specified base path
|
<kotlin-base-dir> - generates sources for js, js-ir and native targets using paths derived from specified base path
|
||||||
<target> <target-dir> <test-dir> - generates sources for the specified target in the specified target directory
|
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
exitProcess(1)
|
exitProcess(1)
|
||||||
@@ -167,7 +155,7 @@ fun main(args: Array<String>) {
|
|||||||
it.generate()
|
it.generate()
|
||||||
}
|
}
|
||||||
|
|
||||||
categoryTestGenerator?.let {
|
categoryTestGenerator.let {
|
||||||
bmpUnicodeDataLines.forEach { line -> it.appendLine(line) }
|
bmpUnicodeDataLines.forEach { line -> it.appendLine(line) }
|
||||||
it.generate()
|
it.generate()
|
||||||
}
|
}
|
||||||
@@ -182,17 +170,17 @@ fun main(args: Array<String>) {
|
|||||||
it.generate()
|
it.generate()
|
||||||
}
|
}
|
||||||
|
|
||||||
stringUppercaseGenerator?.let {
|
stringUppercaseGenerator.let {
|
||||||
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
||||||
it.generate()
|
it.generate()
|
||||||
}
|
}
|
||||||
stringLowercaseGenerator?.let {
|
stringLowercaseGenerator.let {
|
||||||
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
||||||
propListLines.forEach { line -> it.appendPropListLine(line) }
|
propListLines.forEach { line -> it.appendPropListLine(line) }
|
||||||
wordBreakPropertyLines.forEach { line -> it.appendWordBreakPropertyLine(line) }
|
wordBreakPropertyLines.forEach { line -> it.appendWordBreakPropertyLine(line) }
|
||||||
it.generate()
|
it.generate()
|
||||||
}
|
}
|
||||||
stringCasingTestGenerator?.let {
|
stringCasingTestGenerator.let {
|
||||||
derivedCorePropertiesLines.forEach { line -> it.appendDerivedCorePropertiesLine(line) }
|
derivedCorePropertiesLines.forEach { line -> it.appendDerivedCorePropertiesLine(line) }
|
||||||
it.generate()
|
it.generate()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user