xref: /aosp_15_r20/tools/ndkports/googletest/build.gradle.kts (revision 2e149f73a8e792fff6dc6aadc18d0d919a071282)

<lambda>null1 import com.android.ndkports.AndroidExecutableTestTask
2 import com.android.ndkports.CMakeCompatibleVersion
3 import com.android.ndkports.CMakePortTask
4 
5 val portVersion = "1.14.0"
6 
7 group = "com.android.ndk.thirdparty"
8 version = "$portVersion${rootProject.extra.get("snapshotSuffix")}"
9 
10 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 val buildTask = tasks.register<CMakePortTask>("buildPort") {
23     cmake {
24         arg("-Dgtest_build_tests=ON")
25         arg("-Dgmock_build_tests=ON")
26     }
27 }
28 
<lambda>null29 tasks.prefabPackage {
30     version.set(CMakeCompatibleVersion.parse(portVersion))
31 
32     modules {
33         create("gtest") {
34             static.set(true)
35         }
36         create("gtest_main") {
37             static.set(true)
38         }
39         create("gmock") {
40             static.set(true)
41         }
42         create("gmock_main") {
43             static.set(true)
44         }
45     }
46 }
47 
<lambda>null48 fun findTests(directory: File) = directory.listFiles()!!.filter {
49     // There are also many tests that end with test_, but those require running
50     // Python on the device.
51     it.name.endsWith("test")
52 }
53 
<lambda>null54 tasks.register<AndroidExecutableTestTask>("test") {
55     push {
56         val buildDir = buildTask.get().buildDirectoryFor(abi)
57         findTests(buildDir.resolve("googlemock")).forEach { test ->
58             push(test, File("googlemock").resolve(test.name))
59         }
60         findTests(buildDir.resolve("googletest")).forEach { test ->
61             push(test, File("googletest").resolve(test.name))
62         }
63     }
64 
65     run {
66         val buildDir = buildTask.get().buildDirectoryFor(abi)
67         findTests(buildDir.resolve("googlemock")).forEach { test ->
68             shellTest(
69                 test.name, listOf(
70                     "cd",
71                     deviceDirectory.resolve("googlemock").toString(),
72                     "&&",
73                     "./${test.name}"
74                 )
75             )
76         }
77         findTests(buildDir.resolve("googletest")).forEach { test ->
78             shellTest(
79                 test.name, listOf(
80                     "cd",
81                     deviceDirectory.resolve("googletest").toString(),
82                     "&&",
83                     "./${test.name}"
84                 )
85             )
86         }
87     }
88 }
89 
<lambda>null90 publishing {
91     publications {
92         create<MavenPublication>("maven") {
93             from(components["prefab"])
94             pom {
95                 name.set("GoogleTest")
96                 description.set("The ndkports AAR for GoogleTest.")
97                 url.set(
98                     "https://android.googlesource.com/platform/tools/ndkports"
99                 )
100                 licenses {
101                     license {
102                         name.set("BSD-3-Clause License")
103                         url.set("https://github.com/google/googletest/blob/master/LICENSE")
104                         distribution.set("repo")
105                     }
106                 }
107                 developers {
108                     developer {
109                         name.set("The Android Open Source Project")
110                     }
111                 }
112                 scm {
113                     url.set("https://android.googlesource.com/platform/tools/ndkports")
114                     connection.set("scm:git:https://android.googlesource.com/platform/tools/ndkports")
115                 }
116             }
117         }
118     }
119 
120     repositories {
121         maven {
122             url = uri("${project.buildDir}/repository")
123         }
124     }
125 }
126 
<lambda>null127 distributions {
128     main {
129         contents {
130             from("${project.buildDir}/repository")
131             include("**/*.aar")
132             include("**/*.pom")
133         }
134     }
135 }
136 
<lambda>null137 tasks {
138     distZip {
139         dependsOn("publish")
140         destinationDirectory.set(File(rootProject.buildDir, "distributions"))
141     }
142 }
143