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 // Inherits all licenses from parent to get Apache 2.0 and package name. 20 default_applicable_licenses: [ 21 "packages_modules_NeuralNetworks_runtime_license", 22 ], 23} 24 25cc_defaults { 26 name: "NeuralNetworksTest_default_libs", 27 defaults: [ 28 "neuralnetworks_defaults", 29 "neuralnetworks_use_latest_utils_hal_aidl", 30 ], 31 host_supported: true, 32 // b/109953668, disable OpenMP 33 // openmp: true, 34 shared_libs: [ 35 "[email protected]", 36 "[email protected]", 37 "libbase", 38 "libbinder_ndk", 39 "libcutils", 40 "libfmq", 41 "libhidlbase", 42 "libhidlmemory", 43 "liblog", 44 "libneuralnetworks_packageinfo", 45 "libutils", 46 ], 47 static_libs: [ 48 "[email protected]", 49 "[email protected]", 50 "[email protected]", 51 "[email protected]", 52 "libaidlcommonsupport", 53 "libneuralnetworks_generated_test_harness", 54 "libtextclassifier_hash_static", 55 "neuralnetworks_utils_hal_service", 56 "server_configurable_flags", 57 ], 58 whole_static_libs: [ 59 "libcrypto_static", 60 ], 61 target: { 62 android: { 63 shared_libs: [ 64 "libandroid", 65 "libnativewindow", 66 "libstatssocket", 67 ], 68 }, 69 host: { 70 cflags: [ 71 "-D__ANDROID_API_FUTURE__=10000", 72 "-D__ANDROID_API_Q__=29", 73 "-D__ANDROID_API_R__=30", 74 "-D__ANDROID_API_S__=31", 75 "-D__INTRODUCED_IN(n)=", 76 ], 77 }, 78 }, 79 srcs: [ 80 "RequireDebug.cpp", // Abort compilation if NDEBUG is defined 81 ], 82 cflags: [ 83 "-UNDEBUG", 84 ], 85} 86 87cc_defaults { 88 name: "NeuralNetworksTest_defaults", 89 defaults: ["NeuralNetworksTest_default_libs"], 90 srcs: [ 91 // Subset of tests that rely only on public functionality. 92 // 93 // Changes to this list must be reflected in the "CtsNNAPITests_static" 94 // library to ensure CTS tests coverage. 95 "GeneratedTestUtils.cpp", 96 "TestAssertions.cpp", 97 "TestControlFlow.cpp", 98 "TestFree.cpp", 99 "TestGenerated.cpp", 100 "TestMemory.cpp", 101 "TestNeuralNetworksWrapper.cpp", 102 "TestOperandExtraParams.cpp", 103 "TestTrivialModel.cpp", 104 "TestUnknownDimensions.cpp", 105 "TestUnspecifiedDimensions.cpp", 106 "TestUpdatability.cpp", 107 "TestValidateModel.cpp", 108 "TestValidateOperations.cpp", 109 "TestValidation.cpp", 110 "TestWrapper.cpp", 111 ], 112 tidy_disabled_srcs: [ 113 "TestValidateModel.cpp", // includes large generated code 114 ], 115 header_libs: [ 116 "libneuralnetworks_common_headers", 117 "neuralnetworks_types_headers", 118 ], 119 static_libs: [ 120 "libgmock", 121 ], 122 whole_static_libs: [ 123 "neuralnetworks_generated_AIDL_V2_example", 124 "neuralnetworks_generated_AIDL_V3_example", 125 "neuralnetworks_generated_V1_0_example", 126 "neuralnetworks_generated_V1_1_example", 127 "neuralnetworks_generated_V1_2_example", 128 "neuralnetworks_generated_V1_3_cts_only_example", 129 "neuralnetworks_generated_V1_3_example", 130 ], 131 target: { 132 android: { 133 shared_libs: [ 134 "libvulkan", 135 ], 136 srcs: [ 137 "TestGpuNnapi.cpp", 138 ], 139 }, 140 }, 141} 142 143cc_test { 144 name: "NeuralNetworksTest_shared_partial", 145 host_supported: false, 146 defaults: ["NeuralNetworksTest_defaults"], 147 srcs: [ 148 "TestMain.cpp", 149 ], 150 cflags: [ 151 "-DNNTEST_ONLY_PUBLIC_API", 152 ], 153 shared_libs: [ 154 "libneuralnetworks", 155 ], 156} 157 158cc_defaults { 159 name: "NeuralNetworksTest_static_defaults", 160 defaults: ["NeuralNetworksTest_defaults"], 161 srcs: [ 162 // Tests that rely on non-public functionality (i.e., symbols 163 // not exported from libneuralnetworks.so). 164 // 165 // b/109953668, disable OpenMP 166 // "TestOpenmpSettings.cpp", 167 "PreparedModelCallback.cpp", 168 "TestCompilationCaching.cpp", 169 "TestCompliance.cpp", 170 "TestExecution.cpp", 171 "TestExtensions.cpp", 172 "TestFailingDriver.cpp", 173 "TestIntrospectionControl.cpp", 174 "TestMain.cpp", 175 "TestMemoryDomain.cpp", 176 "TestMemoryInternal.cpp", 177 "TestPartitioning.cpp", 178 "TestPartitioningRandom.cpp", 179 "TestRemoveDefaultArguments.cpp", 180 "TestServerFlag.cpp", 181 "TestTelemetry.cpp", 182 "fibonacci_extension/FibonacciDriver.cpp", 183 "fibonacci_extension/FibonacciExtensionTest.cpp", 184 ], 185 static_libs: [ 186 "libSampleDriver", 187 "libgmock", 188 "libneuralnetworks_common", 189 "libneuralnetworks_generated_test_harness", 190 "libneuralnetworks_static", 191 "neuralnetworks_test_utils", 192 ], 193 shared_libs: [ 194 "libcutils", 195 ], 196 header_libs: [ 197 "libneuralnetworks_private_headers", 198 "libutils_headers", 199 "neuralnetworks_example_fibonacci_extension", 200 ], 201} 202 203cc_defaults { 204 name: "NeuralNetworksTest_v2_static_defaults", 205 defaults: ["NeuralNetworksTest_static_defaults"], 206 srcs: [ 207 "TestCompatibilityLayer.cpp", 208 ], 209 exclude_srcs: [ 210 "PreparedModelCallback.cpp", 211 "TestCompilationCaching.cpp", 212 "TestCompliance.cpp", 213 "TestControlFlow.cpp", 214 "TestExecution.cpp", 215 "TestExtensions.cpp", 216 "TestFailingDriver.cpp", 217 "TestFree.cpp", 218 "TestGenerated.cpp", 219 "TestIntrospectionControl.cpp", 220 "TestMemory.cpp", 221 "TestMemoryDomain.cpp", 222 "TestMemoryInternal.cpp", 223 "TestOperandExtraParams.cpp", 224 "TestPartitioning.cpp", 225 "TestPartitioningRandom.cpp", 226 "TestRemoveDefaultArguments.cpp", 227 "TestServerFlag.cpp", 228 "TestTelemetry.cpp", 229 "TestTrivialModel.cpp", 230 "TestUnknownDimensions.cpp", 231 "TestUnspecifiedDimensions.cpp", 232 "TestUpdatability.cpp", 233 "TestValidateModel.cpp", 234 "TestValidateOperations.cpp", 235 "TestValidation.cpp", 236 "fibonacci_extension/FibonacciDriver.cpp", 237 "fibonacci_extension/FibonacciExtensionTest.cpp", 238 ], 239 240 include_dirs: [ 241 "external/flatbuffers/include", 242 "external/tensorflow", 243 ], 244 245 static_libs: [ 246 "libflatbuffers-cpp", 247 "libneuralnetworks_v2_static_experimental", 248 "libtflite_static", 249 ], 250 exclude_static_libs: [ 251 "libneuralnetworks_static", 252 ], 253} 254 255cc_test { 256 name: "NeuralNetworksTest_static", 257 defaults: ["NeuralNetworksTest_static_defaults"], 258 test_suites: [ 259 "general-tests", 260 ], 261 target: { 262 android: { 263 test_config: "AndroidTest_NeuralNetworksTest_static.xml", 264 srcs: ["TestStatsdTelemetry.cpp"], 265 }, 266 host: { 267 cflags: [ 268 "-D__ANDROID_API__=10000", 269 ], 270 }, 271 }, 272 whole_static_libs: [ 273 "neuralnetworks_generated_experimental_example", 274 ], 275 exclude_static_libs: [ 276 "libneuralnetworks_common", 277 "libneuralnetworks_static", 278 "neuralnetworks_types", 279 "server_configurable_flags", 280 ], 281 static_libs: [ 282 "libneuralnetworks_common_experimental", 283 "libneuralnetworks_static_experimental", 284 "neuralnetworks_types_experimental", 285 ], 286 cflags: ["-DNN_EXPERIMENTAL_FEATURE"], 287 test_options: { 288 unit_test: false, 289 }, 290} 291 292cc_test { 293 name: "NeuralNetworksTest_v2_static", 294 defaults: ["NeuralNetworksTest_v2_static_defaults"], 295 test_suites: [ 296 "general-tests", 297 ], 298 target: { 299 android: { 300 test_config: "AndroidTest_NeuralNetworksTest_v2_static.xml", 301 srcs: ["TestStatsdTelemetry.cpp"], 302 }, 303 host: { 304 cflags: [ 305 "-D__ANDROID_API__=10000", 306 ], 307 }, 308 }, 309 whole_static_libs: [ 310 "neuralnetworks_generated_experimental_example", 311 ], 312 exclude_static_libs: [ 313 "libneuralnetworks_common", 314 "neuralnetworks_types", 315 "server_configurable_flags", 316 ], 317 static_libs: [ 318 "libneuralnetworks_common_experimental", 319 "neuralnetworks_types_experimental", 320 ], 321 cflags: ["-DNN_EXPERIMENTAL_FEATURE"], 322 test_options: { 323 unit_test: false, 324 }, 325} 326 327tidy_disabled_operation_signatures_files = [ 328 // These took too much time with clang-tidy. 329 "fuzzing/operation_signatures/Convolutions.cpp", 330 "fuzzing/operation_signatures/Poolings.cpp", 331 "fuzzing/operation_signatures/Reshape.cpp", 332 "fuzzing/operation_signatures/Resize.cpp", 333] 334 335cc_test { 336 name: "NeuralNetworksTest_static_fuzzing", 337 defaults: ["NeuralNetworksTest_default_libs"], 338 srcs: [ 339 "GeneratedTestUtils.cpp", 340 "TestNeuralNetworksWrapper.cpp", 341 "fuzzing/OperationManager.cpp", 342 "fuzzing/RandomGraphGenerator.cpp", 343 "fuzzing/RandomGraphGeneratorUtils.cpp", 344 "fuzzing/RandomVariable.cpp", 345 "fuzzing/TestRandomGraph.cpp", 346 "fuzzing/operation_signatures/*.cpp", 347 ], 348 tidy_disabled_srcs: tidy_disabled_operation_signatures_files, 349 static_libs: [ 350 "libSampleDriver", 351 "libgmock", 352 "libneuralnetworks_common", 353 "libneuralnetworks_static", 354 "neuralnetworks_types", 355 "neuralnetworks_utils_hal_1_0", 356 "neuralnetworks_utils_hal_1_1", 357 "neuralnetworks_utils_hal_1_2", 358 "neuralnetworks_utils_hal_1_3", 359 ], 360 target: { 361 android: { 362 shared_libs: [ 363 "libmemunreachable", 364 ], 365 }, 366 }, 367 header_libs: [ 368 "libneuralnetworks_private_headers", 369 ], 370 sanitize: { 371 integer_overflow: true, 372 }, 373 test_options: { 374 unit_test: false, 375 }, 376} 377 378cc_fuzz { 379 name: "libneuralnetworks_fuzzer", 380 defaults: [ 381 "NeuralNetworksTest_default_libs", 382 "libneuralnetworks_fuzzer_defaults", 383 ], 384 owner: "google", 385 fuzz_config: { 386 cc: ["[email protected]"], 387 }, 388 srcs: [ 389 "android_fuzzing/FuzzTest.cpp", 390 ], 391 static_libs: [ 392 "libneuralnetworks_common", 393 "libneuralnetworks_generated_test_harness", 394 "libneuralnetworks_static", 395 ], 396} 397 398cc_fuzz { 399 name: "libneuralnetworks_driver_fuzzer", 400 defaults: [ 401 "NeuralNetworksTest_default_libs", 402 "libneuralnetworks_fuzzer_defaults", 403 ], 404 owner: "google", 405 fuzz_config: { 406 cc: ["[email protected]"], 407 }, 408 srcs: [ 409 "android_fuzzing/DriverFuzzTest.cpp", 410 ], 411 header_libs: [ 412 "libneuralnetworks_headers", 413 ], 414 static_libs: [ 415 "libneuralnetworks_common", 416 "libneuralnetworks_generated_test_harness", 417 "neuralnetworks_canonical_sample_driver", 418 "neuralnetworks_test_utils", 419 "neuralnetworks_types", 420 ], 421} 422 423// Temporarily disabled due to b/139889855. 424cc_test { 425 name: "NeuralNetworksTest_static_ubsan", 426 host_supported: false, 427 defaults: ["NeuralNetworksTest_static_defaults"], 428 enabled: false, 429 sanitize: { 430 undefined: true, 431 all_undefined: true, 432 diag: { 433 undefined: true, 434 }, 435 }, 436} 437 438cc_defaults { 439 name: "NeuralNetworksTest_mt_defaults", 440 defaults: ["NeuralNetworksTest_default_libs"], 441 host_supported: false, 442 srcs: [ 443 "GeneratedTestUtils.cpp", 444 "TestGenerated.cpp", 445 "TestMain.cpp", 446 "TestNeuralNetworksWrapper.cpp", 447 ], 448 cflags: [ 449 "-DNNTEST_MULTITHREADED", 450 ], 451 static_libs: [ 452 "libSampleDriver", 453 "libgmock", 454 "libneuralnetworks_common", 455 "libneuralnetworks_static", 456 ], 457 whole_static_libs: [ 458 "neuralnetworks_generated_AIDL_V2_example", 459 "neuralnetworks_generated_AIDL_V3_example", 460 "neuralnetworks_generated_V1_0_example", 461 "neuralnetworks_generated_V1_1_example", 462 "neuralnetworks_generated_V1_2_example", 463 "neuralnetworks_generated_V1_3_cts_only_example", 464 "neuralnetworks_generated_V1_3_example", 465 ], 466 shared_libs: [ 467 "libcutils", 468 ], 469 header_libs: [ 470 "libneuralnetworks_private_headers", 471 ], 472} 473 474cc_test { 475 name: "NeuralNetworksTest_mt_static", 476 defaults: ["NeuralNetworksTest_mt_defaults"], 477} 478 479cc_library_static { 480 name: "CtsNNAPITests_static", 481 host_supported: true, 482 srcs: [ 483 ":libneuralnetworks_generated_test_harness_for_cts", 484 "CtsMain.cpp", 485 "GeneratedTestUtils.cpp", 486 "RequireDebug.cpp", // Abort compilation if NDEBUG is defined 487 "TestControlFlow.cpp", 488 "TestFree.cpp", 489 "TestGenerated.cpp", 490 "TestMemory.cpp", 491 "TestNeuralNetworksWrapper.cpp", 492 "TestTrivialModel.cpp", 493 "TestUnknownDimensions.cpp", 494 "TestUpdatability.cpp", 495 "TestValidateModel.cpp", 496 "TestValidateOperations.cpp", 497 "TestValidation.cpp", 498 "TestWrapper.cpp", 499 "fuzzing/OperationManager.cpp", 500 "fuzzing/RandomGraphGenerator.cpp", 501 "fuzzing/RandomGraphGeneratorUtils.cpp", 502 "fuzzing/RandomVariable.cpp", 503 "fuzzing/TestRandomGraph.cpp", 504 "fuzzing/operation_signatures/*.cpp", 505 "generated/spec_AIDL_V*/*.example.cpp", 506 "generated/spec_V1_*/*.example.cpp", 507 ], 508 // generated code are too big to run with clang-tidy 509 tidy_disabled_srcs: [ 510 "TestValidateModel.cpp", // includes large generated code 511 "generated/spec_AIDL_V*/*.example.cpp", 512 "generated/spec_V1_*/*.example.cpp", 513 ] + tidy_disabled_operation_signatures_files, 514 include_dirs: [ 515 "packages/modules/NeuralNetworks/common/include", 516 "packages/modules/NeuralNetworks/common/types/include", 517 "packages/modules/NeuralNetworks/runtime/", 518 "packages/modules/NeuralNetworks/runtime/include/", 519 "packages/modules/NeuralNetworks/tools/test_generator/test_harness/include", 520 ], 521 cflags: [ 522 "-DNNTEST_CTS", 523 "-DNNTEST_ONLY_PUBLIC_API", 524 "-UNDEBUG", 525 "-Wall", 526 "-Werror", 527 ], 528 shared_libs: [ 529 "liblog", 530 "libneuralnetworks", 531 ], 532 target: { 533 android: { 534 static_libs: [ 535 "libbase_ndk", 536 "libgmock_ndk", 537 "libgtest_ndk_c++", 538 ], 539 shared_libs: [ 540 "libandroid", 541 "libvulkan", 542 ], 543 srcs: [ 544 "TestGpuNnapi.cpp", 545 ], 546 }, 547 host: { 548 static_libs: [ 549 "libbase", 550 "libgmock", 551 "libgtest", 552 ], 553 cflags: [ 554 "-D__ANDROID_API_FUTURE__=10000", 555 "-D__ANDROID_API_Q__=29", 556 "-D__ANDROID_API_R__=30", 557 "-D__ANDROID_API_S__=31", 558 "-D__ANDROID_API__=10000", 559 "-D__INTRODUCED_IN(n)=", 560 ], 561 }, 562 }, 563 min_sdk_version: "30", 564 sdk_version: "current", 565 stl: "libc++_static", 566} 567 568cc_defaults { 569 name: "neuralnetworks_generated_defaults", 570 tidy: false, // generated files are too big to run with clang-tidy 571 host_supported: true, 572 vendor_available: true, 573 static_libs: ["libneuralnetworks_generated_test_harness"], 574} 575 576cc_library_static { 577 name: "neuralnetworks_generated_V1_0_example", 578 defaults: ["neuralnetworks_generated_defaults"], 579 srcs: ["generated/spec_V1_0/*.example.cpp"], 580} 581 582cc_library_static { 583 name: "neuralnetworks_generated_V1_1_example", 584 defaults: ["neuralnetworks_generated_defaults"], 585 srcs: ["generated/spec_V1_1/*.example.cpp"], 586} 587 588cc_library_static { 589 name: "neuralnetworks_generated_V1_2_example", 590 defaults: ["neuralnetworks_generated_defaults"], 591 srcs: ["generated/spec_V1_2/*.example.cpp"], 592} 593 594cc_library_static { 595 name: "neuralnetworks_generated_V1_3_example", 596 defaults: ["neuralnetworks_generated_defaults"], 597 srcs: ["generated/spec_V1_3/*.example.cpp"], 598} 599 600cc_library_static { 601 name: "neuralnetworks_generated_AIDL_V2_example", 602 defaults: ["neuralnetworks_generated_defaults"], 603 srcs: ["generated/spec_AIDL_V2/*.example.cpp"], 604} 605 606cc_library_static { 607 name: "neuralnetworks_generated_AIDL_V3_example", 608 defaults: ["neuralnetworks_generated_defaults"], 609 srcs: ["generated/spec_AIDL_V3/*.example.cpp"], 610} 611 612cc_library_static { 613 name: "neuralnetworks_generated_V1_3_cts_only_example", 614 host_supported: true, 615 tidy: false, // generated files are too big to run with clang-tidy 616 srcs: ["generated/spec_V1_3_cts_only/*.example.cpp"], 617 static_libs: ["libneuralnetworks_generated_test_harness"], 618} 619 620cc_library_static { 621 name: "neuralnetworks_generated_experimental_example", 622 defaults: ["neuralnetworks_generated_defaults"], 623 srcs: ["generated/spec_experimental/*.example.cpp"], 624 cflags: ["-DNN_EXPERIMENTAL_FEATURE"], 625} 626 627cc_library_static { 628 name: "NeuralNetworksTest_random_graph", 629 host_supported: true, 630 srcs: [ 631 ":libneuralnetworks_generated_test_harness_for_cts", 632 "GeneratedTestUtils.cpp", 633 "TestNeuralNetworksWrapper.cpp", 634 "fuzzing/OperationManager.cpp", 635 "fuzzing/RandomGraphGenerator.cpp", 636 "fuzzing/RandomGraphGeneratorUtils.cpp", 637 "fuzzing/RandomVariable.cpp", 638 "fuzzing/operation_signatures/*.cpp", 639 ], 640 tidy_disabled_srcs: tidy_disabled_operation_signatures_files, 641 include_dirs: [ 642 "packages/modules/NeuralNetworks/common/include", 643 "packages/modules/NeuralNetworks/runtime/", 644 "packages/modules/NeuralNetworks/runtime/include/", 645 ], 646 header_libs: [ 647 "libneuralnetworks_generated_test_harness_headers_for_cts", 648 ], 649 export_include_dirs: [ 650 ".", 651 "fuzzing", 652 ], 653 cflags: [ 654 "-UNDEBUG", 655 "-Wall", 656 "-Werror", 657 ], 658 shared_libs: [ 659 "liblog", 660 "libneuralnetworks", 661 ], 662 target: { 663 android: { 664 static_libs: [ 665 "libbase_ndk", 666 "libgmock_ndk", 667 "libgtest_ndk_c++", 668 ], 669 shared_libs: [ 670 "libandroid", 671 ], 672 }, 673 host: { 674 static_libs: [ 675 "libbase", 676 "libgmock", 677 "libgtest", 678 ], 679 cflags: [ 680 "-D__ANDROID_API_S__=31", 681 "-D__INTRODUCED_IN(n)=", 682 ], 683 }, 684 }, 685 sanitize: { 686 all_undefined: true, 687 }, 688 strip: { 689 keep_symbols: true, 690 }, 691 sdk_version: "current", 692 stl: "libc++_static", 693} 694 695cc_test { 696 name: "NeuralNetworksSupportLibraryTest", 697 host_supported: false, 698 srcs: [ 699 "GeneratedTestUtils.cpp", 700 "SupportLibraryTestGenerated.cpp", 701 "SupportLibraryTestMain.cpp", 702 ], 703 cflags: [ 704 "-DNNTEST_COMPUTE_MODE", 705 "-DNNTEST_ONLY_PUBLIC_API", 706 "-DNNTEST_SLTS", 707 "-DNN_COMPATIBILITY_LIBRARY_BUILD", 708 "-Wall", 709 "-Werror", 710 ], 711 shared_libs: [ 712 "libandroid", 713 "liblog", 714 ], 715 static_libs: [ 716 "libbase_ndk", 717 "libgmock_ndk", 718 "libgtest_ndk_c++", 719 "libneuralnetworks_generated_test_harness", 720 "neuralnetworks_supportlibrary_loader", 721 ], 722 whole_static_libs: [ 723 "neuralnetworks_generated_AIDL_V2_example", 724 "neuralnetworks_generated_AIDL_V3_example", 725 "neuralnetworks_generated_V1_0_example", 726 "neuralnetworks_generated_V1_1_example", 727 "neuralnetworks_generated_V1_2_example", 728 "neuralnetworks_generated_V1_3_example", // TODO (b/209655430): Decide if need to add "neuralnetworks_generated_V1_3_cts_only_example". 729 ], 730 include_dirs: [ 731 "packages/modules/NeuralNetworks/runtime/include/", 732 "packages/modules/NeuralNetworks/tools/test_generator/test_harness/include", 733 ], 734 test_suites: ["general-tests"], 735} 736