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
17cc_defaults {
18    name: "NeuralNetworksTest_default_libs",
19    defaults: ["neuralnetworks_defaults"],
20    host_supported: false,
21    // b/109953668, disable OpenMP
22    // openmp: true,
23    shared_libs: [
24        "libandroid",
25        "libbase",
26        "libbinder",
27        "libcutils",
28        "libfmq",
29        "libhidlbase",
30        "libhidltransport",
31        "libhidlmemory",
32        "liblog",
33        "libnativewindow",
34        "libtextclassifier_hash",
35        "libui",
36        "libutils",
37        "android.hardware.neuralnetworks@1.0",
38        "android.hardware.neuralnetworks@1.1",
39        "android.hardware.neuralnetworks@1.2",
40        "android.hidl.allocator@1.0",
41        "android.hidl.memory@1.0",
42    ],
43    static_libs: [
44        "libc++fs",
45        "libcrypto",
46    ],
47    header_libs: [
48        "libneuralnetworks_generated_test_harness_headers",
49    ],
50}
51
52cc_defaults {
53    name: "NeuralNetworksTest_defaults",
54    defaults: ["NeuralNetworksTest_default_libs"],
55    srcs: [
56        "TestNeuralNetworksWrapper.cpp",
57
58        // Subset of tests that rely only on public functionality.
59        //
60        // Changes to this list must be reflected in cts/tests/tests/neuralnetworks/Android.mk
61        // to ensure CTS tests coverage.
62        "generated/tests/*.cpp",
63        "TestGenerated.cpp",
64        "TestMemory.cpp",
65        "TestOperandExtraParams.cpp",
66        "TestTrivialModel.cpp",
67        "TestUnknownDimensions.cpp",
68        "TestUnspecifiedDimensions.cpp",
69        "TestValidateModel.cpp",
70        "TestValidateOperations.cpp",
71        "TestValidation.cpp",
72        "TestWrapper.cpp",
73    ],
74    static_libs: [
75        "libgmock",
76    ],
77}
78
79cc_test {
80    name: "NeuralNetworksTest_shared_partial",
81    defaults: ["NeuralNetworksTest_defaults"],
82    srcs: [
83        "TestMain.cpp",
84    ],
85    cflags: [
86        "-DNNTEST_ONLY_PUBLIC_API"
87    ],
88    shared_libs: [
89        "libneuralnetworks",
90        "libtextclassifier_hash",
91    ],
92}
93
94cc_defaults {
95    name: "NeuralNetworksTest_static_defaults",
96    defaults: ["NeuralNetworksTest_defaults"],
97    srcs: [
98        "TestMain.cpp",
99
100        "Bridge.cpp",
101        // Tests that rely on non-public functionality (i.e., symbols
102        // not exported from libneuralnetworks.so).
103        "TestCompilationCaching.cpp",
104        "TestCompliance.cpp",
105        "TestExecution.cpp",
106        "TestMemoryInternal.cpp",
107        // b/109953668, disable OpenMP
108        // "TestOpenmpSettings.cpp",
109        "TestPartitioning.cpp",
110        "TestPartitioningRandom.cpp",
111        "TestIntrospectionControl.cpp",
112        "TestExtensions.cpp",
113        "fibonacci_extension/FibonacciExtensionTest.cpp",
114        "fibonacci_extension/FibonacciDriver.cpp",
115    ],
116    static_libs: [
117        "libgmock",
118        "libneuralnetworks",
119        "libneuralnetworks_common",
120        "libSampleDriver",
121    ],
122    shared_libs: [
123        "libcutils",
124    ],
125    header_libs: [
126        "libneuralnetworks_private_headers",
127        "neuralnetworks_test_vendor_fibonacci_extension",
128    ],
129    test_suites: [
130        "general-tests",
131    ],
132}
133
134cc_test {
135    name: "NeuralNetworksTest_static",
136    defaults: ["NeuralNetworksTest_static_defaults"],
137}
138
139cc_test {
140    name: "NeuralNetworksTest_static_fuzzing",
141    defaults: ["NeuralNetworksTest_default_libs"],
142    srcs: [
143        "TestNeuralNetworksWrapper.cpp",
144        "fuzzing/operation_signatures/*.cpp",
145        "fuzzing/OperationManager.cpp",
146        "fuzzing/RandomGraphGenerator.cpp",
147        "fuzzing/RandomGraphGeneratorUtils.cpp",
148        "fuzzing/RandomVariable.cpp",
149        "fuzzing/TestRandomGraph.cpp",
150    ],
151    static_libs: [
152        "libgmock",
153        "libneuralnetworks",
154        "libneuralnetworks_common",
155        "libSampleDriver",
156    ],
157    header_libs: [
158        "libneuralnetworks_private_headers",
159    ],
160}
161
162cc_test {
163    name: "NeuralNetworksTest_static_asan",
164    defaults: ["NeuralNetworksTest_static_defaults"],
165    sanitize: {
166      address: true,
167    },
168    // Declare explicit library dependency for continuous builds
169    target: {
170        android_arm: {
171            required: [
172                "libclang_rt.asan-arm-android",
173            ],
174        },
175        android_arm64: {
176            required: [
177                "libclang_rt.asan-aarch64-android",
178            ],
179        },
180        android_x86: {
181            required: [
182                "libclang_rt.asan-i686-android",
183            ],
184        },
185        android_x86_64: {
186            required: [
187                "libclang_rt.asan-x86_64-android",
188            ],
189        },
190    },
191}
192
193cc_test {
194    name: "NeuralNetworksTest_static_ubsan",
195    defaults: ["NeuralNetworksTest_static_defaults"],
196    sanitize: {
197      undefined: true,
198      all_undefined: true,
199      diag: {
200        undefined: true,
201      },
202    },
203}
204
205cc_defaults {
206    name: "NeuralNetworksTest_mt_defaults",
207    defaults: ["NeuralNetworksTest_default_libs"],
208    srcs: [
209        "TestNeuralNetworksWrapper.cpp",
210        "TestMain.cpp",
211        "generated/tests/*.cpp",
212        "TestGenerated.cpp",
213    ],
214    cflags: [
215        "-DNNTEST_MULTITHREADED"
216    ],
217    static_libs: [
218        "libgmock",
219        "libneuralnetworks",
220        "libneuralnetworks_common",
221        "libSampleDriver",
222    ],
223    shared_libs: [
224        "libcutils",
225    ],
226    header_libs: [
227        "libneuralnetworks_private_headers",
228    ],
229}
230
231cc_test {
232    name: "NeuralNetworksTest_mt_static",
233    defaults: ["NeuralNetworksTest_mt_defaults"],
234}
235
236cc_test {
237    // Note: tsan not supported on Android (yet)
238    name: "NeuralNetworksTest_mt_static_asan",
239    defaults: ["NeuralNetworksTest_mt_defaults"],
240    sanitize: {
241      address: true,
242    },
243}
244