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 Liplugins { 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 LindkPorts { 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 Litasks.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 Litasks.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 Litasks.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 Lipublishing { 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 Lidistributions { 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 Litasks { 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