diff --git a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/Enums.kt similarity index 75% rename from buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt rename to buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/Enums.kt index 6bcd494..ca12990 100644 --- a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt +++ b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/Enums.kt @@ -1,4 +1,4 @@ -package org.bitcoindevkit.plugin +package org.bitcoindevkit.plugins enum class Arch { AARCH64, diff --git a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-jvm-bindings.gradle.kts similarity index 73% rename from buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts rename to buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-jvm-bindings.gradle.kts index d9a1fa8..3191c7a 100644 --- a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts +++ b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugins/generate-jvm-bindings.gradle.kts @@ -1,4 +1,4 @@ -package org.bitcoindevkit.plugin +package org.bitcoindevkit.plugins val operatingSystem: OS = when { System.getProperty("os.name").contains("mac", ignoreCase = true) -> OS.MAC @@ -11,9 +11,12 @@ val architecture: Arch = when (System.getProperty("os.arch")) { else -> Arch.OTHER } +// register a task of type Exec called buildJvmBinary +// which will run something like +// cargo build --release --target aarch64-apple-darwin val buildJvmBinary by tasks.register("buildJvmBinary") { - group = "Bitcoindevkit" - description = "Build the JVM binaries for the bitcoindevkit" + // group = "Bitcoindevkit" + // description = "Build the JVM binaries for the bitcoindevkit" workingDir("${project.projectDir}/../bdk-ffi") val cargoArgs: MutableList = mutableListOf("build", "--release", "--target") @@ -34,9 +37,11 @@ val buildJvmBinary by tasks.register("buildJvmBinary") { } } +// move the native libs build by cargo from bdk-ffi/target/.../release/ +// to their place in the bdk-jvm library val moveNativeJvmLib by tasks.register("moveNativeJvmLib") { - group = "Bitcoindevkit" - description = "Move the native libraries to the bdk-jvm project" + // group = "Bitcoindevkit" + // description = "Move the native libraries to the bdk-jvm project" dependsOn(buildJvmBinary) var targetDir = "" @@ -60,14 +65,16 @@ val moveNativeJvmLib by tasks.register("moveNativeJvmLib") { } } +// generate the bindings using the bdk-ffi-bindgen tool +// created in the bdk-ffi submodule val generateJvmBindings by tasks.register("generateJvmBindings") { - group = "Bitcoindevkit" - description = "Building the bindings file for the bitcoindevkit" + // group = "Bitcoindevkit" + // description = "Building the bindings file for the bitcoindevkit" dependsOn(moveNativeJvmLib) workingDir("${project.projectDir}/../bdk-ffi") - executable("uniffi-bindgen") - args("generate", "./src/bdk.udl", "--no-format", "--out-dir", "../jvm/src/main/kotlin", "--language", "kotlin") + executable("cargo") + args("run", "--package", "bdk-ffi-bindgen", "--", "--language", "kotlin", "--out-dir", "../jvm/src/main/kotlin") doLast { println("JVM bindings file successfully created") diff --git a/jvm/build.gradle.kts b/jvm/build.gradle.kts index dfa082b..b4d8a19 100644 --- a/jvm/build.gradle.kts +++ b/jvm/build.gradle.kts @@ -6,8 +6,12 @@ plugins { id("java-library") id("maven-publish") id("signing") + + // API docs id("org.jetbrains.dokka") version "1.6.10" - id("org.bitcoindevkit.plugin.generate-bdk-bindings") + + // Custom plugin to generate the native libs and bindings file + id("org.bitcoindevkit.plugins.generate-jvm-bindings") } java {