diff --git a/build.gradle b/build.gradle index e01e1fd3..a13d8ad2 100644 --- a/build.gradle +++ b/build.gradle @@ -10,28 +10,11 @@ buildscript { } } -allprojects { - repositories { - google() - jcenter() - } -} - // Output: Shared library (.so) for Android apply plugin: 'com.android.library' android { - compileSdkVersion 24 // Android 7.0 - - // 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" - } - } + compileSdkVersion 25 // Android 7.0 // Target ABI // - This option controls target platform of module @@ -40,72 +23,76 @@ android { // if bad, both toolchains might not support it splits { abi { - // Be general, as it can... enable true - universalApk true - // We can specify platforms, like... - // reset() - // include "x86", "x86_64", "armeabi-v7a", "arm64-v8a" + // Be general, as much as possible ... + // universalApk true + + // Specify platforms for Application + reset() + include "x86", "x86_64", "armeabi-v7a", "arm64-v8a" } } defaultConfig { minSdkVersion 21 // Android 5.0+ - targetSdkVersion 24 // Follow Compile SDK + targetSdkVersion 25 // Follow Compile SDK versionCode 16 // Follow release count versionName "4.1.0" // Follow Official version testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - - // - Specify Android STL - // - Additional flags + externalNativeBuild { cmake { - arguments "-DANDROID_STL=c++_shared" - "-DBUILD_SHARED=true" + 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++14" } } + 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{ - // gradle assemble - main.setRoot('./') + // Android Manifest for Gradle main { manifest.srcFile 'support/AndroidManifest.xml' } } - // // Custom SourceSet for JNI adapter - // // - Source path/directory for Gradle - // sourceSets { - // // gradle assemble - // main.setRoot('droid/main') - // // main { - // // manifest.srcFile 'droid/main/AndroidManifest.xml' - // // java.srcDirs = ['droid/main/java'] - // // jniLibs.srcDirs = ['droid/main/jniLibs'] - // // res.srcDirs = ['droid/main/res'] - // // assets.srcDirs = ['droid/main/assets'] - // // } - // // gradle connectedAndroidTest - // androidTest.setRoot('droid/androidTest') - // // androidTest { - // // java.srcDir 'droid/androidTest/java' - // // } - // // If ABI includes `armeabi-v7a`, the following directory MUST exists. - // // Notice that the path is relative to `build.gradle` file - // // `droid/main/jniLibs/armeabi-v7a` - // // `libs/armeabi-v7a` - // // The library files in there will be installed automatically - // main.jniLibs.srcDirs = ['droid/main/jniLibs', 'libs'] - // androidTest.jniLibs.srcDirs = ['droid/main/jniLibs', 'libs'] - // } } -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - - implementation 'com.android.support:appcompat-v7:24.+' // Follow target SDK - testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' +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' }