-
Notifications
You must be signed in to change notification settings - Fork 63
/
Copy pathbuild.gradle
93 lines (84 loc) · 2.81 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("java-library")
id("org.jetbrains.kotlin.jvm")
id("io.github.tomtzook.gradle-cmake") version "1.2.2"
}
cmake {
targets {
main {
cmakeLists.set(file("src/main/cpp/CMakeLists.txt"))
targetMachines.add(machines.host)
// use 'ninja' or 'unixMakefiles'
generator.set(generators.ninja)
// if you want disable jni log enable it
// cmakeArgs.add("-DDISABLE_DEXKIT_LOG=ON")
def configFlags = [
"-O3",
"-DNDEBUG",
].join(" ")
cmakeArgs.add("-DCMAKE_BUILD_TYPE=Release")
cmakeArgs.add("-DCMAKE_CXX_FLAGS_RELEASE=$configFlags")
cmakeArgs.add("-DCMAKE_C_FLAGS_RELEASE=$configFlags")
}
}
}
java {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
toolchain.languageVersion.set(JavaLanguageVersion.of(11))
}
tasks.withType(KotlinCompile).configureEach {
kotlinOptions.jvmTarget = JavaVersion.VERSION_11
kotlinOptions.languageVersion = "1.5"
kotlinOptions.freeCompilerArgs += [
"-opt-in=kotlin.RequiresOptIn",
]
}
test {
systemProperty("java.library.path", "${layout.buildDirectory.file("library").get().asFile.absolutePath}")
systemProperty("apk.path", "${layout.projectDirectory.file("apk").asFile.absolutePath}")
}
dependencies {
implementation("com.google.flatbuffers:flatbuffers-java:23.5.26")
testImplementation("junit:junit:4.13.2")
}
afterEvaluate {
tasks.register("copyLibrary") {
def build = tasks.cmakeBuild
dependsOn(build)
doLast {
copy {
from layout.buildDirectory.file("cmake").get()
into layout.buildDirectory.file("library").get()
include("**/*.so", "**/*.dll", "**/*.dylib")
eachFile {
path = name
}
includeEmptyDirs = false
}
}
}
tasks.jar.dependsOn(tasks.copyLibrary)
tasks.register("copyReleaseDemo") {
def assemble = project(":demo").tasks.assembleRelease
dependsOn(assemble)
doLast {
copy {
from project(":demo").layout.buildDirectory.file("outputs/apk/release").get()
into "$projectDir/apk"
include("**/*.apk")
eachFile {
path = name
}
rename { String fileName ->
fileName.replaceAll(".*\\.apk", "demo.apk")
}
includeEmptyDirs = false
}
}
}
tasks.testClasses.dependsOn(tasks.copyReleaseDemo)
tasks.testClasses.dependsOn(tasks.copyLibrary)
}
evaluationDependsOn(":demo")