[#31] Configure multiplatform build scripts

This commit is contained in:
Carter Jernigan 2022-04-21 10:36:51 -04:00
parent 3f24445329
commit 8fc703adf1
10 changed files with 156 additions and 32 deletions

1
.git-blame-ignore-revs Normal file
View File

@ -0,0 +1 @@
3f24445329869fd19b9ea3fe72d97aefa768ea0a

View File

@ -0,0 +1,25 @@
plugins {
`kotlin-dsl`
}
buildscript {
dependencyLocking {
lockAllConfigurations()
}
}
dependencyLocking {
lockAllConfigurations()
}
// Per conversation in the KotlinLang Slack, Gradle uses Java 8 compatibility internally
// for all build scripts.
// https://kotlinlang.slack.com/archives/C19FD9681/p1636632870122900?thread_ts=1636572288.117000&cid=C19FD9681
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${libs.versions.kotlin.get()}")
}

View File

@ -0,0 +1,45 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.github.gundy:semver4j:0.16.4=classpath
com.google.code.findbugs:jsr305:3.0.2=classpath
com.google.code.gson:gson:2.8.6=classpath
com.google.errorprone:error_prone_annotations:2.3.4=classpath
com.google.guava:failureaccess:1.0.1=classpath
com.google.guava:guava:29.0-jre=classpath
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath
com.google.j2objc:j2objc-annotations:1.3=classpath
de.undercouch:gradle-download-task:4.1.1=classpath
org.checkerframework:checker-qual:2.11.1=classpath
org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:2.1.7=classpath
org.gradle.kotlin:gradle-kotlin-dsl-plugins:2.1.7=classpath
org.jetbrains.intellij.deps:trove4j:1.0.20181211=classpath
org.jetbrains.kotlin:kotlin-android-extensions:1.5.31=classpath
org.jetbrains.kotlin:kotlin-annotation-processing-gradle:1.5.31=classpath
org.jetbrains.kotlin:kotlin-build-common:1.5.31=classpath
org.jetbrains.kotlin:kotlin-compiler-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-compiler-runner:1.5.31=classpath
org.jetbrains.kotlin:kotlin-daemon-client:1.5.31=classpath
org.jetbrains.kotlin:kotlin-daemon-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.5.31=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.5.31=classpath
org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31=classpath
org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.5.31=classpath
org.jetbrains.kotlin:kotlin-native-utils:1.5.31=classpath
org.jetbrains.kotlin:kotlin-project-model:1.5.31=classpath
org.jetbrains.kotlin:kotlin-sam-with-receiver:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-common:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.5.31=classpath
org.jetbrains.kotlin:kotlin-scripting-jvm:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31=classpath
org.jetbrains.kotlin:kotlin-stdlib:1.5.31=classpath
org.jetbrains.kotlin:kotlin-tooling-metadata:1.5.31=classpath
org.jetbrains.kotlin:kotlin-util-io:1.5.31=classpath
org.jetbrains.kotlin:kotlin-util-klib:1.5.31=classpath
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0=classpath
org.jetbrains:annotations:13.0=classpath
empty=

View File

@ -0,0 +1,13 @@
@Suppress("UnstableApiUsage")
dependencyResolutionManagement {
repositories {
mavenCentral()
}
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
}

View File

@ -0,0 +1,32 @@
import org.gradle.jvm.toolchain.JavaToolchainSpec
pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
extensions.findByType<org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension>()?.apply {
jvmToolchain {
val javaVersion = JavaVersion.toVersion(project.property("JVM_TOOLCHAIN").toString())
val javaLanguageVersion = JavaLanguageVersion.of(javaVersion.majorVersion)
(this as JavaToolchainSpec).languageVersion.set(javaLanguageVersion)
}
targets.matching { it.platformType.name == "jvm" }.all {
(this as org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget).apply {
val javaTargetVersion = project.property("JVM_TARGET").toString()
compilations.all {
kotlinOptions {
jvmTarget = javaTargetVersion
}
}
}
}
targets.all {
compilations.all {
kotlinOptions {
allWarningsAsErrors = project.property("BIP39_IS_TREAT_WARNINGS_AS_ERRORS").toString().toBoolean()
freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.RequiresOptIn"
}
}
}
}
}

View File

@ -6,6 +6,13 @@ org.gradle.caching=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m
kotlin.mpp.stability.nowarn=true
BIP39_IS_TREAT_WARNINGS_AS_ERRORS=false
JVM_TOOLCHAIN=17
JVM_TARGET=1.8
# Publishing : Required
GROUP=cash.z.ecc.android
POM_ARTIFACT_ID=kotlin-bip39

View File

@ -11,7 +11,7 @@ moshi-core = { module = "com.squareup.moshi:moshi", version.ref = "moshi" }
moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" }
[plugins]
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
dokka = "org.jetbrains.dokka:1.6.20"
versions = "com.github.ben-manes.versions:0.42.0"
publish = "com.vanniktech.maven.publish:0.18.0"

View File

@ -1,5 +1,5 @@
plugins {
alias(libs.plugins.kotlin)
id("org.jetbrains.kotlin.multiplatform") version(libs.versions.kotlin.get())
id("java-library")
alias(libs.plugins.dokka)
alias(libs.plugins.publish)
@ -8,37 +8,32 @@ plugins {
group = project.property("GROUP").toString()
version = project.property("VERSION_NAME").toString()
sourceSets {
main {
java {
setSrcDirs(listOf("src/jvmMain/kotlin"))
}
}
test {
java {
setSrcDirs(listOf("src/jvmTest/kotlin", "src/jvmTest/resources"))
}
}
}
kotlin {
jvmToolchain {
// This should be set lower for Android, although there's no compatible JVM for Apple Silicon
(this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
jvm()
sourceSets {
val commonMain by getting {
dependencies {
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val jvmMain by getting {
dependencies {
}
}
val jvmTest by getting {
dependencies {
implementation(kotlin("test"))
implementation(libs.kotest.runner)
implementation(libs.kotest.assertion)
implementation(libs.kotest.property)
implementation(libs.moshi.core)
implementation(libs.moshi.kotlin)
}
}
}
}
dependencies {
// Tests
testImplementation(kotlin("test"))
testImplementation(libs.kotest.runner)
testImplementation(libs.kotest.assertion)
testImplementation(libs.kotest.property)
testImplementation(libs.moshi.core)
testImplementation(libs.moshi.kotlin)
}
tasks.withType<Test> {
useJUnitPlatform()
}

4
settings-gradle.lockfile Normal file
View File

@ -0,0 +1,4 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
empty=incomingCatalogForLibs0

View File

@ -7,3 +7,5 @@ dependencyResolutionManagement {
rootProject.name = "kotlin-bip39"
include(":lib")
includeBuild("build-conventions")