<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