1# Description: 2# TensorFlow camera demo app for Android. 3 4package(default_visibility = ["//visibility:public"]) 5 6licenses(["notice"]) # Apache 2.0 7 8load( 9 "//tensorflow:tensorflow.bzl", 10 "tf_copts", 11 "tf_opts_nortti_if_android", 12) 13 14exports_files(["LICENSE"]) 15 16LINKER_SCRIPT = "//tensorflow/contrib/android:jni/version_script.lds" 17 18# libtensorflow_demo.so contains the native code for image colorspace conversion 19# and object tracking used by the demo. It does not require TF as a dependency 20# to build if STANDALONE_DEMO_LIB is defined. 21# TF support for the demo is provided separately by libtensorflow_inference.so. 22cc_binary( 23 name = "libtensorflow_demo.so", 24 srcs = glob([ 25 "jni/**/*.cc", 26 "jni/**/*.h", 27 ]), 28 copts = tf_copts(), 29 defines = ["STANDALONE_DEMO_LIB"], 30 linkopts = [ 31 "-landroid", 32 "-ldl", 33 "-ljnigraphics", 34 "-llog", 35 "-lm", 36 "-z defs", 37 "-s", 38 "-Wl,--version-script", # This line must be directly followed by LINKER_SCRIPT. 39 LINKER_SCRIPT, 40 ], 41 linkshared = 1, 42 linkstatic = 1, 43 tags = [ 44 "manual", 45 "notap", 46 ], 47 deps = [ 48 LINKER_SCRIPT, 49 ], 50) 51 52cc_library( 53 name = "tensorflow_native_libs", 54 srcs = [ 55 ":libtensorflow_demo.so", 56 "//tensorflow/contrib/android:libtensorflow_inference.so", 57 ], 58 tags = [ 59 "manual", 60 "notap", 61 ], 62) 63 64android_binary( 65 name = "tensorflow_demo", 66 srcs = glob([ 67 "src/**/*.java", 68 ]), 69 # Package assets from assets dir as well as all model targets. Remove undesired models 70 # (and corresponding Activities in source) to reduce APK size. 71 assets = [ 72 "//tensorflow/examples/android/assets:asset_files", 73 ":external_assets", 74 ], 75 assets_dir = "", 76 custom_package = "org.tensorflow.demo", 77 inline_constants = 1, 78 manifest = "AndroidManifest.xml", 79 manifest_merger = "legacy", 80 resource_files = glob(["res/**"]), 81 tags = [ 82 "manual", 83 "notap", 84 ], 85 deps = [ 86 ":tensorflow_native_libs", 87 "//tensorflow/contrib/android:android_tensorflow_inference_java", 88 ], 89) 90 91# LINT.IfChange 92filegroup( 93 name = "external_assets", 94 srcs = [ 95 "@inception_v1//:model_files", 96 "@mobile_ssd//:model_files", 97 "@speech_commands//:model_files", 98 "@stylize//:model_files", 99 ], 100) 101# LINT.ThenChange(//tensorflow/examples/android/download-models.gradle) 102 103filegroup( 104 name = "all_files", 105 srcs = glob( 106 ["**/*"], 107 exclude = [ 108 "**/METADATA", 109 "**/OWNERS", 110 "bin/**", 111 "gen/**", 112 "gradleBuild/**", 113 "libs/**", 114 ], 115 ), 116 visibility = ["//tensorflow:__subpackages__"], 117) 118 119filegroup( 120 name = "java_files", 121 srcs = glob(["src/**/*.java"]), 122) 123 124filegroup( 125 name = "jni_files", 126 srcs = glob([ 127 "jni/**/*.cc", 128 "jni/**/*.h", 129 ]), 130) 131 132filegroup( 133 name = "resource_files", 134 srcs = glob(["res/**"]), 135) 136 137exports_files(["AndroidManifest.xml"]) 138