1*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null2*3c7ae9deSAndroid Build Coastguard Worker plugins {
3*3c7ae9deSAndroid Build Coastguard Worker `c`
4*3c7ae9deSAndroid Build Coastguard Worker }
5*3c7ae9deSAndroid Build Coastguard Worker
6*3c7ae9deSAndroid Build Coastguard Worker description = "JNI bindings for the AWS Common Runtime"
7*3c7ae9deSAndroid Build Coastguard Worker
8*3c7ae9deSAndroid Build Coastguard Worker buildDir = File("../../build")
9*3c7ae9deSAndroid Build Coastguard Worker
10*3c7ae9deSAndroid Build Coastguard Worker var buildType = "RelWithDebInfo"
11*3c7ae9deSAndroid Build Coastguard Worker if (project.hasProperty("buildType")) {
12*3c7ae9deSAndroid Build Coastguard Worker buildType = project.property("buildType").toString()
13*3c7ae9deSAndroid Build Coastguard Worker logger.info("Using custom build type: ${buildType}")
14*3c7ae9deSAndroid Build Coastguard Worker }
15*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null16*3c7ae9deSAndroid Build Coastguard Worker val cmakeConfigure = tasks.register("cmakeConfigure") {
17*3c7ae9deSAndroid Build Coastguard Worker var cmakeArgs = listOf(
18*3c7ae9deSAndroid Build Coastguard Worker "-B${buildDir}/cmake-build",
19*3c7ae9deSAndroid Build Coastguard Worker "-H${projectDir}/../../",
20*3c7ae9deSAndroid Build Coastguard Worker "-DCMAKE_BUILD_TYPE=${buildType}",
21*3c7ae9deSAndroid Build Coastguard Worker "-DCMAKE_INSTALL_PREFIX=${buildDir}/cmake-build",
22*3c7ae9deSAndroid Build Coastguard Worker "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
23*3c7ae9deSAndroid Build Coastguard Worker "-DBUILD_DEPS=ON",
24*3c7ae9deSAndroid Build Coastguard Worker "-DBUILD_TESTING=OFF"
25*3c7ae9deSAndroid Build Coastguard Worker )
26*3c7ae9deSAndroid Build Coastguard Worker
27*3c7ae9deSAndroid Build Coastguard Worker inputs.file("../../CMakeLists.txt")
28*3c7ae9deSAndroid Build Coastguard Worker outputs.file("${buildDir}/cmake-build/CMakeCache.txt")
29*3c7ae9deSAndroid Build Coastguard Worker
30*3c7ae9deSAndroid Build Coastguard Worker doLast {
31*3c7ae9deSAndroid Build Coastguard Worker val argsStr = cmakeArgs.joinToString(separator=" ")
32*3c7ae9deSAndroid Build Coastguard Worker logger.info("cmake ${argsStr}")
33*3c7ae9deSAndroid Build Coastguard Worker exec {
34*3c7ae9deSAndroid Build Coastguard Worker executable("cmake")
35*3c7ae9deSAndroid Build Coastguard Worker args(cmakeArgs)
36*3c7ae9deSAndroid Build Coastguard Worker environment(mapOf<String, String>("JAVA_HOME" to System.getProperty("java.home")))
37*3c7ae9deSAndroid Build Coastguard Worker }
38*3c7ae9deSAndroid Build Coastguard Worker }
39*3c7ae9deSAndroid Build Coastguard Worker }
40*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null41*3c7ae9deSAndroid Build Coastguard Worker val cmakeBuild = tasks.register("cmakeBuild") {
42*3c7ae9deSAndroid Build Coastguard Worker dependsOn(cmakeConfigure)
43*3c7ae9deSAndroid Build Coastguard Worker inputs.file("../../CMakeLists.txt")
44*3c7ae9deSAndroid Build Coastguard Worker inputs.file("${buildDir}/cmake-build/CMakeCache.txt")
45*3c7ae9deSAndroid Build Coastguard Worker inputs.files(fileTree(".").matching {
46*3c7ae9deSAndroid Build Coastguard Worker include(listOf("**/*.c", "**/*.h"))
47*3c7ae9deSAndroid Build Coastguard Worker })
48*3c7ae9deSAndroid Build Coastguard Worker inputs.files(fileTree("../../crt").matching {
49*3c7ae9deSAndroid Build Coastguard Worker include(listOf("**/CMakeLists.txt", "**/*.c", "**/*.h"))
50*3c7ae9deSAndroid Build Coastguard Worker })
51*3c7ae9deSAndroid Build Coastguard Worker outputs.file("${buildDir}/cmake-build/lib/libaws-crt-jni.so")
52*3c7ae9deSAndroid Build Coastguard Worker outputs.upToDateWhen { false } //shared lib doesn't seem to get placed in jar without this
53*3c7ae9deSAndroid Build Coastguard Worker
54*3c7ae9deSAndroid Build Coastguard Worker var cmakeArgs = listOf(
55*3c7ae9deSAndroid Build Coastguard Worker "--build", "${buildDir}/cmake-build",
56*3c7ae9deSAndroid Build Coastguard Worker "--target", "all"
57*3c7ae9deSAndroid Build Coastguard Worker )
58*3c7ae9deSAndroid Build Coastguard Worker
59*3c7ae9deSAndroid Build Coastguard Worker doLast {
60*3c7ae9deSAndroid Build Coastguard Worker val argsStr = cmakeArgs.joinToString(separator=" ")
61*3c7ae9deSAndroid Build Coastguard Worker logger.info("cmake ${argsStr}")
62*3c7ae9deSAndroid Build Coastguard Worker exec {
63*3c7ae9deSAndroid Build Coastguard Worker executable("cmake")
64*3c7ae9deSAndroid Build Coastguard Worker args(cmakeArgs)
65*3c7ae9deSAndroid Build Coastguard Worker }
66*3c7ae9deSAndroid Build Coastguard Worker }
67*3c7ae9deSAndroid Build Coastguard Worker }
68*3c7ae9deSAndroid Build Coastguard Worker
<lambda>null69*3c7ae9deSAndroid Build Coastguard Worker tasks.assemble {
70*3c7ae9deSAndroid Build Coastguard Worker dependsOn(cmakeBuild)
71*3c7ae9deSAndroid Build Coastguard Worker }
72