STT-tensorflow/tensorflow/tools/android/inference_interface/cmake/build.gradle
Mark Daoust b4d110caee Copy Android Inference Interface out of contrib.
Point tensorflow/examples/android at the copy.

PiperOrigin-RevId: 269423640
2019-09-16 16:01:26 -07:00

106 lines
3.4 KiB
Groovy

apply plugin: 'com.android.library'
// TensorFlow repo root dir on local machine
def TF_SRC_DIR = projectDir.toString() + "/../../../.."
android {
compileSdkVersion 24
// Check local build_tools_version as this is liable to change within Android Studio.
buildToolsVersion '25.0.2'
// for debugging native code purpose
publishNonDefault true
defaultConfig {
archivesBaseName = "Tensorflow-Android-Inference"
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk {
abiFilters 'armeabi-v7a'
}
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang',
'-DANDROID_STL=c++_static'
}
}
}
sourceSets {
main {
java {
srcDir "${TF_SRC_DIR}/tensorflow/tools/android/inference_interface/java"
srcDir "${TF_SRC_DIR}/tensorflow/java/src/main/java"
exclude '**/examples/**'
}
}
}
externalNativeBuild {
cmake {
path 'CMakeLists.txt'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
// Build libtensorflow-core.a if necessary
// Note: the environment needs to be set up already
// [ such as installing autoconfig, make, etc ]
// How to use:
// 1) install all of the necessary tools to build libtensorflow-core.a
// 2) inside Android Studio IDE, uncomment buildTensorFlow in
// whenTaskAdded{...}
// 3) re-sync and re-build. It could take a long time if NOT building
// with multiple processes.
import org.apache.tools.ant.taskdefs.condition.Os
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties')
.newDataInputStream())
def ndkDir = properties.getProperty('ndk.dir')
if (ndkDir == null || ndkDir == "") {
ndkDir = System.getenv('ANDROID_NDK_HOME')
}
if (!Os.isFamily(Os.FAMILY_WINDOWS)) {
// This script is for non-Windows OS. For Windows OS, MANUALLY build
// (or copy the built) libs/headers to the
// ${TENSORFLOW_ROOT_DIR}/tensorflow/contrib/makefile/gen
// refer to CMakeLists.txt about lib and header directories for details
task buildTensorflow(type: Exec) {
group 'buildTensorflowLib'
workingDir getProjectDir().toString() + '/../../../../'
environment PATH: '/opt/local/bin:/opt/local/sbin:' +
System.getenv('PATH')
environment NDK_ROOT: ndkDir
commandLine 'tensorflow/contrib/makefile/build_all_android.sh'
}
tasks.whenTaskAdded { task ->
group 'buildTensorflowLib'
if (task.name.toLowerCase().contains('sources')) {
def tensorflowTarget = new File(getProjectDir().toString() +
'/../../makefile/gen/lib/libtensorflow-core.a')
if (!tensorflowTarget.exists()) {
// Note:
// just uncomment this line to use it:
// it can take long time to build by default
// it is disabled to avoid false first impression
task.dependsOn buildTensorflow
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}