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