2019-01-02 21:31:12 -08:00
|
|
|
//def protoSrcDir = "src/main/proto"
|
|
|
|
//def protoDestDir = "build/generated/source/grpc"
|
|
|
|
def protoIncludeDir = "build/extracted-include-protos/main"
|
2018-11-20 23:04:53 -08:00
|
|
|
def jniSrcDir = "src/main/rust"
|
|
|
|
def jniDestDir = "build/rust/target"
|
2018-11-20 09:59:08 -08:00
|
|
|
|
2018-11-20 23:04:53 -08:00
|
|
|
def libFile = "libzcashwalletsdk.so"
|
|
|
|
def libX86File = "build/rust/target/i686-linux-android/release/$libFile"
|
|
|
|
def libX86Dir = "src/main/jniLibs/x86"
|
|
|
|
def libArm64File = "build/rust/target/aarch64-linux-android/release/$libFile"
|
|
|
|
def libArm64Dir = "src/main/jniLibs/arm64-v8a"
|
|
|
|
def libArmeabiFile = "build/rust/target/armv7-linux-androideabi/release/$libFile"
|
|
|
|
def libArmeabiDir = "src/main/jniLibs/armeabi-v7a"
|
2018-11-20 09:59:08 -08:00
|
|
|
|
2019-01-02 21:31:12 -08:00
|
|
|
//buildscript {
|
|
|
|
// dependencies {
|
|
|
|
// classpath("com.squareup.wire:wire-compiler:2.2.0")
|
|
|
|
// }
|
|
|
|
// repositories {
|
|
|
|
// mavenCentral()
|
|
|
|
// }
|
|
|
|
//}
|
2018-11-20 09:59:08 -08:00
|
|
|
|
2019-01-02 21:31:12 -08:00
|
|
|
//tasks.register("generateGrpcClasses") {
|
|
|
|
// doFirst {
|
|
|
|
// println("**** CREATING PROTOS ****")
|
|
|
|
// delete(protoDestDir)
|
|
|
|
// mkdir(protoDestDir)
|
|
|
|
// }
|
|
|
|
// description = "Generate Java classes from protocol buffer (.proto) schema files for use with grpc"
|
|
|
|
//
|
|
|
|
// fileTree(dir: protoSrcDir, include: '**/*.proto').each { File file ->
|
|
|
|
// doLast {
|
|
|
|
// javaexec {
|
|
|
|
// main = "com.squareup.wire.WireCompiler"
|
|
|
|
// classpath = buildscript.configurations.classpath
|
|
|
|
// args = ["--proto_path=$protoSrcDir", "--java_out=$protoDestDir", file.path]
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// inputs.files(fileTree(dir: protoSrcDir, include: '**/*.proto'))
|
|
|
|
// outputs.files(fileTree(dir: protoDestDir, include: '**'))
|
|
|
|
//}
|
2018-11-20 09:59:08 -08:00
|
|
|
|
2019-01-02 21:31:12 -08:00
|
|
|
//tasks.register("generateProtobufClasses") {
|
|
|
|
// doFirst {
|
|
|
|
// println("**** CREATING PROTOS ****")
|
|
|
|
// delete(protoDestDir)
|
|
|
|
// mkdir(protoDestDir)
|
|
|
|
// }
|
|
|
|
// description = "Generate Java classes from protocol buffer (.proto) schema files for use with Square's Wire library"
|
|
|
|
//
|
|
|
|
// fileTree(dir: protoSrcDir, include: '**/*.proto').each { File file ->
|
|
|
|
// doLast {
|
|
|
|
// javaexec {
|
|
|
|
// main = "com.squareup.wire.WireCompiler"
|
|
|
|
// classpath = buildscript.configurations.classpath
|
|
|
|
// args = ["--proto_path=$protoSrcDir", "--java_out=$protoDestDir", file.path]
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// inputs.files(fileTree(dir: protoSrcDir, include: '**/*.proto'))
|
|
|
|
// outputs.files(fileTree(dir: protoDestDir, include: '**'))
|
|
|
|
//}
|
|
|
|
tasks.register("includeDirBugFix") {
|
|
|
|
doFirst {
|
|
|
|
mkdir(protoIncludeDir)
|
2018-11-20 09:59:08 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-01-02 21:31:12 -08:00
|
|
|
// TODO: run these in paralell with the worker API: https://guides.gradle.org/using-the-worker-api/
|
|
|
|
// note: this will require modifying the build script and having 3 separate calls
|
2018-11-27 19:19:11 -08:00
|
|
|
tasks.register("generateJniLibs") {
|
2018-11-20 23:04:53 -08:00
|
|
|
doFirst {
|
|
|
|
println("**** CREATING JNI LIBS ****")
|
|
|
|
delete(jniDestDir)
|
|
|
|
mkdir(jniDestDir)
|
|
|
|
}
|
|
|
|
description = "Generate *.so files for connecting to the Rust wallet logic through the JNI"
|
|
|
|
doLast {
|
2018-11-21 05:41:07 -08:00
|
|
|
if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
|
|
|
|
exec {
|
|
|
|
commandLine("./build-rust.bat")
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
exec {
|
|
|
|
commandLine("./build-rust.sh")
|
|
|
|
}
|
2018-11-20 09:59:08 -08:00
|
|
|
}
|
|
|
|
}
|
2018-11-27 19:19:11 -08:00
|
|
|
inputs.files(fileTree(dir: jniSrcDir, include: '**/*.rs'))
|
2018-11-20 23:04:53 -08:00
|
|
|
outputs.files(fileTree(dir: jniDestDir, include: '**/*.so'))
|
2018-11-20 09:59:08 -08:00
|
|
|
}
|
|
|
|
|
2018-11-20 23:04:53 -08:00
|
|
|
tasks.register("copyLibX86", Copy) {
|
2018-11-27 19:19:11 -08:00
|
|
|
dependsOn generateJniLibs
|
2018-11-20 23:04:53 -08:00
|
|
|
from libX86File
|
|
|
|
into libX86Dir
|
|
|
|
}
|
|
|
|
tasks.register("copyLibArm64", Copy) {
|
2018-11-27 19:19:11 -08:00
|
|
|
dependsOn generateJniLibs
|
2018-11-20 23:04:53 -08:00
|
|
|
from libArm64File
|
|
|
|
into libArm64Dir
|
|
|
|
}
|
|
|
|
tasks.register("copyLibArmeabi", Copy) {
|
2018-11-27 19:19:11 -08:00
|
|
|
dependsOn generateJniLibs
|
2018-11-20 23:04:53 -08:00
|
|
|
from libArmeabiFile
|
|
|
|
into libArmeabiDir
|
2018-11-27 19:19:11 -08:00
|
|
|
}
|
|
|
|
tasks.register("copyAllJniLibs") {
|
|
|
|
dependsOn copyLibX86, copyLibArm64, copyLibArmeabi
|
2018-11-20 23:04:53 -08:00
|
|
|
}
|