| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- //
- // Copyright (c) 2008-2020 the Urho3D project.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- //
- import org.gradle.internal.io.NullOutputStream
- import org.gradle.internal.os.OperatingSystem
- plugins {
- id("com.android.library")
- id("com.jfrog.bintray")
- kotlin("android")
- kotlin("android.extensions")
- `maven-publish`
- }
- val kotlinVersion: String by ext
- val ndkSideBySideVersion: String by ext
- val cmakeVersion: String by ext
- val buildStagingDir: String by ext
- android {
- ndkVersion = ndkSideBySideVersion
- compileSdkVersion(30)
- defaultConfig {
- minSdkVersion(18)
- targetSdkVersion(30)
- versionCode = 1
- versionName = project.version.toString()
- testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
- externalNativeBuild {
- cmake {
- arguments.apply {
- System.getenv("ANDROID_CCACHE")?.let { add("-D ANDROID_CCACHE=$it") }
- // Pass along matching env-vars as CMake build options
- addAll(project.file("../../script/.build-options")
- .readLines()
- .mapNotNull { variable -> System.getenv(variable)?.let { "-D $variable=$it" } }
- )
- }
- targets.add("Urho3D")
- }
- }
- splits {
- abi {
- isEnable = project.hasProperty("ANDROID_ABI")
- reset()
- include(
- *(project.findProperty("ANDROID_ABI") as String? ?: "")
- .split(',')
- .toTypedArray()
- )
- }
- }
- }
- buildTypes {
- named("release") {
- isMinifyEnabled = false
- proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
- }
- }
- externalNativeBuild {
- cmake {
- version = cmakeVersion
- path = project.file("../../CMakeLists.txt")
- setBuildStagingDirectory(buildStagingDir)
- }
- }
- sourceSets {
- named("main") {
- java.srcDir("../../Source/ThirdParty/SDL/android-project/app/src/main/java")
- }
- }
- }
- dependencies {
- implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
- implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")
- implementation("com.getkeepsafe.relinker:relinker:1.4.1")
- testImplementation("junit:junit:4.13.1")
- androidTestImplementation("androidx.test:runner:1.3.0")
- androidTestImplementation("androidx.test.espresso:espresso-core:3.3.0")
- }
- android.libraryVariants.whenObjectAdded {
- val config = name
- packageLibraryProvider.get().apply {
- // Customize bundle task to also zip the Urho3D headers and libraries
- File(android.externalNativeBuild.cmake.buildStagingDirectory, "cmake/$config").list()?.forEach { abi ->
- listOf("include", "lib").forEach {
- from(File(android.externalNativeBuild.cmake.buildStagingDirectory, "cmake/$config/$abi/$it")) {
- into("urho3d/$config/$abi/$it")
- }
- }
- }
- }
- }
- tasks {
- register<Delete>("cleanAll") {
- dependsOn("clean")
- delete = setOf(android.externalNativeBuild.cmake.buildStagingDirectory)
- }
- register<Jar>("sourcesJar") {
- archiveClassifier.set("sources")
- from(android.sourceSets.getByName("main").java.srcDirs)
- }
- register<Zip>("documentationZip") {
- archiveClassifier.set("documentation")
- dependsOn("makeDoc")
- }
- register<Exec>("makeDoc") {
- // Ignore the exit status on Windows host system because Doxygen may not return exit status correctly on Windows
- isIgnoreExitValue = OperatingSystem.current().isWindows
- standardOutput = NullOutputStream.INSTANCE
- args("--build", ".", "--target", "doc")
- dependsOn("makeDocConfigurer")
- }
- register<Task>("makeDocConfigurer") {
- dependsOn("generateJsonModelRelease")
- doLast {
- val abi = File(android.externalNativeBuild.cmake.buildStagingDirectory, "cmake/release").list()!!.first()
- val buildTree = File(android.externalNativeBuild.cmake.buildStagingDirectory, "cmake/release/$abi")
- named<Exec>("makeDoc") {
- // This is a hack - expect the first line to contain the path to the CMake executable
- executable = File(buildTree, "build_command.txt").readLines().first().split(":").last().trim()
- workingDir = buildTree
- }
- named<Zip>("documentationZip") {
- from(File(buildTree, "Docs/html")) {
- into("docs")
- }
- }
- }
- }
- }
- publishing {
- publications {
- android.buildTypes.forEach {
- val config = it.name
- register<MavenPublication>("Urho${config.capitalize()}") {
- configure(config)
- }
- }
- }
- repositories {
- maven {
- name = "GitHubPackages"
- url = uri("https://maven.pkg.github.com/urho3d/Urho3D")
- credentials {
- username = System.getenv("GITHUB_ACTOR")
- password = System.getenv("GITHUB_TOKEN")
- }
- }
- }
- }
- bintray {
- user = System.getenv("BINTRAY_USER")
- key = System.getenv("BINTRAY_KEY")
- publish = true
- override = true
- setPublications("UrhoRelease", "UrhoDebug")
- pkg.apply {
- repo = "maven"
- name = project.name
- setLicenses("MIT")
- vcsUrl = "https://github.com/urho3d/Urho3D.git"
- userOrg = "urho3d"
- setLabels("android", "game-development", "game-engine", "open-source", "urho3d")
- websiteUrl = "https://urho3d.io/"
- issueTrackerUrl = "https://github.com/urho3d/Urho3D/issues"
- githubRepo = "urho3d/Urho3D"
- publicDownloadNumbers = true
- desc = project.description
- version.apply {
- name = project.version.toString()
- desc = project.description
- }
- }
- }
- fun MavenPublication.configure(config: String) {
- val libType = System.getenv("URHO3D_LIB_TYPE")?.toLowerCase() ?: "static"
- groupId = project.group.toString()
- artifactId = "${project.name}-$libType${if (config == "debug") "-debug" else ""}"
- afterEvaluate {
- from(components[config])
- }
- artifact(tasks["sourcesJar"])
- artifact(tasks["documentationZip"])
- pom {
- inceptionYear.set("2008")
- licenses {
- license {
- name.set("MIT License")
- url.set("https://github.com/urho3d/Urho3D/blob/master/LICENSE")
- }
- }
- developers {
- developer {
- name.set("Urho3D contributors")
- url.set("https://github.com/urho3d/Urho3D/graphs/contributors")
- }
- }
- scm {
- url.set("https://github.com/urho3d/Urho3D.git")
- connection.set("scm:git:ssh://[email protected]:urho3d/Urho3D.git")
- developerConnection.set("scm:git:ssh://[email protected]:urho3d/Urho3D.git")
- }
- withXml {
- asNode().apply {
- appendNode("name", "Urho3D")
- appendNode("description", project.description)
- appendNode("url", "https://urho3d.io/")
- }
- }
- }
- }
|