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 // See: http://go/android-license-faq 19 // A large-scale-change added 'default_applicable_licenses' to import 20 // all of the 'license_kinds' from "packages_modules_NeuralNetworks_runtime_license" 21 // to get the below license kinds: 22 // SPDX-license-identifier-Apache-2.0 23 // SPDX-license-identifier-Artistic 24 default_applicable_licenses: [ 25 "packages_modules_NeuralNetworks_runtime_license", 26 ], 27} 28 29cc_defaults { 30 name: "NeuralNetworksTest_default_libs", 31 defaults: ["neuralnetworks_defaults"], 32 host_supported: false, 33 // b/109953668, disable OpenMP 34 // openmp: true, 35 shared_libs: [ 36 "android.hidl.allocator@1.0", 37 "android.hidl.memory@1.0", 38 "libandroid", 39 "libbase", 40 "libbinder_ndk", 41 "libcutils", 42 "libfmq", 43 "libhidlbase", 44 "libhidlmemory", 45 "liblog", 46 "libnativewindow", 47 "libneuralnetworks_packageinfo", 48 "libutils", 49 ], 50 static_libs: [ 51 "android.hardware.common-V2-ndk_platform", 52 "android.hardware.graphics.common-V2-ndk_platform", 53 "android.hardware.neuralnetworks-V1-ndk_platform", 54 "android.hardware.neuralnetworks@1.0", 55 "android.hardware.neuralnetworks@1.1", 56 "android.hardware.neuralnetworks@1.2", 57 "android.hardware.neuralnetworks@1.3", 58 "libaidlcommonsupport", 59 "libc++fs", 60 "libneuralnetworks_generated_test_harness", 61 "libtextclassifier_hash_static", 62 ], 63 whole_static_libs: [ 64 "libcrypto_static", 65 ], 66 srcs: [ 67 "RequireDebug.cpp", // Abort compilation if NDEBUG is defined 68 ], 69 cflags: [ 70 "-UNDEBUG", 71 ], 72} 73 74cc_defaults { 75 name: "NeuralNetworksTest_defaults", 76 defaults: ["NeuralNetworksTest_default_libs"], 77 srcs: [ 78 // Subset of tests that rely only on public functionality. 79 // 80 // Changes to this list must be reflected in the "CtsNNAPITests_static" 81 // library to ensure CTS tests coverage. 82 "GeneratedTestUtils.cpp", 83 "TestAssertions.cpp", 84 "TestControlFlow.cpp", 85 "TestFree.cpp", 86 "TestGenerated.cpp", 87 "TestGpuNnapi.cpp", 88 "TestMemory.cpp", 89 "TestNeuralNetworksWrapper.cpp", 90 "TestOperandExtraParams.cpp", 91 "TestTrivialModel.cpp", 92 "TestUnknownDimensions.cpp", 93 "TestUnspecifiedDimensions.cpp", 94 "TestUpdatability.cpp", 95 "TestValidateModel.cpp", 96 "TestValidateOperations.cpp", 97 "TestValidation.cpp", 98 "TestWrapper.cpp", 99 100 ], 101 header_libs: [ 102 "libneuralnetworks_common_headers", 103 ], 104 static_libs: [ 105 "libgmock", 106 ], 107 shared_libs: [ 108 "libvulkan", 109 ], 110 whole_static_libs: [ 111 "neuralnetworks_generated_V1_0_example", 112 "neuralnetworks_generated_V1_1_example", 113 "neuralnetworks_generated_V1_2_example", 114 "neuralnetworks_generated_V1_3_cts_only_example", 115 "neuralnetworks_generated_V1_3_example", 116 ], 117} 118 119cc_test { 120 name: "NeuralNetworksTest_shared_partial", 121 defaults: ["NeuralNetworksTest_defaults"], 122 srcs: [ 123 "TestMain.cpp", 124 ], 125 cflags: [ 126 "-DNNTEST_ONLY_PUBLIC_API", 127 ], 128 shared_libs: [ 129 "libneuralnetworks", 130 ], 131} 132 133cc_defaults { 134 name: "NeuralNetworksTest_static_defaults", 135 defaults: ["NeuralNetworksTest_defaults"], 136 srcs: [ 137 // Tests that rely on non-public functionality (i.e., symbols 138 // not exported from libneuralnetworks.so). 139 // 140 // b/109953668, disable OpenMP 141 // "TestOpenmpSettings.cpp", 142 "PreparedModelCallback.cpp", 143 "TestCompilationCaching.cpp", 144 "TestCompliance.cpp", 145 "TestExecution.cpp", 146 "TestExtensions.cpp", 147 "TestFailingDriver.cpp", 148 "TestIntrospectionControl.cpp", 149 "TestMemoryDomain.cpp", 150 "TestMemoryInternal.cpp", 151 "TestPartitioning.cpp", 152 "TestPartitioningRandom.cpp", 153 "TestRemoveDefaultArguments.cpp", 154 "fibonacci_extension/FibonacciDriver.cpp", 155 "fibonacci_extension/FibonacciExtensionTest.cpp", 156 157 "TestMain.cpp", 158 ], 159 static_libs: [ 160 "android.hardware.neuralnetworks@1.0-adapter-helper", 161 "android.hardware.neuralnetworks@1.1-adapter-helper", 162 "android.hardware.neuralnetworks@1.2-adapter-helper", 163 "android.hardware.neuralnetworks@1.3-adapter-helper", 164 "libSampleDriver", 165 "libgmock", 166 "libhidladapter", 167 "libneuralnetworks_common", 168 "libneuralnetworks_generated_test_harness", 169 "libneuralnetworks_static", 170 "neuralnetworks_test_utils", 171 ], 172 shared_libs: [ 173 "libcutils", 174 ], 175 header_libs: [ 176 "libneuralnetworks_private_headers", 177 "libutils_headers", 178 "neuralnetworks_example_fibonacci_extension", 179 ], 180} 181 182cc_test { 183 name: "NeuralNetworksTest_static", 184 defaults: ["NeuralNetworksTest_static_defaults"], 185 test_suites: [ 186 "general-tests", 187 ], 188} 189 190cc_test { 191 name: "NeuralNetworksTest_static_fuzzing", 192 defaults: ["NeuralNetworksTest_default_libs"], 193 srcs: [ 194 "GeneratedTestUtils.cpp", 195 "TestNeuralNetworksWrapper.cpp", 196 "fuzzing/OperationManager.cpp", 197 "fuzzing/RandomGraphGenerator.cpp", 198 "fuzzing/RandomGraphGeneratorUtils.cpp", 199 "fuzzing/RandomVariable.cpp", 200 "fuzzing/TestRandomGraph.cpp", 201 "fuzzing/operation_signatures/*.cpp", 202 ], 203 static_libs: [ 204 "libSampleDriver", 205 "libgmock", 206 "libneuralnetworks_common", 207 "libneuralnetworks_static", 208 "neuralnetworks_types", 209 "neuralnetworks_utils_hal_1_0", 210 "neuralnetworks_utils_hal_1_1", 211 "neuralnetworks_utils_hal_1_2", 212 "neuralnetworks_utils_hal_1_3", 213 ], 214 shared_libs: ["libmemunreachable"], 215 header_libs: [ 216 "libneuralnetworks_private_headers", 217 ], 218 sanitize: { 219 integer_overflow: true, 220 }, 221} 222 223cc_fuzz { 224 name: "libneuralnetworks_fuzzer", 225 defaults: [ 226 "NeuralNetworksTest_default_libs", 227 "libneuralnetworks_fuzzer_defaults", 228 ], 229 owner: "google", 230 fuzz_config: { 231 cc: ["butlermichael@google.com"], 232 // Temporarily disabled due to b/151102177. 233 fuzz_on_haiku_host: false, 234 fuzz_on_haiku_device: false, 235 }, 236 srcs: [ 237 "android_fuzzing/FuzzTest.cpp", 238 ], 239 static_libs: [ 240 "libneuralnetworks_common", 241 "libneuralnetworks_generated_test_harness", 242 "libneuralnetworks_static", 243 ], 244} 245 246cc_fuzz { 247 name: "libneuralnetworks_driver_fuzzer", 248 defaults: [ 249 "NeuralNetworksTest_default_libs", 250 "libneuralnetworks_fuzzer_defaults", 251 ], 252 owner: "google", 253 fuzz_config: { 254 cc: ["butlermichael@google.com"], 255 // Temporarily disabled due to b/151102177. 256 fuzz_on_haiku_host: false, 257 fuzz_on_haiku_device: false, 258 }, 259 srcs: [ 260 "android_fuzzing/DriverFuzzTest.cpp", 261 ], 262 static_libs: [ 263 "libSampleDriver", 264 "libneuralnetworks_common", 265 "libneuralnetworks_generated_test_harness", 266 "libneuralnetworks_static", 267 ], 268} 269 270// Temporarily disabled due to b/139889855. 271cc_test { 272 name: "NeuralNetworksTest_static_asan", 273 defaults: ["NeuralNetworksTest_static_defaults"], 274 enabled: false, 275 sanitize: { 276 address: true, 277 }, 278 // Declare explicit library dependency for continuous builds 279 target: { 280 android_arm: { 281 required: [ 282 "libclang_rt.asan-arm-android", 283 ], 284 }, 285 android_arm64: { 286 required: [ 287 "libclang_rt.asan-aarch64-android", 288 ], 289 }, 290 android_x86: { 291 required: [ 292 "libclang_rt.asan-i686-android", 293 ], 294 }, 295 android_x86_64: { 296 required: [ 297 "libclang_rt.asan-x86_64-android", 298 ], 299 }, 300 }, 301} 302 303// Temporarily disabled due to b/139889855. 304cc_test { 305 name: "NeuralNetworksTest_static_ubsan", 306 defaults: ["NeuralNetworksTest_static_defaults"], 307 enabled: false, 308 sanitize: { 309 undefined: true, 310 all_undefined: true, 311 diag: { 312 undefined: true, 313 }, 314 }, 315} 316 317cc_defaults { 318 name: "NeuralNetworksTest_mt_defaults", 319 defaults: ["NeuralNetworksTest_default_libs"], 320 srcs: [ 321 "GeneratedTestUtils.cpp", 322 "TestGenerated.cpp", 323 "TestMain.cpp", 324 "TestNeuralNetworksWrapper.cpp", 325 ], 326 cflags: [ 327 "-DNNTEST_MULTITHREADED", 328 ], 329 static_libs: [ 330 "libSampleDriver", 331 "libgmock", 332 "libneuralnetworks_common", 333 "libneuralnetworks_static", 334 ], 335 whole_static_libs: [ 336 "neuralnetworks_generated_V1_0_example", 337 "neuralnetworks_generated_V1_1_example", 338 "neuralnetworks_generated_V1_2_example", 339 "neuralnetworks_generated_V1_3_cts_only_example", 340 "neuralnetworks_generated_V1_3_example", 341 ], 342 shared_libs: [ 343 "libcutils", 344 ], 345 header_libs: [ 346 "libneuralnetworks_private_headers", 347 ], 348} 349 350cc_test { 351 name: "NeuralNetworksTest_mt_static", 352 defaults: ["NeuralNetworksTest_mt_defaults"], 353} 354 355// Temporarily disabled due to b/139889855. 356cc_test { 357 // Note: tsan not supported on Android (yet) 358 name: "NeuralNetworksTest_mt_static_asan", 359 defaults: ["NeuralNetworksTest_mt_defaults"], 360 enabled: false, 361 sanitize: { 362 address: true, 363 }, 364} 365 366cc_library_static { 367 name: "CtsNNAPITests_static", 368 defaults: ["neuralnetworks_float16"], 369 srcs: [ 370 ":libneuralnetworks_generated_test_harness_for_cts", 371 "CtsMain.cpp", 372 "GeneratedTestUtils.cpp", 373 "RequireDebug.cpp", // Abort compilation if NDEBUG is defined 374 "TestControlFlow.cpp", 375 "TestFree.cpp", 376 "TestGenerated.cpp", 377 "TestGpuNnapi.cpp", 378 "TestMemory.cpp", 379 "TestNeuralNetworksWrapper.cpp", 380 "TestTrivialModel.cpp", 381 "TestUnknownDimensions.cpp", 382 "TestUpdatability.cpp", 383 "TestValidateModel.cpp", 384 "TestValidateOperations.cpp", 385 "TestValidation.cpp", 386 "TestWrapper.cpp", 387 "fuzzing/OperationManager.cpp", 388 "fuzzing/RandomGraphGenerator.cpp", 389 "fuzzing/RandomGraphGeneratorUtils.cpp", 390 "fuzzing/RandomVariable.cpp", 391 "fuzzing/TestRandomGraph.cpp", 392 "fuzzing/operation_signatures/*.cpp", 393 "generated/spec_V1_*/*.example.cpp", 394 ], 395 include_dirs: [ 396 "packages/modules/NeuralNetworks/common/include", 397 "packages/modules/NeuralNetworks/runtime/", 398 "packages/modules/NeuralNetworks/runtime/include/", 399 "packages/modules/NeuralNetworks/tools/test_generator/test_harness/include", 400 ], 401 cflags: [ 402 "-DNNTEST_CTS", 403 "-DNNTEST_ONLY_PUBLIC_API", 404 "-UNDEBUG", 405 "-Wall", 406 "-Werror", 407 ], 408 shared_libs: [ 409 "libandroid", 410 "liblog", 411 "libneuralnetworks", 412 "libvulkan", 413 ], 414 static_libs: [ 415 "libbase_ndk", 416 "libgmock_ndk", 417 "libgtest_ndk_c++", 418 ], 419 min_sdk_version: "30", 420 sdk_version: "current", 421 stl: "libc++_static", 422} 423 424cc_defaults { 425 name: "neuralnetworks_generated_defaults", 426 defaults: ["neuralnetworks_float16"], 427 // b/146324523, NNAPI host build capability 428 host_supported: false, 429 vendor_available: true, 430 static_libs: ["libneuralnetworks_generated_test_harness"], 431} 432 433cc_library_static { 434 name: "neuralnetworks_generated_V1_0_example", 435 defaults: ["neuralnetworks_generated_defaults"], 436 srcs: ["generated/spec_V1_0/*.example.cpp"], 437} 438 439cc_library_static { 440 name: "neuralnetworks_generated_V1_1_example", 441 defaults: ["neuralnetworks_generated_defaults"], 442 srcs: ["generated/spec_V1_1/*.example.cpp"], 443} 444 445cc_library_static { 446 name: "neuralnetworks_generated_V1_2_example", 447 defaults: ["neuralnetworks_generated_defaults"], 448 srcs: ["generated/spec_V1_2/*.example.cpp"], 449} 450 451cc_library_static { 452 name: "neuralnetworks_generated_V1_3_example", 453 defaults: ["neuralnetworks_generated_defaults"], 454 srcs: ["generated/spec_V1_3/*.example.cpp"], 455} 456 457cc_library_static { 458 name: "neuralnetworks_generated_V1_3_cts_only_example", 459 defaults: ["neuralnetworks_float16"], 460 srcs: ["generated/spec_V1_3_cts_only/*.example.cpp"], 461 static_libs: ["libneuralnetworks_generated_test_harness"], 462} 463 464cc_library_static { 465 name: "NeuralNetworksTest_random_graph", 466 defaults: ["neuralnetworks_float16"], 467 srcs: [ 468 ":libneuralnetworks_generated_test_harness_for_cts", 469 "GeneratedTestUtils.cpp", 470 "TestNeuralNetworksWrapper.cpp", 471 "fuzzing/OperationManager.cpp", 472 "fuzzing/RandomGraphGenerator.cpp", 473 "fuzzing/RandomGraphGeneratorUtils.cpp", 474 "fuzzing/RandomVariable.cpp", 475 "fuzzing/operation_signatures/*.cpp", 476 ], 477 include_dirs: [ 478 "packages/modules/NeuralNetworks/common/include", 479 "packages/modules/NeuralNetworks/runtime/", 480 "packages/modules/NeuralNetworks/runtime/include/", 481 ], 482 header_libs: [ 483 "libneuralnetworks_generated_test_harness_headers_for_cts", 484 ], 485 export_include_dirs: [ 486 ".", 487 "fuzzing", 488 ], 489 cflags: [ 490 "-UNDEBUG", 491 "-Wall", 492 "-Werror", 493 ], 494 shared_libs: [ 495 "libandroid", 496 "liblog", 497 "libneuralnetworks", 498 ], 499 static_libs: [ 500 "libbase_ndk", 501 "libgmock_ndk", 502 "libgtest_ndk_c++", 503 ], 504 sanitize: { 505 address: true, 506 all_undefined: true, 507 }, 508 strip: { 509 keep_symbols: true, 510 }, 511 sdk_version: "current", 512 stl: "libc++_static", 513} 514 515cc_test { 516 name: "NeuralNetworksSupportLibraryTest", 517 srcs: [ 518 "GeneratedTestUtils.cpp", 519 "SupportLibraryTestGenerated.cpp", 520 "SupportLibraryTestMain.cpp", 521 ], 522 cflags: [ 523 "-DNNTEST_COMPUTE_MODE", 524 "-DNNTEST_ONLY_PUBLIC_API", 525 "-DNNTEST_SLTS", 526 "-DNN_COMPATIBILITY_LIBRARY_BUILD", 527 "-Wall", 528 "-Werror", 529 ], 530 shared_libs: [ 531 "libandroid", 532 "liblog", 533 ], 534 static_libs: [ 535 "libbase_ndk", 536 "libgmock_ndk", 537 "libgtest_ndk_c++", 538 "libneuralnetworks_generated_test_harness", 539 "neuralnetworks_supportlibrary_loader", 540 ], 541 whole_static_libs: [ 542 "neuralnetworks_generated_V1_0_example", 543 "neuralnetworks_generated_V1_1_example", 544 "neuralnetworks_generated_V1_2_example", 545 "neuralnetworks_generated_V1_3_cts_only_example", 546 "neuralnetworks_generated_V1_3_example", 547 ], 548 include_dirs: [ 549 "packages/modules/NeuralNetworks/runtime/include/", 550 "packages/modules/NeuralNetworks/tools/test_generator/test_harness/include", 551 ], 552 test_suites: ["general-tests"], 553} 554