• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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