From 06d3f96706df01567ba87a7bcaf73d003dfb6c69 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Tue, 22 Mar 2022 14:01:13 -0400 Subject: [PATCH] Add aggregate task buildJvmLib --- .../kotlin/org/bitcoindevkit/plugin/Enums.kt | 13 ++++++ .../plugin/generate-bdk-bindings.gradle.kts | 41 +++++++++++-------- 2 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt diff --git a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt new file mode 100644 index 0000000..6bcd494 --- /dev/null +++ b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/Enums.kt @@ -0,0 +1,13 @@ +package org.bitcoindevkit.plugin + +enum class Arch { + AARCH64, + X86_64, + OTHER, +} + +enum class OS { + MAC, + LINUX, + OTHER, +} diff --git a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts index f36d66f..d9a1fa8 100644 --- a/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts +++ b/buildSrc/src/main/kotlin/org/bitcoindevkit/plugin/generate-bdk-bindings.gradle.kts @@ -11,31 +11,33 @@ val architecture: Arch = when (System.getProperty("os.arch")) { else -> Arch.OTHER } -tasks.register("buildJvmBinaries") { +val buildJvmBinary by tasks.register("buildJvmBinary") { group = "Bitcoindevkit" - description = "Build the JVM native binaries for the bitcoindevkit" + description = "Build the JVM binaries for the bitcoindevkit" workingDir("${project.projectDir}/../bdk-ffi") val cargoArgs: MutableList = mutableListOf("build", "--release", "--target") if (operatingSystem == OS.MAC && architecture == Arch.X86_64) { - println("Building the JVM native libs for macOS x86_64") cargoArgs.add("x86_64-apple-darwin") } else if (operatingSystem == OS.MAC && architecture == Arch.AARCH64) { - println("Building the JVM native libs for macOS x86_64") cargoArgs.add("aarch64-apple-darwin") } else if (operatingSystem == OS.LINUX) { - println("Building the JVM native libs for Linux x86_64") cargoArgs.add("x86_64-unknown-linux-gnu") } executable("cargo") args(cargoArgs) + + doLast { + println("Native library for bdk-jvm on ${cargoArgs.last()} successfully built") + } } -tasks.register("moveNativeLibs") { +val moveNativeJvmLib by tasks.register("moveNativeJvmLib") { group = "Bitcoindevkit" - description = "Move the native libraries in the bdk-jvm project" + description = "Move the native libraries to the bdk-jvm project" + dependsOn(buildJvmBinary) var targetDir = "" var resDir = "" @@ -52,25 +54,28 @@ tasks.register("moveNativeLibs") { from("${project.projectDir}/../bdk-ffi/target/$targetDir/release/libbdkffi.dylib") into("${project.projectDir}/../jvm/src/main/resources/$resDir/") + + doLast { + println("$targetDir native binaries for JVM moved to ./jvm/src/main/resources/$resDir/") + } } -tasks.register("generateBindings") { +val generateJvmBindings by tasks.register("generateJvmBindings") { 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") + + doLast { + println("JVM bindings file successfully created") + } } -enum class Arch { - AARCH64, - X86_64, - OTHER, -} - -enum class OS { - MAC, - LINUX, - OTHER, +tasks.register("buildJvmLib") { + group = "Bitcoindevkit" + description = "Aggregate task to build JVM library" + dependsOn(buildJvmBinary, moveNativeJvmLib, generateJvmBindings) }