diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 36368c2..964b65d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -42,11 +42,20 @@ jobs: key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('gradle/libs.versions.toml') }} restore-keys: ${{ runner.os }}-gradle-caches- - - name: Setup JDK + # Windows does not build ANDROID, but needs Java 11 for JPMS Multi-Release Jar build + - name: Setup JDK 11 + if: matrix.os == 'windows-latest' uses: actions/setup-java@v3.4.0 with: distribution: 'zulu' - java-version: 17 + java-version: 11 + + - name: Setup JDK 19 + if: matrix.os != 'windows-latest' + uses: actions/setup-java@v3.4.0 + with: + distribution: 'zulu' + java-version: 19 - name: Run macOS Tests if: matrix.os == 'macos-latest' @@ -65,7 +74,7 @@ jobs: -PKMP_TARGETS="JVM,JS,MINGW_X64,WASM_JS,WASM_WASI" emulator: - runs-on: macos-latest + runs-on: ubuntu-latest strategy: fail-fast: false @@ -75,6 +84,12 @@ jobs: - name: Checkout Repo uses: actions/checkout@v3 + - name: Enable KVM + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v1 @@ -82,7 +97,7 @@ jobs: uses: actions/setup-java@v3.11.0 with: distribution: 'zulu' - java-version: 19 + java-version: 17 - name: Build uses: gradle/gradle-build-action@v2 diff --git a/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt b/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt index 3dd646e..e93887a 100644 --- a/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt +++ b/build-logic/src/main/kotlin/-KmpConfigurationExtension.kt @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ +import io.matthewnelson.kmp.configuration.ExperimentalKmpConfigurationApi import io.matthewnelson.kmp.configuration.extension.KmpConfigurationExtension import io.matthewnelson.kmp.configuration.extension.container.target.KmpConfigurationContainerDsl import org.gradle.api.Action @@ -20,17 +21,19 @@ import org.gradle.api.JavaVersion import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl fun KmpConfigurationExtension.configureShared( + java9ModuleName: String? = null, publish: Boolean = false, explicitApi: Boolean = true, action: Action ) { configure { jvm { - target { withJava() } - kotlinJvmTarget = JavaVersion.VERSION_1_8 compileSourceCompatibility = JavaVersion.VERSION_1_8 compileTargetCompatibility = JavaVersion.VERSION_1_8 + + @OptIn(ExperimentalKmpConfigurationApi::class) + java9MultiReleaseModuleInfo(java9ModuleName) } js() diff --git a/library/hmac/hmac-md/build.gradle.kts b/library/hmac/hmac-md/build.gradle.kts index a67eda6..47ea47d 100644 --- a/library/hmac/hmac-md/build.gradle.kts +++ b/library/hmac/hmac-md/build.gradle.kts @@ -19,7 +19,7 @@ plugins { } kmpConfiguration { - configureShared(publish = true) { + configureShared(java9ModuleName = "org.kotlincrypto.macs.hmac.md", publish = true) { common { sourceSetMain { dependencies { diff --git a/library/hmac/hmac-md/src/jvmMain/java9/module-info.java b/library/hmac/hmac-md/src/jvmMain/java9/module-info.java new file mode 100644 index 0000000..2d7759e --- /dev/null +++ b/library/hmac/hmac-md/src/jvmMain/java9/module-info.java @@ -0,0 +1,7 @@ +module org.kotlincrypto.macs.hmac.md { + requires kotlin.stdlib; + requires org.kotlincrypto.hash.md; + requires transitive org.kotlincrypto.macs.hmac; + + exports org.kotlincrypto.macs.hmac.md; +} diff --git a/library/hmac/hmac-sha1/build.gradle.kts b/library/hmac/hmac-sha1/build.gradle.kts index a733a93..dbace8e 100644 --- a/library/hmac/hmac-sha1/build.gradle.kts +++ b/library/hmac/hmac-sha1/build.gradle.kts @@ -19,7 +19,7 @@ plugins { } kmpConfiguration { - configureShared(publish = true) { + configureShared(java9ModuleName = "org.kotlincrypto.macs.hmac.sha1", publish = true) { common { sourceSetMain { dependencies { diff --git a/library/hmac/hmac-sha1/src/jvmMain/java9/module-info.java b/library/hmac/hmac-sha1/src/jvmMain/java9/module-info.java new file mode 100644 index 0000000..95d26f5 --- /dev/null +++ b/library/hmac/hmac-sha1/src/jvmMain/java9/module-info.java @@ -0,0 +1,8 @@ +@SuppressWarnings("JavaModuleNaming") +module org.kotlincrypto.macs.hmac.sha1 { + requires kotlin.stdlib; + requires org.kotlincrypto.hash.sha1; + requires transitive org.kotlincrypto.macs.hmac; + + exports org.kotlincrypto.macs.hmac.sha1; +} diff --git a/library/hmac/hmac-sha2/build.gradle.kts b/library/hmac/hmac-sha2/build.gradle.kts index 3b55d57..6567e9e 100644 --- a/library/hmac/hmac-sha2/build.gradle.kts +++ b/library/hmac/hmac-sha2/build.gradle.kts @@ -19,7 +19,7 @@ plugins { } kmpConfiguration { - configureShared(publish = true) { + configureShared(java9ModuleName = "org.kotlincrypto.macs.hmac.sha2", publish = true) { common { sourceSetMain { dependencies { diff --git a/library/hmac/hmac-sha2/src/jvmMain/java9/module-info.java b/library/hmac/hmac-sha2/src/jvmMain/java9/module-info.java new file mode 100644 index 0000000..aafb645 --- /dev/null +++ b/library/hmac/hmac-sha2/src/jvmMain/java9/module-info.java @@ -0,0 +1,8 @@ +@SuppressWarnings("JavaModuleNaming") +module org.kotlincrypto.macs.hmac.sha2 { + requires kotlin.stdlib; + requires org.kotlincrypto.hash.sha2; + requires transitive org.kotlincrypto.macs.hmac; + + exports org.kotlincrypto.macs.hmac.sha2; +} diff --git a/library/hmac/hmac-sha3/build.gradle.kts b/library/hmac/hmac-sha3/build.gradle.kts index 7a675d2..25c8f64 100644 --- a/library/hmac/hmac-sha3/build.gradle.kts +++ b/library/hmac/hmac-sha3/build.gradle.kts @@ -19,7 +19,7 @@ plugins { } kmpConfiguration { - configureShared(publish = true) { + configureShared(java9ModuleName = "org.kotlincrypto.macs.hmac.sha3", publish = true) { common { sourceSetMain { dependencies { diff --git a/library/hmac/hmac-sha3/src/jvmMain/java9/module-info.java b/library/hmac/hmac-sha3/src/jvmMain/java9/module-info.java new file mode 100644 index 0000000..1551429 --- /dev/null +++ b/library/hmac/hmac-sha3/src/jvmMain/java9/module-info.java @@ -0,0 +1,8 @@ +@SuppressWarnings("JavaModuleNaming") +module org.kotlincrypto.macs.hmac.sha3 { + requires kotlin.stdlib; + requires org.kotlincrypto.hash.sha3; + requires transitive org.kotlincrypto.macs.hmac; + + exports org.kotlincrypto.macs.hmac.sha3; +} diff --git a/library/hmac/hmac/build.gradle.kts b/library/hmac/hmac/build.gradle.kts index 0135772..11bf8dc 100644 --- a/library/hmac/hmac/build.gradle.kts +++ b/library/hmac/hmac/build.gradle.kts @@ -18,7 +18,7 @@ plugins { } kmpConfiguration { - configureShared(publish = true) { + configureShared(java9ModuleName = "org.kotlincrypto.macs.hmac", publish = true) { common { sourceSetMain { dependencies { diff --git a/library/hmac/hmac/src/jvmMain/java9/module-info.java b/library/hmac/hmac/src/jvmMain/java9/module-info.java new file mode 100644 index 0000000..8bfb802 --- /dev/null +++ b/library/hmac/hmac/src/jvmMain/java9/module-info.java @@ -0,0 +1,8 @@ +module org.kotlincrypto.macs.hmac { + requires kotlin.stdlib; + requires org.kotlincrypto.core; + requires org.kotlincrypto.core.digest; + requires transitive org.kotlincrypto.core.mac; + + exports org.kotlincrypto.macs.hmac; +} diff --git a/library/kmac/build.gradle.kts b/library/kmac/build.gradle.kts index 68ffc66..0f1217e 100644 --- a/library/kmac/build.gradle.kts +++ b/library/kmac/build.gradle.kts @@ -19,7 +19,7 @@ plugins { } kmpConfiguration { - configureShared(publish = true) { + configureShared(java9ModuleName = "org.kotlincrypto.macs.kmac", publish = true) { common { sourceSetMain { dependencies { diff --git a/library/kmac/src/jvmMain/java9/module-info.java b/library/kmac/src/jvmMain/java9/module-info.java new file mode 100644 index 0000000..7ce50a5 --- /dev/null +++ b/library/kmac/src/jvmMain/java9/module-info.java @@ -0,0 +1,8 @@ +module org.kotlincrypto.macs.kmac { + requires kotlin.stdlib; + requires org.kotlincrypto.hash.sha3; + requires transitive org.kotlincrypto.core.mac; + requires transitive org.kotlincrypto.core.xof; + + exports org.kotlincrypto.macs.kmac; +}