From 39731fd493180faee770e2b29c5648ddadaea016 Mon Sep 17 00:00:00 2001 From: Abduqodiri Qurbonzoda Date: Tue, 16 Feb 2021 11:48:23 +0300 Subject: [PATCH] Merge Stdlib generators --- kotlin-native/runtime/generator/build.gradle | 29 ----------- .../src/generators/GenerateStandardLib.kt | 9 +--- .../generators/unicode/GenerateUnicodeData.kt | 52 +++++++------------ 3 files changed, 22 insertions(+), 68 deletions(-) delete mode 100644 kotlin-native/runtime/generator/build.gradle diff --git a/kotlin-native/runtime/generator/build.gradle b/kotlin-native/runtime/generator/build.gradle deleted file mode 100644 index 34e81a89858..00000000000 --- a/kotlin-native/runtime/generator/build.gradle +++ /dev/null @@ -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"] -} \ No newline at end of file diff --git a/libraries/tools/kotlin-stdlib-gen/src/generators/GenerateStandardLib.kt b/libraries/tools/kotlin-stdlib-gen/src/generators/GenerateStandardLib.kt index ea61e30f872..05f01fcc248 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/generators/GenerateStandardLib.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/generators/GenerateStandardLib.kt @@ -47,16 +47,11 @@ fun main(args: Array) { 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: - - generates sources for common, jvm, js, ir-js targets using paths derived from specified base path - - generates source for the specified target in the specified target directory + - generates sources for common, jvm, js, ir-js, native targets using paths derived from specified base path """) exitProcess(1) } diff --git a/libraries/tools/kotlin-stdlib-gen/src/generators/unicode/GenerateUnicodeData.kt b/libraries/tools/kotlin-stdlib-gen/src/generators/unicode/GenerateUnicodeData.kt index e6670d635a5..f90b919765a 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/generators/unicode/GenerateUnicodeData.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/generators/unicode/GenerateUnicodeData.kt @@ -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) { fun readLines(url: String): List { @@ -96,12 +93,12 @@ fun main(args: Array) { 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) { 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) { 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: - - generates sources for js and js-ir targets using paths derived from specified base path - - generates sources for the specified target in the specified target directory + - 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) { it.generate() } - categoryTestGenerator?.let { + categoryTestGenerator.let { bmpUnicodeDataLines.forEach { line -> it.appendLine(line) } it.generate() } @@ -182,17 +170,17 @@ fun main(args: Array) { 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() }