1/* 2 * Copyright 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package { 18 default_applicable_licenses: [ 19 "packages_modules_NeuralNetworks_runtime_license", 20 ], 21} 22 23// Added automatically by a large-scale-change that took the approach of 24// 'apply every license found to every target'. While this makes sure we respect 25// every license restriction, it may not be entirely correct. 26// 27// e.g. GPL in an MIT project might only apply to the contrib/ directory. 28// 29// Please consider splitting the single license below into multiple licenses, 30// taking care not to lose any license_kind information, and overriding the 31// default license using the 'licenses: [...]' property on targets as needed. 32// 33// For unused files, consider creating a 'fileGroup' with "//visibility:private" 34// to attach the license to, and including a comment whether the files may be 35// used in the current project. 36// See: http://go/android-license-faq 37license { 38 name: "packages_modules_NeuralNetworks_runtime_license", 39 package_name: "Android Neural Networks API Runtime", 40 visibility: [":__subpackages__"], 41 license_kinds: [ 42 "SPDX-license-identifier-Apache-2.0", 43 "SPDX-license-identifier-BSD", 44 "SPDX-license-identifier-MPL", 45 "SPDX-license-identifier-MPL-2.0", 46 ], 47 license_text: [ 48 "NOTICE", 49 ], 50} 51 52cc_library_headers { 53 name: "libneuralnetworks_headers", 54 host_supported: true, 55 vendor_available: true, 56 export_include_dirs: ["include"], 57 min_sdk_version: "30", 58 apex_available: [ 59 "com.android.neuralnetworks", 60 "test_com.android.neuralnetworks", // Due to the dependency from libneuralnetworks_common 61 // that is available to the platform 62 63 "//apex_available:platform", 64 ], 65} 66 67cc_library_headers { 68 name: "libneuralnetworks_headers_ndk", 69 host_supported: true, 70 export_include_dirs: ["include"], 71 sdk_version: "current", 72} 73 74cc_library_headers { 75 name: "libneuralnetworks_private_headers", 76 host_supported: true, 77 export_include_dirs: ["."], 78} 79 80cc_defaults { 81 name: "libneuralnetworks_defaults", 82 defaults: ["neuralnetworks_use_latest_utils_hal_aidl"], 83 host_supported: true, 84 use_version_lib: true, 85 // b/109953668, disable OpenMP 86 // openmp: true, 87 srcs: [ 88 "AppInfoFetcher.cpp", 89 "BurstBuilder.cpp", 90 "CompilationBuilder.cpp", 91 "ExecutionBuilder.cpp", 92 "ExecutionCallback.cpp", 93 "ExecutionPlan.cpp", 94 "Manager.cpp", 95 "Memory.cpp", 96 "ModelArchHasher.cpp", 97 "ModelArgumentInfo.cpp", 98 "ModelBuilder.cpp", 99 "NeuralNetworks.cpp", 100 "ServerFlag.cpp", 101 "Telemetry.cpp", 102 "TypeManager.cpp", 103 ], 104 target: { 105 android: { 106 version_script: "libneuralnetworks.map.txt", 107 generated_sources: ["statslog_neuralnetworks.cpp"], 108 generated_headers: ["statslog_neuralnetworks.h"], 109 srcs: [ 110 "TelemetryStatsd.cpp", 111 ], 112 shared_libs: [ 113 "libnativewindow", 114 "libstatssocket", 115 "libvndksupport", 116 ], 117 whole_static_libs: [ 118 "libprocpartition", 119 ], 120 }, 121 host: { 122 cflags: [ 123 "-D__INTRODUCED_IN(n)=", 124 ], 125 }, 126 }, 127 128 // TODO(pszczepaniak, b/144488395): Use system libnativewindow, 129 // this would remove half of dependencies here. 130 static_libs: [ 131 "android.hardware.neuralnetworks@1.0", 132 "android.hardware.neuralnetworks@1.1", 133 "android.hardware.neuralnetworks@1.2", 134 "android.hardware.neuralnetworks@1.3", 135 "android.hidl.allocator@1.0", 136 "android.hidl.memory@1.0", 137 "libaidlcommonsupport", 138 "libbase", 139 "libcrypto_static", 140 "libcutils", 141 "libfmq", 142 "libhidlbase", 143 "libhidlmemory", 144 "libjsoncpp", 145 "libmath", 146 "libneuralnetworks_common", 147 "libprocessgroup", 148 "libtextclassifier_hash_static", 149 "libutils", 150 "neuralnetworks_types", 151 "neuralnetworks_utils_hal_service", 152 "server_configurable_flags", 153 ], 154 155 stl: "libc++_static", 156 157 shared_libs: [ 158 "libbinder_ndk", 159 "libcgrouprc", 160 "liblog", 161 "libneuralnetworks_packageinfo", 162 ], 163 164 header_libs: [ 165 "libneuralnetworks_headers", 166 ], 167 168 export_header_lib_headers: [ 169 "libneuralnetworks_headers", 170 ], 171} 172 173cc_defaults { 174 name: "libneuralnetworks_v2_defaults", 175 defaults: ["libneuralnetworks_defaults"], 176 srcs: [ 177 "FlatbufferModelBuilder.cpp", 178 "NeuralNetworksV2.cpp", 179 "operation_converters/AddOperationConverter.cpp", 180 "operation_converters/ArithmeticOperationConverter.cpp", 181 "operation_converters/Conv2DOperationConverter.cpp", 182 "operation_converters/DepthwiseConv2DOperationConverter.cpp", 183 "operation_converters/LogisticOperationConverter.cpp", 184 "operation_converters/OperationConverterResolver.cpp", 185 "operation_converters/SubGraphContext.cpp", 186 ], 187 188 exclude_srcs: [ 189 "NeuralNetworks.cpp", 190 ], 191 192 static_libs: [ 193 "libtflite_static", 194 ], 195 196 include_dirs: [ 197 "external/flatbuffers/include", 198 "external/tensorflow", 199 ], 200} 201 202cc_library_shared { 203 name: "libneuralnetworks", 204 llndk: { 205 symbol_file: "libneuralnetworks.map.txt", 206 override_export_include_dirs: ["include"], 207 }, 208 defaults: [ 209 "libneuralnetworks_defaults", 210 "neuralnetworks_defaults", 211 ], 212 min_sdk_version: "30", 213 apex_available: [ 214 "com.android.neuralnetworks", 215 "test_com.android.neuralnetworks", 216 ], 217 stubs: { 218 versions: [ 219 "30", 220 "31", 221 ], 222 symbol_file: "libneuralnetworks.map.txt", 223 }, 224} 225 226// Required for tests (b/147158681) 227cc_library_static { 228 name: "libneuralnetworks_static", 229 defaults: [ 230 "libneuralnetworks_defaults", 231 "neuralnetworks_defaults", 232 ], 233 apex_available: ["//apex_available:platform"], 234} 235 236// Required for tests (b/147158681) 237cc_library_static { 238 name: "libneuralnetworks_static_experimental", 239 defaults: [ 240 "libneuralnetworks_defaults", 241 "neuralnetworks_defaults", 242 ], 243 exclude_static_libs: [ 244 "libneuralnetworks_common", 245 "neuralnetworks_types", 246 "server_configurable_flags", 247 ], 248 static_libs: [ 249 "libneuralnetworks_common_experimental", 250 "neuralnetworks_types_experimental", 251 ], 252 cflags: ["-DNN_EXPERIMENTAL_FEATURE"], 253 apex_available: ["//apex_available:platform"], 254} 255 256cc_library_static { 257 name: "libneuralnetworks_v2_static_experimental", 258 defaults: [ 259 "libneuralnetworks_v2_defaults", 260 "neuralnetworks_defaults", 261 ], 262 exclude_static_libs: [ 263 "libneuralnetworks_common", 264 "neuralnetworks_types", 265 "server_configurable_flags", 266 ], 267 static_libs: [ 268 "libneuralnetworks_common_experimental", 269 "neuralnetworks_types_experimental", 270 ], 271 cflags: ["-DNN_EXPERIMENTAL_FEATURE"], 272} 273 274cc_library_static { 275 name: "libneuralnetworks_cl", 276 defaults: [ 277 "neuralnetworks_cl_defaults", 278 "neuralnetworks_defaults", 279 ], 280 host_supported: false, 281 apex_available: ["//apex_available:platform"], 282 // b/109953668, disable OpenMP 283 // openmp: true, 284 srcs: [ 285 "BurstBuilder.cpp", 286 "CompilationBuilder.cpp", 287 "ExecutionBuilder.cpp", 288 "ExecutionCallback.cpp", 289 "ExecutionPlan.cpp", 290 "Manager.cpp", 291 "Memory.cpp", 292 "ModelArchHasher.cpp", 293 "ModelArgumentInfo.cpp", 294 "ModelBuilder.cpp", 295 "NeuralNetworks.cpp", 296 "ServerFlag.cpp", 297 "SupportLibraryDiagnostic.cpp", 298 "Telemetry.cpp", 299 "TypeManager.cpp", 300 ], 301 static_libs: [ 302 "libbase_ndk", 303 "libcrypto_static", 304 "libneuralnetworks_common_cl", 305 "neuralnetworks_types_cl", 306 ], 307 shared_libs: [ 308 "libnativewindow", 309 ], 310 header_libs: [ 311 "libneuralnetworks_headers_ndk", 312 "neuralnetworks_supportlibrary_types_ndk", 313 ], 314 export_header_lib_headers: [ 315 "libneuralnetworks_headers_ndk", 316 ], 317} 318 319ndk_headers { 320 name: "libneuralnetworks_ndk_headers", 321 from: "include", 322 to: "android", 323 srcs: [ 324 "include/NeuralNetworks.h", 325 "include/NeuralNetworksTypes.h", 326 ], 327 license: "NOTICE", 328} 329 330ndk_library { 331 name: "libneuralnetworks", 332 symbol_file: "libneuralnetworks.map.txt", 333 // Android O-MR1 334 first_version: "27", 335 export_header_libs: [ 336 "libneuralnetworks_ndk_headers", 337 ], 338} 339 340genrule { 341 name: "statslog_neuralnetworks.h", 342 tools: ["stats-log-api-gen"], 343 cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_neuralnetworks.h --module neuralnetworks --namespace android,nn,stats", 344 out: [ 345 "statslog_neuralnetworks.h", 346 ], 347} 348 349genrule { 350 name: "statslog_neuralnetworks.cpp", 351 tools: ["stats-log-api-gen"], 352 cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_neuralnetworks.cpp --module neuralnetworks --namespace android,nn,stats --importHeader statslog_neuralnetworks.h", 353 out: [ 354 "statslog_neuralnetworks.cpp", 355 ], 356} 357