xref: /aosp_15_r20/tools/ndkports/jsoncpp/build.gradle.kts (revision 2e149f73a8e792fff6dc6aadc18d0d919a071282)
1*2e149f73SXin Li import com.android.ndkports.AndroidExecutableTestTask
2*2e149f73SXin Li import com.android.ndkports.CMakeCompatibleVersion
3*2e149f73SXin Li import com.android.ndkports.MesonPortTask
4*2e149f73SXin Li 
5*2e149f73SXin Li val portVersion = "1.9.5"
6*2e149f73SXin Li 
7*2e149f73SXin Li group = "com.android.ndk.thirdparty"
8*2e149f73SXin Li version = "$portVersion${rootProject.extra.get("snapshotSuffix")}"
9*2e149f73SXin Li 
<lambda>null10*2e149f73SXin Li plugins {
11*2e149f73SXin Li     id("maven-publish")
12*2e149f73SXin Li     id("com.android.ndkports.NdkPorts")
13*2e149f73SXin Li     distribution
14*2e149f73SXin Li }
15*2e149f73SXin Li 
<lambda>null16*2e149f73SXin Li ndkPorts {
17*2e149f73SXin Li     ndkPath.set(File(project.findProperty("ndkPath") as String))
18*2e149f73SXin Li     source.set(project.file("src.tar.gz"))
19*2e149f73SXin Li     minSdkVersion.set(21)
20*2e149f73SXin Li }
21*2e149f73SXin Li 
<lambda>null22*2e149f73SXin Li tasks.extractSrc {
23*2e149f73SXin Li     doLast {
24*2e149f73SXin Li         // jsoncpp has a "version" file on the include path that conflicts with
25*2e149f73SXin Li         // https://en.cppreference.com/w/cpp/header/version. Remove it so we can
26*2e149f73SXin Li         // build.
27*2e149f73SXin Li         outDir.get().asFile.resolve("version").delete()
28*2e149f73SXin Li     }
29*2e149f73SXin Li }
30*2e149f73SXin Li 
31*2e149f73SXin Li val buildTask = tasks.register<MesonPortTask>("buildPort")
32*2e149f73SXin Li 
<lambda>null33*2e149f73SXin Li tasks.prefabPackage {
34*2e149f73SXin Li     version.set(CMakeCompatibleVersion.parse(portVersion))
35*2e149f73SXin Li 
36*2e149f73SXin Li     modules {
37*2e149f73SXin Li         create("jsoncpp")
38*2e149f73SXin Li     }
39*2e149f73SXin Li }
40*2e149f73SXin Li 
<lambda>null41*2e149f73SXin Li tasks.register<AndroidExecutableTestTask>("test") {
42*2e149f73SXin Li     push {
43*2e149f73SXin Li         push(
44*2e149f73SXin Li             buildTask.get().buildDirectoryFor(abi).resolve("jsoncpp_test"),
45*2e149f73SXin Li             File("jsoncpp_test")
46*2e149f73SXin Li         )
47*2e149f73SXin Li         push(
48*2e149f73SXin Li             buildTask.get().installDirectoryFor(abi)
49*2e149f73SXin Li                 .resolve("lib/libjsoncpp.so"), File("libjsoncpp.so")
50*2e149f73SXin Li         )
51*2e149f73SXin Li         push(
52*2e149f73SXin Li             toolchain.sysrootLibs.resolve("libc++_shared.so"),
53*2e149f73SXin Li             File("libc++_shared.so")
54*2e149f73SXin Li         )
55*2e149f73SXin Li     }
56*2e149f73SXin Li 
57*2e149f73SXin Li     run {
58*2e149f73SXin Li         // JsonCpp has other tests, but they require running Python on the
59*2e149f73SXin Li         // device.
60*2e149f73SXin Li         shellTest(
61*2e149f73SXin Li             "jsoncpp_test", listOf(
62*2e149f73SXin Li                 "LD_LIBRARY_PATH=$deviceDirectory",
63*2e149f73SXin Li                 deviceDirectory.resolve("jsoncpp_test").toString()
64*2e149f73SXin Li             )
65*2e149f73SXin Li         )
66*2e149f73SXin Li     }
67*2e149f73SXin Li }
68*2e149f73SXin Li 
<lambda>null69*2e149f73SXin Li publishing {
70*2e149f73SXin Li     publications {
71*2e149f73SXin Li         create<MavenPublication>("maven") {
72*2e149f73SXin Li             from(components["prefab"])
73*2e149f73SXin Li             pom {
74*2e149f73SXin Li                 name.set("JsonCpp")
75*2e149f73SXin Li                 description.set("The ndkports AAR for JsonCpp.")
76*2e149f73SXin Li                 url.set(
77*2e149f73SXin Li                     "https://android.googlesource.com/platform/tools/ndkports"
78*2e149f73SXin Li                 )
79*2e149f73SXin Li                 licenses {
80*2e149f73SXin Li                     license {
81*2e149f73SXin Li                         name.set("The JsonCpp License")
82*2e149f73SXin Li                         url.set("https://github.com/open-source-parsers/jsoncpp/blob/master/LICENSE")
83*2e149f73SXin Li                         distribution.set("repo")
84*2e149f73SXin Li                     }
85*2e149f73SXin Li                 }
86*2e149f73SXin Li                 developers {
87*2e149f73SXin Li                     developer {
88*2e149f73SXin Li                         name.set("The Android Open Source Project")
89*2e149f73SXin Li                     }
90*2e149f73SXin Li                 }
91*2e149f73SXin Li                 scm {
92*2e149f73SXin Li                     url.set("https://android.googlesource.com/platform/tools/ndkports")
93*2e149f73SXin Li                     connection.set("scm:git:https://android.googlesource.com/platform/tools/ndkports")
94*2e149f73SXin Li                 }
95*2e149f73SXin Li             }
96*2e149f73SXin Li         }
97*2e149f73SXin Li     }
98*2e149f73SXin Li 
99*2e149f73SXin Li     repositories {
100*2e149f73SXin Li         maven {
101*2e149f73SXin Li             url = uri("${project.buildDir}/repository")
102*2e149f73SXin Li         }
103*2e149f73SXin Li     }
104*2e149f73SXin Li }
105*2e149f73SXin Li 
<lambda>null106*2e149f73SXin Li distributions {
107*2e149f73SXin Li     main {
108*2e149f73SXin Li         contents {
109*2e149f73SXin Li             from("${project.buildDir}/repository")
110*2e149f73SXin Li             include("**/*.aar")
111*2e149f73SXin Li             include("**/*.pom")
112*2e149f73SXin Li         }
113*2e149f73SXin Li     }
114*2e149f73SXin Li }
115*2e149f73SXin Li 
<lambda>null116*2e149f73SXin Li tasks {
117*2e149f73SXin Li     distZip {
118*2e149f73SXin Li         dependsOn("publish")
119*2e149f73SXin Li         destinationDirectory.set(File(rootProject.buildDir, "distributions"))
120*2e149f73SXin Li     }
121*2e149f73SXin Li }
122