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>null10plugins { 11 id("maven-publish") 12 id("com.android.ndkports.NdkPorts") 13 distribution 14 } 15 <lambda>null16ndkPorts { 17 ndkPath.set(File(project.findProperty("ndkPath") as String)) 18 source.set(project.file("src.tar.gz")) 19 minSdkVersion.set(21) 20 } 21 <lambda>null22tasks.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>null33tasks.prefabPackage { 34 version.set(CMakeCompatibleVersion.parse(portVersion)) 35 36 modules { 37 create("jsoncpp") 38 } 39 } 40 <lambda>null41tasks.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>null69publishing { 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>null106distributions { 107 main { 108 contents { 109 from("${project.buildDir}/repository") 110 include("**/*.aar") 111 include("**/*.pom") 112 } 113 } 114 } 115 <lambda>null116tasks { 117 distZip { 118 dependsOn("publish") 119 destinationDirectory.set(File(rootProject.buildDir, "distributions")) 120 } 121 } 122