xref: /aosp_15_r20/external/aws-crt-java/src/native/build.gradle.kts (revision 3c7ae9de214676c52d19f01067dc1a404272dc11)
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