summaryrefslogtreecommitdiffstats
path: root/src/fmt/support/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'src/fmt/support/build.gradle')
-rw-r--r--src/fmt/support/build.gradle107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/fmt/support/build.gradle b/src/fmt/support/build.gradle
new file mode 100644
index 000000000..11648da88
--- /dev/null
+++ b/src/fmt/support/build.gradle
@@ -0,0 +1,107 @@
+
+// General gradle arguments for root project
+buildscript {
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ //
+ // https://developer.android.com/studio/releases/gradle-plugin
+ //
+ // Notice that 3.3.0 here is the version of [Android Gradle Plugin]
+ // Accroding to URL above you will need Gradle 5.0 or higher
+ //
+ // If you are using Android Studio, and it is using Gradle's lower
+ // version, Use the plugin version 3.1.3 ~ 3.2.0 for Gradle 4.4 ~ 4.10
+ classpath 'com.android.tools.build:gradle:3.3.0'
+ }
+}
+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 21 // Follow release count
+ versionName "5.3.0" // 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'
+}