106 lines
3.0 KiB
Groovy
106 lines
3.0 KiB
Groovy
|
|
||
|
// General gradle arguments for root project
|
||
|
buildscript {
|
||
|
repositories {
|
||
|
google()
|
||
|
jcenter()
|
||
|
}
|
||
|
dependencies {
|
||
|
//
|
||
|
// https://developer.android.com/studio/releases/gradle-plugin
|
||
|
//
|
||
|
// Notice that 3.1.3 here is the version of [Android Gradle Plugin]
|
||
|
// Accroding to URL above you will need Gradle 4.4 or higher
|
||
|
//
|
||
|
classpath 'com.android.tools.build:gradle:3.1.3'
|
||
|
}
|
||
|
}
|
||
|
repositories {
|
||
|
google()
|
||
|
jcenter()
|
||
|
}
|
||
|
|
||
|
// Output: Shared library (.so) for Android
|
||
|
apply plugin: 'com.android.library'
|
||
|
|
||
|
android {
|
||
|
compileSdkVersion 25 // Android 7.0
|
||
|
|
||
|
// Target ABI
|
||
|
// - This option controls target platform of module
|
||
|
// - The platform might be limited by compiler's support
|
||
|
// some can work with Clang(default), but some can work only with GCC...
|
||
|
// if bad, both toolchains might not support it
|
||
|
splits {
|
||
|
abi {
|
||
|
enable true
|
||
|
// Specify platforms for Application
|
||
|
reset()
|
||
|
include "arm64-v8a", "armeabi-v7a", "x86_64"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
defaultConfig {
|
||
|
minSdkVersion 21 // Android 5.0+
|
||
|
targetSdkVersion 25 // Follow Compile SDK
|
||
|
versionCode 20 // Follow release count
|
||
|
versionName "5.2.1" // Follow Official version
|
||
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||
|
|
||
|
externalNativeBuild {
|
||
|
cmake {
|
||
|
arguments "-DANDROID_STL=c++_shared" // Specify Android STL
|
||
|
arguments "-DBUILD_SHARED_LIBS=true" // Build shared object
|
||
|
arguments "-DFMT_TEST=false" // Skip test
|
||
|
arguments "-DFMT_DOC=false" // Skip document
|
||
|
cppFlags "-std=c++17"
|
||
|
}
|
||
|
}
|
||
|
println("Gradle CMake Plugin: ")
|
||
|
println(externalNativeBuild.cmake.cppFlags)
|
||
|
println(externalNativeBuild.cmake.arguments)
|
||
|
}
|
||
|
|
||
|
// External Native build
|
||
|
// - Use existing CMakeList.txt
|
||
|
// - Give path to CMake. This gradle file should be
|
||
|
// neighbor of the top level cmake
|
||
|
externalNativeBuild {
|
||
|
cmake {
|
||
|
path "../CMakeLists.txt"
|
||
|
// buildStagingDirectory "./build" // Custom path for cmake output
|
||
|
}
|
||
|
//println(cmake.path)
|
||
|
}
|
||
|
|
||
|
sourceSets{
|
||
|
// Android Manifest for Gradle
|
||
|
main {
|
||
|
manifest.srcFile 'AndroidManifest.xml'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
assemble.doLast
|
||
|
{
|
||
|
// Instead of `ninja install`, Gradle will deploy the files.
|
||
|
// We are doing this since FMT is dependent to the ANDROID_STL after build
|
||
|
copy {
|
||
|
from 'build/intermediates/cmake'
|
||
|
into '../libs'
|
||
|
}
|
||
|
// Copy debug binaries
|
||
|
copy {
|
||
|
from '../libs/debug/obj'
|
||
|
into '../libs/debug'
|
||
|
}
|
||
|
// Copy Release binaries
|
||
|
copy {
|
||
|
from '../libs/release/obj'
|
||
|
into '../libs/release'
|
||
|
}
|
||
|
// Remove empty directory
|
||
|
delete '../libs/debug/obj'
|
||
|
delete '../libs/release/obj'
|
||
|
}
|