From f11f082db65e841a5485da5e1288c7e288a013c0 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Thu, 19 Jun 2025 10:36:14 -0400 Subject: [PATCH 1/6] Add `-Xjdk-release=1.8` everywhere we set `jvmTarget` --- aws-runtime/build.gradle.kts | 4 ++++ dokka-aws/build.gradle.kts | 1 + hll/build.gradle.kts | 2 ++ services/build.gradle.kts | 1 + 4 files changed, 8 insertions(+) diff --git a/aws-runtime/build.gradle.kts b/aws-runtime/build.gradle.kts index 442fbe701f1..6bc69290ca5 100644 --- a/aws-runtime/build.gradle.kts +++ b/aws-runtime/build.gradle.kts @@ -63,11 +63,15 @@ subprojects { tasks.withType { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.add("-Xjdk-release=1.8") freeCompilerArgs.add("-Xexpect-actual-classes") } } + + // FIXME Do we need a separate `KotlinNativeCompile` configuration, is configuring KotlinCompile not enough? tasks.withType { compilerOptions { + freeCompilerArgs.add("-Xjdk-release=1.8") freeCompilerArgs.add("-Xexpect-actual-classes") } } diff --git a/dokka-aws/build.gradle.kts b/dokka-aws/build.gradle.kts index a60aa21fcd2..c97a4bdd0df 100644 --- a/dokka-aws/build.gradle.kts +++ b/dokka-aws/build.gradle.kts @@ -35,6 +35,7 @@ tasks.withType().configureEach { tasks.withType { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.add("-Xjdk-release=1.8") allWarningsAsErrors.set(false) // FIXME Dokka bundles stdlib into the classpath, causing an unfixable warning } } diff --git a/hll/build.gradle.kts b/hll/build.gradle.kts index 23d9ac0e128..63550006927 100644 --- a/hll/build.gradle.kts +++ b/hll/build.gradle.kts @@ -86,11 +86,13 @@ subprojects { tasks.withType { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) + freeCompilerArgs.add("-Xjdk-release=1.8") freeCompilerArgs.add("-Xexpect-actual-classes") } } tasks.withType { compilerOptions { + freeCompilerArgs.add("-Xjdk-release=1.8") freeCompilerArgs.add("-Xexpect-actual-classes") } } diff --git a/services/build.gradle.kts b/services/build.gradle.kts index c58178b9ecd..559eb3759c7 100644 --- a/services/build.gradle.kts +++ b/services/build.gradle.kts @@ -131,6 +131,7 @@ subprojects { compilerOptions { allWarningsAsErrors.set(false) // FIXME Tons of errors occur in generated code jvmTarget.set(JvmTarget.JVM_1_8) // fixes outgoing variant metadata: https://github.com/smithy-lang/smithy-kotlin/issues/258 + freeCompilerArgs.add("-Xjdk-release=1.8") } } From 3325aab9dcc621e2c21994dd67d97ed7b92a6a90 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Jun 2025 10:41:05 -0400 Subject: [PATCH 2/6] Remove unnecessary -Xjdk-release --- aws-runtime/build.gradle.kts | 1 - hll/build.gradle.kts | 1 - 2 files changed, 2 deletions(-) diff --git a/aws-runtime/build.gradle.kts b/aws-runtime/build.gradle.kts index 6bc69290ca5..1670a886a71 100644 --- a/aws-runtime/build.gradle.kts +++ b/aws-runtime/build.gradle.kts @@ -71,7 +71,6 @@ subprojects { // FIXME Do we need a separate `KotlinNativeCompile` configuration, is configuring KotlinCompile not enough? tasks.withType { compilerOptions { - freeCompilerArgs.add("-Xjdk-release=1.8") freeCompilerArgs.add("-Xexpect-actual-classes") } } diff --git a/hll/build.gradle.kts b/hll/build.gradle.kts index 63550006927..179bbab1d27 100644 --- a/hll/build.gradle.kts +++ b/hll/build.gradle.kts @@ -92,7 +92,6 @@ subprojects { } tasks.withType { compilerOptions { - freeCompilerArgs.add("-Xjdk-release=1.8") freeCompilerArgs.add("-Xexpect-actual-classes") } } From 61b2c228fbb429044a09c521ab0d846dde1df551 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Jun 2025 10:41:14 -0400 Subject: [PATCH 3/6] Configure jdk-release=17 too --- codegen/aws-sdk-codegen/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/codegen/aws-sdk-codegen/build.gradle.kts b/codegen/aws-sdk-codegen/build.gradle.kts index 7d79f95d6c3..1256756aca4 100644 --- a/codegen/aws-sdk-codegen/build.gradle.kts +++ b/codegen/aws-sdk-codegen/build.gradle.kts @@ -60,6 +60,7 @@ val generateSdkRuntimeVersion by tasks.registering { tasks.withType { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) + freeCompilerArgs.add("-Xjdk-release=17") } dependsOn(generateSdkRuntimeVersion) } From 886bb3e036777c044867da8ab4b6f0c73104d668 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Jun 2025 10:46:07 -0400 Subject: [PATCH 4/6] Remove comment --- aws-runtime/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/aws-runtime/build.gradle.kts b/aws-runtime/build.gradle.kts index 1670a886a71..d5b9fe45ee0 100644 --- a/aws-runtime/build.gradle.kts +++ b/aws-runtime/build.gradle.kts @@ -68,7 +68,6 @@ subprojects { } } - // FIXME Do we need a separate `KotlinNativeCompile` configuration, is configuring KotlinCompile not enough? tasks.withType { compilerOptions { freeCompilerArgs.add("-Xexpect-actual-classes") From 7af77bb1c6152c0ec7885d2b5a17f359b097fbc7 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Jun 2025 10:46:29 -0400 Subject: [PATCH 5/6] Add a changelog --- .changes/91619ed5-0056-4f22-8863-8dd35b7a3c21.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changes/91619ed5-0056-4f22-8863-8dd35b7a3c21.json diff --git a/.changes/91619ed5-0056-4f22-8863-8dd35b7a3c21.json b/.changes/91619ed5-0056-4f22-8863-8dd35b7a3c21.json new file mode 100644 index 00000000000..5ed1d81dff3 --- /dev/null +++ b/.changes/91619ed5-0056-4f22-8863-8dd35b7a3c21.json @@ -0,0 +1,8 @@ +{ + "id": "91619ed5-0056-4f22-8863-8dd35b7a3c21", + "type": "bugfix", + "description": "Enable building this project on JDK21 by setting -Xjdk-release flag", + "issues": [ + "https://github.com/smithy-lang/smithy-kotlin/issues/1295" + ] +} \ No newline at end of file From 67aab109575bdec3fef1cb04ca2c9cbb86266230 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Fri, 20 Jun 2025 10:47:48 -0400 Subject: [PATCH 6/6] Remove newline --- aws-runtime/build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/aws-runtime/build.gradle.kts b/aws-runtime/build.gradle.kts index d5b9fe45ee0..4ee0eb92c56 100644 --- a/aws-runtime/build.gradle.kts +++ b/aws-runtime/build.gradle.kts @@ -67,7 +67,6 @@ subprojects { freeCompilerArgs.add("-Xexpect-actual-classes") } } - tasks.withType { compilerOptions { freeCompilerArgs.add("-Xexpect-actual-classes")