From 1f4e6957d248cb7274dfdf0166848bec8fa11c53 Mon Sep 17 00:00:00 2001 From: Konrad Malawski Date: Fri, 17 Apr 2026 10:47:03 +0900 Subject: [PATCH 1/2] Lower JDK version for modules not using ffm We accidentally required JDK25 in the build for no reason including for the core module. The bytecode is Java11, and we use JDK17 at least to build. We automatically detect JDK25, and if detected, we build the ffm modules as well. The FFM modules have ofc the expected higher JDK requirement. --- ...d-logic.java-common-conventions.gradle.kts | 2 +- .../GradlePluginSampleApp/gradle.properties | 1 + .../SwiftAndJavaJarSampleLib/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../MultipleTypesFromSingleFileTest.java | 1 - .../com/example/swift/VehicleEnumTest.java | 1 - SwiftKitCore/build.gradle.kts | 4 +- SwiftKitFFM/build.gradle.kts | 2 +- gradle.properties | 2 +- settings.gradle.kts | 69 ++++++++++++++++++- 11 files changed, 75 insertions(+), 13 deletions(-) create mode 120000 Samples/GradlePluginSampleApp/gradle.properties diff --git a/BuildLogic/src/main/kotlin/build-logic.java-common-conventions.gradle.kts b/BuildLogic/src/main/kotlin/build-logic.java-common-conventions.gradle.kts index 199a3b63..c7067446 100644 --- a/BuildLogic/src/main/kotlin/build-logic.java-common-conventions.gradle.kts +++ b/BuildLogic/src/main/kotlin/build-logic.java-common-conventions.gradle.kts @@ -23,7 +23,7 @@ plugins { java { toolchain { - languageVersion = JavaLanguageVersion.of(25) + languageVersion = JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 25) } } diff --git a/Samples/GradlePluginSampleApp/gradle.properties b/Samples/GradlePluginSampleApp/gradle.properties new file mode 120000 index 00000000..7677fb73 --- /dev/null +++ b/Samples/GradlePluginSampleApp/gradle.properties @@ -0,0 +1 @@ +../gradle.properties \ No newline at end of file diff --git a/Samples/SwiftAndJavaJarSampleLib/build.gradle.kts b/Samples/SwiftAndJavaJarSampleLib/build.gradle.kts index 33f77c70..727277e6 100644 --- a/Samples/SwiftAndJavaJarSampleLib/build.gradle.kts +++ b/Samples/SwiftAndJavaJarSampleLib/build.gradle.kts @@ -32,7 +32,7 @@ repositories { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(25)) + languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 25)) } } diff --git a/Samples/SwiftJavaExtractFFMSampleApp/build.gradle.kts b/Samples/SwiftJavaExtractFFMSampleApp/build.gradle.kts index 5fec886d..6a4d752a 100644 --- a/Samples/SwiftJavaExtractFFMSampleApp/build.gradle.kts +++ b/Samples/SwiftJavaExtractFFMSampleApp/build.gradle.kts @@ -29,7 +29,7 @@ repositories { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(25)) + languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 25)) } } diff --git a/Samples/SwiftJavaExtractJNISampleApp/build.gradle.kts b/Samples/SwiftJavaExtractJNISampleApp/build.gradle.kts index 48e2560e..d6416baf 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/build.gradle.kts +++ b/Samples/SwiftJavaExtractJNISampleApp/build.gradle.kts @@ -29,7 +29,7 @@ repositories { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(25)) + languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 17)) } } diff --git a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MultipleTypesFromSingleFileTest.java b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MultipleTypesFromSingleFileTest.java index ae02b872..5ac94775 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MultipleTypesFromSingleFileTest.java +++ b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MultipleTypesFromSingleFileTest.java @@ -18,7 +18,6 @@ import org.swift.swiftkit.core.ConfinedSwiftMemorySession; import org.swift.swiftkit.core.SwiftArena; -import java.lang.foreign.Arena; import java.util.Optional; import java.util.OptionalInt; diff --git a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/VehicleEnumTest.java b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/VehicleEnumTest.java index c533603a..25bc415c 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/VehicleEnumTest.java +++ b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/VehicleEnumTest.java @@ -18,7 +18,6 @@ import org.swift.swiftkit.core.ConfinedSwiftMemorySession; import org.swift.swiftkit.core.SwiftArena; -import java.lang.foreign.Arena; import java.util.Optional; import java.util.OptionalInt; diff --git a/SwiftKitCore/build.gradle.kts b/SwiftKitCore/build.gradle.kts index 91dea2e3..ec5dfd2a 100644 --- a/SwiftKitCore/build.gradle.kts +++ b/SwiftKitCore/build.gradle.kts @@ -43,12 +43,12 @@ publishing { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(25)) + languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 25)) } } tasks.withType().configureEach { - // Support Java 11 + // SwiftKitCore is consumable down to Java 11 options.release.set(11) } diff --git a/SwiftKitFFM/build.gradle.kts b/SwiftKitFFM/build.gradle.kts index 97319844..1659da75 100644 --- a/SwiftKitFFM/build.gradle.kts +++ b/SwiftKitFFM/build.gradle.kts @@ -43,7 +43,7 @@ publishing { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(25)) + languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 25)) } } diff --git a/gradle.properties b/gradle.properties index 182db452..018c3828 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -org.gradle.java.installations.fromEnv=JAVA_HOME_25,JAVA_HOME_25_X64,JAVA_HOME_25_ARM64 \ No newline at end of file +org.gradle.java.installations.fromEnv=JAVA_HOME_25,JAVA_HOME_25_X64,JAVA_HOME_25_ARM64,JAVA_HOME_21,JAVA_HOME_21_X64,JAVA_HOME_21_ARM64,JAVA_HOME_17,JAVA_HOME_17_X64,JAVA_HOME_17_ARM64 \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index a360e078..14b83d30 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,16 +18,79 @@ pluginManagement { rootProject.name = "swift-java" +// ==== ----------------------------------------------------------------------- +// MARK: JDK detection +// +// Some modules require JDK 22+ (FFM API). When the active toolchain is +// older we exclude those modules so developers with only JDK 17 can still +// build the JDK-17-compatible subset (currently SwiftKitCore). +// +// Resolution order: +// 1. -PswiftJavaJdk= Gradle property (explicit override) +// 2. JAVA_HOME_25* env vars listed in gradle.properties (treated as 25) +// 3. JAVA_HOME/release file's JAVA_VERSION +// 4. Default: 25 + +fun detectJdkMajor(): Int { + settings.providers.gradleProperty("swiftJavaJdk").orNull?.toIntOrNull()?.let { return it } + + val env = System.getenv() + if (listOf("JAVA_HOME_25", "JAVA_HOME_25_X64", "JAVA_HOME_25_ARM64").any { env[it] != null }) { + return 25 + } + + env["JAVA_HOME"]?.let { javaHome -> + val release = File(javaHome, "release") + if (release.isFile) { + release.readLines().firstOrNull { it.startsWith("JAVA_VERSION=") }?.let { line -> + val raw = line.substringAfter("=").trim().trim('"') + val major = raw.substringBefore(".").toIntOrNull() + ?: raw.substringBefore("-").toIntOrNull() + if (major != null) return major + } + } + } + return 25 +} + +val swiftJavaJdk = detectJdkMajor() +gradle.extra["swiftJavaJdk"] = swiftJavaJdk + +val ffmCapable = swiftJavaJdk >= 22 + +// Modules and samples that depend on the FFM API (java.lang.foreign.*) +val ffmModules = setOf( + "SwiftKitFFM", + "SwiftJavaExtractFFMSampleApp", + "SwiftAndJavaJarSampleLib", + "SwiftJavaExtractJNISampleApp", +) + +val skipped = mutableListOf() + include("SwiftKitCore") -include("SwiftKitFFM") +if (ffmCapable) { + include("SwiftKitFFM") +} else { + skipped += "SwiftKitFFM" +} // Include sample apps -- you can run them via `gradle Name:run` if (!(settings.providers.gradleProperty("skipSamples").orNull.toBoolean())) { - File(rootDir, "Samples").listFiles().forEach { + File(rootDir, "Samples").listFiles()?.forEach { if (it.isDirectory && (File(it, "build.gradle").exists() || File(it, "build.gradle.kts").exists())) { - include(":Samples:${it.name}") + val name = it.name + if (name in ffmModules && !ffmCapable) { + skipped += "Samples:$name" + } else { + include(":Samples:$name") + } } } } +if (skipped.isNotEmpty()) { + println("[swift-java] JDK $swiftJavaJdk detected — skipping: ${skipped.joinToString(", ")}") +} + enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") From 5eb1e20ad2a000b83ae718bd955d7dbd25be5c3e Mon Sep 17 00:00:00 2001 From: Konrad Malawski Date: Fri, 17 Apr 2026 12:19:10 +0900 Subject: [PATCH 2/2] Rename sample to SwiftAndJavaJarFFMSampleLib since it is ffm --- .github/workflows/pull_request.yml | 4 ++-- .../Example.java | 0 .../LICENSE.txt | 0 .../Package.swift | 2 +- .../Sources/MySwiftLibrary/MySwiftClass.swift | 0 .../Sources/MySwiftLibrary/MySwiftLibrary.swift | 0 .../Sources/MySwiftLibrary/swift-java.config | 0 .../build.gradle.kts | 6 +++--- .../ci-validate.sh | 0 .../gradle.properties | 0 .../gradlew | 0 .../gradlew.bat | 0 .../java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java | 0 .../src/main/java/com/example/swift/HelloJava2Swift.java | 0 .../src/test/java/com/example/swift/MySwiftClassTest.java | 0 .../src/test/java/com/example/swift/MySwiftLibraryTest.java | 0 .../test/java/org/swift/swiftkit/ffm/MySwiftClassTest.java | 0 .../test/java/org/swift/swiftkit/ffm/SwiftArenaTest.java | 0 settings.gradle.kts | 5 ++--- 19 files changed, 8 insertions(+), 9 deletions(-) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/Example.java (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/LICENSE.txt (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/Package.swift (96%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/Sources/MySwiftLibrary/MySwiftClass.swift (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/Sources/MySwiftLibrary/MySwiftLibrary.swift (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/Sources/MySwiftLibrary/swift-java.config (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/build.gradle.kts (92%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/ci-validate.sh (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/gradle.properties (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/gradlew (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/gradlew.bat (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/src/jmh/java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/src/main/java/com/example/swift/HelloJava2Swift.java (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/src/test/java/com/example/swift/MySwiftClassTest.java (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/src/test/java/com/example/swift/MySwiftLibraryTest.java (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/src/test/java/org/swift/swiftkit/ffm/MySwiftClassTest.java (100%) rename Samples/{SwiftAndJavaJarSampleLib => SwiftAndJavaJarFFMSampleLib}/src/test/java/org/swift/swiftkit/ffm/SwiftArenaTest.java (100%) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 9d858dfe..24a2fee0 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -221,7 +221,7 @@ jobs: 'JavaKitSampleApp', 'JavaProbablyPrime', 'JavaSieve', - 'SwiftAndJavaJarSampleLib', + 'SwiftAndJavaJarFFMSampleLib', 'SwiftJavaExtractFFMSampleApp', 'SwiftJavaExtractJNISampleApp', ] @@ -249,7 +249,7 @@ jobs: 'JavaKitSampleApp', 'JavaProbablyPrime', 'JavaSieve', - 'SwiftAndJavaJarSampleLib', + 'SwiftAndJavaJarFFMSampleLib', 'SwiftJavaExtractFFMSampleApp', 'SwiftJavaExtractJNISampleApp', ] diff --git a/Samples/SwiftAndJavaJarSampleLib/Example.java b/Samples/SwiftAndJavaJarFFMSampleLib/Example.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/Example.java rename to Samples/SwiftAndJavaJarFFMSampleLib/Example.java diff --git a/Samples/SwiftAndJavaJarSampleLib/LICENSE.txt b/Samples/SwiftAndJavaJarFFMSampleLib/LICENSE.txt similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/LICENSE.txt rename to Samples/SwiftAndJavaJarFFMSampleLib/LICENSE.txt diff --git a/Samples/SwiftAndJavaJarSampleLib/Package.swift b/Samples/SwiftAndJavaJarFFMSampleLib/Package.swift similarity index 96% rename from Samples/SwiftAndJavaJarSampleLib/Package.swift rename to Samples/SwiftAndJavaJarFFMSampleLib/Package.swift index 68bc6354..ecd69517 100644 --- a/Samples/SwiftAndJavaJarSampleLib/Package.swift +++ b/Samples/SwiftAndJavaJarFFMSampleLib/Package.swift @@ -5,7 +5,7 @@ import CompilerPluginSupport import PackageDescription let package = Package( - name: "SwiftAndJavaJarSampleLib", + name: "SwiftAndJavaJarFFMSampleLib", platforms: [ .macOS(.v15), .iOS(.v18), diff --git a/Samples/SwiftAndJavaJarSampleLib/Sources/MySwiftLibrary/MySwiftClass.swift b/Samples/SwiftAndJavaJarFFMSampleLib/Sources/MySwiftLibrary/MySwiftClass.swift similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/Sources/MySwiftLibrary/MySwiftClass.swift rename to Samples/SwiftAndJavaJarFFMSampleLib/Sources/MySwiftLibrary/MySwiftClass.swift diff --git a/Samples/SwiftAndJavaJarSampleLib/Sources/MySwiftLibrary/MySwiftLibrary.swift b/Samples/SwiftAndJavaJarFFMSampleLib/Sources/MySwiftLibrary/MySwiftLibrary.swift similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/Sources/MySwiftLibrary/MySwiftLibrary.swift rename to Samples/SwiftAndJavaJarFFMSampleLib/Sources/MySwiftLibrary/MySwiftLibrary.swift diff --git a/Samples/SwiftAndJavaJarSampleLib/Sources/MySwiftLibrary/swift-java.config b/Samples/SwiftAndJavaJarFFMSampleLib/Sources/MySwiftLibrary/swift-java.config similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/Sources/MySwiftLibrary/swift-java.config rename to Samples/SwiftAndJavaJarFFMSampleLib/Sources/MySwiftLibrary/swift-java.config diff --git a/Samples/SwiftAndJavaJarSampleLib/build.gradle.kts b/Samples/SwiftAndJavaJarFFMSampleLib/build.gradle.kts similarity index 92% rename from Samples/SwiftAndJavaJarSampleLib/build.gradle.kts rename to Samples/SwiftAndJavaJarFFMSampleLib/build.gradle.kts index 727277e6..6912f51b 100644 --- a/Samples/SwiftAndJavaJarSampleLib/build.gradle.kts +++ b/Samples/SwiftAndJavaJarFFMSampleLib/build.gradle.kts @@ -32,7 +32,7 @@ repositories { java { toolchain { - languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 25)) + languageVersion.set(JavaLanguageVersion.of((gradle.extra.properties["swiftJavaJdk"] as? Int) ?: 17)) } } @@ -85,13 +85,13 @@ tasks.jar.configure { } base { - archivesName = "swift-and-java-jar-sample-lib" + archivesName = "swift-and-java-jar-ffm-sample-lib" } publishing { publications { create("maven") { - artifactId = "swift-and-java-jar-sample-lib" + artifactId = "swift-and-java-jar-ffm-sample-lib" from(components["java"]) } } diff --git a/Samples/SwiftAndJavaJarSampleLib/ci-validate.sh b/Samples/SwiftAndJavaJarFFMSampleLib/ci-validate.sh similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/ci-validate.sh rename to Samples/SwiftAndJavaJarFFMSampleLib/ci-validate.sh diff --git a/Samples/SwiftAndJavaJarSampleLib/gradle.properties b/Samples/SwiftAndJavaJarFFMSampleLib/gradle.properties similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/gradle.properties rename to Samples/SwiftAndJavaJarFFMSampleLib/gradle.properties diff --git a/Samples/SwiftAndJavaJarSampleLib/gradlew b/Samples/SwiftAndJavaJarFFMSampleLib/gradlew similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/gradlew rename to Samples/SwiftAndJavaJarFFMSampleLib/gradlew diff --git a/Samples/SwiftAndJavaJarSampleLib/gradlew.bat b/Samples/SwiftAndJavaJarFFMSampleLib/gradlew.bat similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/gradlew.bat rename to Samples/SwiftAndJavaJarFFMSampleLib/gradlew.bat diff --git a/Samples/SwiftAndJavaJarSampleLib/src/jmh/java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java b/Samples/SwiftAndJavaJarFFMSampleLib/src/jmh/java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/src/jmh/java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java rename to Samples/SwiftAndJavaJarFFMSampleLib/src/jmh/java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java diff --git a/Samples/SwiftAndJavaJarSampleLib/src/main/java/com/example/swift/HelloJava2Swift.java b/Samples/SwiftAndJavaJarFFMSampleLib/src/main/java/com/example/swift/HelloJava2Swift.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/src/main/java/com/example/swift/HelloJava2Swift.java rename to Samples/SwiftAndJavaJarFFMSampleLib/src/main/java/com/example/swift/HelloJava2Swift.java diff --git a/Samples/SwiftAndJavaJarSampleLib/src/test/java/com/example/swift/MySwiftClassTest.java b/Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/com/example/swift/MySwiftClassTest.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/src/test/java/com/example/swift/MySwiftClassTest.java rename to Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/com/example/swift/MySwiftClassTest.java diff --git a/Samples/SwiftAndJavaJarSampleLib/src/test/java/com/example/swift/MySwiftLibraryTest.java b/Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/com/example/swift/MySwiftLibraryTest.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/src/test/java/com/example/swift/MySwiftLibraryTest.java rename to Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/com/example/swift/MySwiftLibraryTest.java diff --git a/Samples/SwiftAndJavaJarSampleLib/src/test/java/org/swift/swiftkit/ffm/MySwiftClassTest.java b/Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/org/swift/swiftkit/ffm/MySwiftClassTest.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/src/test/java/org/swift/swiftkit/ffm/MySwiftClassTest.java rename to Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/org/swift/swiftkit/ffm/MySwiftClassTest.java diff --git a/Samples/SwiftAndJavaJarSampleLib/src/test/java/org/swift/swiftkit/ffm/SwiftArenaTest.java b/Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/org/swift/swiftkit/ffm/SwiftArenaTest.java similarity index 100% rename from Samples/SwiftAndJavaJarSampleLib/src/test/java/org/swift/swiftkit/ffm/SwiftArenaTest.java rename to Samples/SwiftAndJavaJarFFMSampleLib/src/test/java/org/swift/swiftkit/ffm/SwiftArenaTest.java diff --git a/settings.gradle.kts b/settings.gradle.kts index 14b83d30..b2b9c1be 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,7 +21,7 @@ rootProject.name = "swift-java" // ==== ----------------------------------------------------------------------- // MARK: JDK detection // -// Some modules require JDK 22+ (FFM API). When the active toolchain is +// Some modules require JDK 25+ (FFM API). When the active toolchain is // older we exclude those modules so developers with only JDK 17 can still // build the JDK-17-compatible subset (currently SwiftKitCore). // @@ -62,8 +62,7 @@ val ffmCapable = swiftJavaJdk >= 22 val ffmModules = setOf( "SwiftKitFFM", "SwiftJavaExtractFFMSampleApp", - "SwiftAndJavaJarSampleLib", - "SwiftJavaExtractJNISampleApp", + "SwiftAndJavaJarFFMSampleLib", ) val skipped = mutableListOf()