From 9b4821be28d16cbe9c4400789d14de75782a73ce Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 6 Jan 2023 15:59:10 +0100 Subject: [PATCH] [Gradle, JS] Add module dom-api-compat This reverts commit ba8cc877fd182495e775e49c95e04c9648a19a7e. --- .gitignore | 1 + .../kotlin-dom-api-compat/build.gradle.kts | 55 +++++++++++++++++++ .../kotlin-dom-api-compat/gradle.properties | 1 + libraries/stdlib/js-ir/build.gradle.kts | 4 ++ .../build.gradle.kts | 1 + settings.gradle | 2 + 6 files changed, 64 insertions(+) create mode 100644 libraries/kotlin-dom-api-compat/build.gradle.kts create mode 100644 libraries/kotlin-dom-api-compat/gradle.properties diff --git a/.gitignore b/.gitignore index 84041be78ad..bc4f779f01c 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,7 @@ build/ .idea/artifacts/kotlin_reflect_jar.xml .idea/artifacts/kotlin_stdlib_js_ir_* .idea/artifacts/kotlin_test_js_ir_* +.idea/artifacts/kotlin_dom_api_compat_* .idea/artifacts/kotlin_stdlib_wasm_* .idea/artifacts/kotlin_test_wasm_* .idea/artifacts/kotlinx_atomicfu_runtime_* diff --git a/libraries/kotlin-dom-api-compat/build.gradle.kts b/libraries/kotlin-dom-api-compat/build.gradle.kts new file mode 100644 index 00000000000..8f709ff6120 --- /dev/null +++ b/libraries/kotlin-dom-api-compat/build.gradle.kts @@ -0,0 +1,55 @@ +import plugins.configureDefaultPublishing + +plugins { + `maven-publish` + kotlin("js") +} + +val jsStdlibSources = "${projectDir}/../stdlib/js/src" + +kotlin { + js(IR) { + sourceSets { + val main by getting { + kotlin.srcDir("$jsStdlibSources/org.w3c") + kotlin.srcDir("$jsStdlibSources/kotlinx") + kotlin.srcDir("$jsStdlibSources/kotlin/browser") + kotlin.srcDir("$jsStdlibSources/kotlin/dom") + + dependencies { + api(project(":kotlin-stdlib-js")) + } + } + } + } +} + +tasks.withType().configureEach { + compilerOptions.freeCompilerArgs + .addAll( + "-Xallow-kotlin-package", + "-opt-in=kotlin.ExperimentalMultiplatform", + "-opt-in=kotlin.contracts.ExperimentalContracts", + // TODO: Better to use friendPaths property, but it does not work + // KT-56690 + "-Xfriend-modules=${libraries.joinToString(File.pathSeparator) { it.absolutePath }}" + ) + compilerOptions.allWarningsAsErrors.set(true) +} + +val emptyJavadocJar by tasks.creating(Jar::class) { + archiveClassifier.set("javadoc") +} + +publishing { + publications { + create("maven") { + from(components["kotlin"]) + } + withType { + artifact(emptyJavadocJar) + } + } +} + +configureDefaultPublishing() \ No newline at end of file diff --git a/libraries/kotlin-dom-api-compat/gradle.properties b/libraries/kotlin-dom-api-compat/gradle.properties new file mode 100644 index 00000000000..34be3146dc9 --- /dev/null +++ b/libraries/kotlin-dom-api-compat/gradle.properties @@ -0,0 +1 @@ +kotlin.js.compiler.publish.attribute=false \ No newline at end of file diff --git a/libraries/stdlib/js-ir/build.gradle.kts b/libraries/stdlib/js-ir/build.gradle.kts index aa8fd522003..548ea88fa1f 100644 --- a/libraries/stdlib/js-ir/build.gradle.kts +++ b/libraries/stdlib/js-ir/build.gradle.kts @@ -59,6 +59,10 @@ val jsMainSources by task { val excluded = listOf( // stdlib/js/src/generated is used exclusively for current `js-v1` backend. "libraries/stdlib/js/src/generated/**", + "libraries/stdlib/js/src/kotlin/browser", + "libraries/stdlib/js/src/kotlin/dom", + "libraries/stdlib/js/src/org.w3c", + "libraries/stdlib/js/src/kotlinx", // JS-specific optimized version of emptyArray() already defined "core/builtins/src/kotlin/ArrayIntrinsics.kt" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index d7f0374ed27..e38733d2794 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -334,6 +334,7 @@ tasks.withType { dependsOn(":gradle:android-test-fixes:install") dependsOn(":gradle:gradle-warnings-detector:install") dependsOn(":examples:annotation-processor-example:install") + dependsOn(":kotlin-dom-api-compat:install") systemProperty("kotlinVersion", rootProject.extra["kotlinVersion"] as String) systemProperty("runnerGradleVersion", gradle.gradleVersion) diff --git a/settings.gradle b/settings.gradle index a753fd0295b..d6146c36242 100644 --- a/settings.gradle +++ b/settings.gradle @@ -555,6 +555,7 @@ if (buildProperties.inJpsBuildIdeaSync) { ":kotlin-stdlib", ":kotlin-stdlib-js", ":kotlin-stdlib-js-ir", + ":kotlin-dom-api-compat", ":kotlin-stdlib-js-ir-minimal-for-test", ":kotlin-stdlib-wasm", ":kotlin-stdlib-jdk7", @@ -576,6 +577,7 @@ if (buildProperties.inJpsBuildIdeaSync) { project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File + project(':kotlin-dom-api-compat').projectDir = "$rootDir/libraries/kotlin-dom-api-compat" as File project(':kotlin-stdlib-wasm').projectDir = "$rootDir/libraries/stdlib/wasm" as File project(':kotlin-stdlib-js-ir-minimal-for-test').projectDir = "$rootDir/libraries/stdlib/js-ir-minimal-for-test" as File project(':kotlin-stdlib-jdk7').projectDir = "$rootDir/libraries/stdlib/jdk7" as File