Support clang/clang++
[platform/upstream/nnstreamer.git] / tests / meson.build
1 # Build nnstreamer subplugins and apps for test cases
2 subdir('nnstreamer_example')
3
4 # Set unittest install dir
5 unittest_install_dir = join_paths(unittest_base_dir, 'tests')
6
7 # Build and copy exe for ssat
8 copy = find_program('cp', required: true)
9 libpng_dep = dependency('libpng', required: false)
10 if libpng_dep.found()
11   b2p = executable('bmp2png',
12     'bmp2png.c',
13     dependencies: [libpng_dep, glib_dep],
14     install: get_option('install-test'),
15     install_dir: unittest_install_dir
16   )
17
18   custom_target('copy-bmp2png',
19     input: b2p,
20     output: 'b2p',
21     depends: b2p,
22     command: [copy, '@INPUT@', '@CURRENT_SOURCE_DIR@'],
23     build_by_default: true,
24     build_always_stale: true,
25   )
26 endif
27
28 # Shared library of internal APIs for nnstreamer-test
29 unittest_util_shared = shared_library('nnstreamer_unittest_util',
30   join_paths(meson.current_source_dir(), 'unittest_util.c'),
31   dependencies: nnstreamer_dep,
32   include_directories: nnstreamer_inc,
33   install: get_option('install-test'),
34   install_dir: nnstreamer_libdir
35 )
36 unittest_util_dep = declare_dependency(link_with: unittest_util_shared,
37   dependencies: nnstreamer_dep,
38   compile_args: ['-DFAKEDLOG=1'],
39   include_directories: include_directories('.')
40 )
41
42 # ssat repo_dynamic
43 subdir('nnstreamer_repo_dynamicity')
44
45 # filter_reload (Currently, the reload test for tensor filter requires tflite)
46 if tflite2_support_is_available
47   subdir('nnstreamer_filter_reload')
48 endif
49
50 # gtest
51 gtest_dep = dependency('gtest', required: false)
52 if gtest_dep.found()
53   gtest_compile_args = ['-Wno-unused-parameter', '-Wno-missing-field-initializers', '-Wno-format-nonliteral']
54   if cc.get_id() == 'clang' and cxx.get_id() == 'clang'
55     gtest_compile_args += '-Wno-uninitialized'
56     gtest_compile_args += '-Wno-format-nonliteral'
57     gtest_compile_args += '-Wno-deprecated-copy'
58   else
59     gtest_compile_args += '-Wno-maybe-uninitialized'
60   endif
61
62   lesser_code_quality_accepted_for_unittest_code = declare_dependency(compile_args: gtest_compile_args)
63
64   nnstreamer_unittest_deps = [
65     unittest_util_dep,
66     glib_dep,
67     gst_dep,
68     gst_app_dep,
69     gst_check_dep,
70     gtest_dep,
71     lesser_code_quality_accepted_for_unittest_code
72   ]
73
74   # Run unittest_common
75   unittest_common = executable('unittest_common',
76     join_paths('common', 'unittest_common.cc'),
77     dependencies: [nnstreamer_unittest_deps],
78     install: get_option('install-test'),
79     install_dir: unittest_install_dir
80   )
81
82   test('unittest_common', unittest_common, env: testenv)
83
84   # Run unittest_sink
85   gst18_dep = dependency('gstreamer-' + gst_api_verision, version : '>=1.8', required : false)
86   if gst18_dep.found()
87     unittest_sink = executable('unittest_sink',
88       join_paths('nnstreamer_sink', 'unittest_sink.cc'),
89       dependencies: [nnstreamer_unittest_deps],
90       install: get_option('install-test'),
91       install_dir: unittest_install_dir
92     )
93
94     test('unittest_sink', unittest_sink, timeout: 120, env: testenv)
95
96     # RUN unittest_tensor_region
97     unittest_tensor_region = executable('unittest_tensor_region',
98       join_paths('nnstreamer_decoder_tensor_region', 'unittest_tensor_region.cc'),
99       dependencies: [nnstreamer_unittest_deps],
100       install: get_option('install-test'),
101       install_dir: unittest_install_dir
102     )
103     test('unittest_tensor_region', unittest_tensor_region, env: testenv)
104
105     # Run unittest_plugins
106     unittest_plugins = executable('unittest_plugins',
107       join_paths('nnstreamer_plugins', 'unittest_plugins.cc'),
108       dependencies: [nnstreamer_unittest_deps, nnstreamer_internal_deps],
109       install: get_option('install-test'),
110       install_dir: unittest_install_dir
111     )
112
113     test('unittest_plugins', unittest_plugins, env: testenv)
114
115     # Run unittest_if
116     unittest_if = executable('unittest_if',
117       join_paths('nnstreamer_if', 'unittest_if.cc'),
118       dependencies: [nnstreamer_unittest_deps],
119       install: get_option('install-test'),
120       install_dir: unittest_install_dir
121     )
122
123     test('unittest_if', unittest_if, env: testenv)
124
125     # Run unittest_rate
126     unittest_rate = executable('unittest_rate',
127       join_paths('nnstreamer_rate', 'unittest_rate.cc'),
128       dependencies: [nnstreamer_unittest_deps],
129       install: get_option('install-test'),
130       install_dir: unittest_install_dir
131     )
132
133     test('unittest_rate', unittest_rate, env: testenv)
134
135     # Run unittest_latency
136     unittest_latency = executable('unittest_latency',
137       join_paths('nnstreamer_latency', 'unittest_latency.cc'),
138       dependencies: [nnstreamer_unittest_deps],
139       install: get_option('install-test'),
140       install_dir: unittest_install_dir
141     )
142
143     test('unittest_latency', unittest_latency, env: testenv)
144
145     # Run unittest_filter_single
146     unittest_filter_single = executable('unittest_filter_single',
147       join_paths('nnstreamer_filter_single', 'unittest_filter_single.cc'),
148       dependencies: [nnstreamer_single_dep, gtest_dep, lesser_code_quality_accepted_for_unittest_code],
149       install: get_option('install-test'),
150       install_dir: unittest_install_dir
151     )
152
153     test('unittest_filter_single', unittest_filter_single, env: testenv)
154
155     # Run unittest_join
156     unittest_join = executable('unittest_join',
157       join_paths('gstreamer_join', 'unittest_join.cc'),
158       dependencies: [nnstreamer_unittest_deps, join_dep],
159       install: get_option('install-test'),
160       install_dir: unittest_install_dir
161     )
162
163     test('unittest_join', unittest_join, env: testenv)
164
165     # Run unittest_mqtt
166     if mqtt_support_is_available
167       unittest_mqtt_w_helper = executable('unittest_mqtt_w_helper',
168           join_paths('gstreamer_mqtt', 'unittest_mqtt_w_helper.cc'),
169           dependencies: [gstmqtt_dep, nnstreamer_unittest_deps],
170           install: get_option('install-test'),
171           install_dir: unittest_install_dir)
172
173       test('unittest_mqtt_w_helper', unittest_mqtt_w_helper, env: testenv)
174
175       unittest_mqtt = executable('unittest_mqtt',
176           join_paths('gstreamer_mqtt', 'unittest_mqtt.cc'),
177           dependencies: [nnstreamer_unittest_deps],
178           install: get_option('install-test'),
179           install_dir: unittest_install_dir)
180
181       test('unittest_mqtt', unittest_mqtt, env: testenv)
182
183       # ntp util test
184       gmock_dep = dependency('gmock', required: false)
185       if get_option('enable-tizen') and gmock_dep.found()
186         gstreamer_ntp_util_mock = executable('unittest_ntp_util',
187             join_paths('gstreamer_mqtt', 'unittest_ntp_util_mock.cc'),
188             dependencies: [nnstreamer_unittest_deps, gmock_dep, gstmqtt_dep],
189             install: get_option('install-test'),
190             install_dir: unittest_install_dir)
191
192         test('gstreamer_ntp_util_mock', gstreamer_ntp_util_mock, env: testenv)
193       endif
194     endif
195
196     # Run unittest_src_iio
197     if tensor_src_iio_build
198       unittest_src_iio = executable('unittest_src_iio',
199         join_paths('nnstreamer_source', 'unittest_src_iio.cc'),
200         dependencies: [nnstreamer_unittest_deps],
201         install: get_option('install-test'),
202         install_dir: unittest_install_dir
203       )
204
205       test('unittest_src_iio', unittest_src_iio, timeout: 120, env: testenv)
206     endif
207
208     # Run unittest_converter
209     if flatbuf_support_is_available and have_python3
210       unittest_converter = executable('unittest_converter',
211         join_paths('nnstreamer_converter', 'unittest_converter.cc'),
212         dependencies: [nnstreamer_unittest_deps, flatbuf_dep, nnstreamer_python3_helper_dep],
213         install: get_option('install-test'),
214         install_dir: unittest_install_dir
215       )
216
217       test('unittest_converter', unittest_converter, env: testenv)
218     endif
219
220     unittest_filter_custom = executable('unittest_filter_custom',
221       join_paths('nnstreamer_filter_custom', 'unittest_filter_custom.cc'),
222       dependencies: [nnstreamer_unittest_deps],
223       install: get_option('install-test'),
224       install_dir: unittest_install_dir
225     )
226
227     test('unittest_filter_custom', unittest_filter_custom, timeout: 120, env: testenv)
228   endif
229
230   # Armnn unittest
231   if armnn_support_is_available
232     unittest_filter_armnn = executable('unittest_filter_armnn',
233       join_paths('nnstreamer_filter_armnn', 'unittest_filter_armnn.cc'),
234       dependencies: [nnstreamer_unittest_deps, armnn_plugin_dep],
235       install: get_option('install-test'),
236       install_dir: unittest_install_dir
237     )
238
239     test('unittest_filter_armnn', unittest_filter_armnn, env: testenv)
240   endif
241
242   # Lua unittest
243   if lua_support_is_available
244     unittest_filter_lua = executable('unittest_filter_lua',
245       join_paths('nnstreamer_filter_lua', 'unittest_filter_lua.cc'),
246       dependencies: [nnstreamer_unittest_deps],
247       install: get_option('install-test'),
248       install_dir: unittest_install_dir
249     )
250
251     test('unittest_filter_lua', unittest_filter_lua, env: testenv)
252   endif
253
254   # SNPE unittest
255   if snpe_support_is_available
256     unittest_filter_snpe = executable('unittest_filter_snpe',
257       join_paths('nnstreamer_filter_snpe', 'unittest_filter_snpe.cc'),
258       dependencies: [nnstreamer_unittest_deps],
259       install: get_option('install-test'),
260       install_dir: unittest_install_dir
261     )
262
263     test('unittest_filter_snpe', unittest_filter_snpe, env: testenv)
264   endif
265
266   # tensorflow2-lite unittest
267   if tflite2_support_is_available
268     unittest_filter_tensorflow2_lite = executable('unittest_filter_tensorflow2_lite',
269       join_paths('nnstreamer_filter_tensorflow2_lite', 'unittest_filter_tensorflow2_lite.cc'),
270       dependencies: [nnstreamer_unittest_deps],
271       install: get_option('install-test'),
272       install_dir: unittest_install_dir
273     )
274
275     test('unittest_filter_tensorflow2_lite', unittest_filter_tensorflow2_lite, env: testenv)
276   endif
277
278   # Run unittest_decoder
279   if flatbuf_support_is_available
280     unittest_decoder = executable('unittest_decoder',
281       join_paths('nnstreamer_decoder', 'unittest_decoder.cc'),
282       dependencies: [nnstreamer_unittest_deps, flatbuf_dep],
283       install: get_option('install-test'),
284       install_dir: unittest_install_dir
285     )
286
287     test('unittest_decoder', unittest_decoder, env: testenv)
288   endif
289
290   # gRPC unittest
291   if grpc_support_is_available
292     unittest_grpc = executable('unittest_grpc',
293       join_paths('nnstreamer_grpc', 'unittest_grpc.cc'),
294       dependencies: nnstreamer_unittest_deps,
295       install: get_option('install-test'),
296       install_dir: unittest_install_dir
297     )
298
299     test('unittest_grpc', unittest_grpc, env: testenv)
300   endif
301
302   # Tizen sensor-src
303   if get_option('enable-tizen-sensor')
304     subdir('tizen_sensor')
305   endif
306
307   # Tensor filter extensions basic test cases
308   subdir('nnstreamer_filter_extensions_common')
309
310   # Tizen NNFW runtime
311   if nnfw_runtime_support_is_available
312     subdir('tizen_nnfw_runtime')
313   endif
314
315   if (tflite_support_is_available or tflite2_support_is_available) and get_option('enable-edgetpu')
316     subdir('nnstreamer_filter_edgetpu')
317   endif
318
319   if mvncsdk2_support_is_available
320     subdir('nnstreamer_filter_mvncsdk2')
321   endif
322
323   if tvm_support_is_available
324     subdir('nnstreamer_filter_tvm')
325   endif
326
327   if get_option('enable-cppfilter')
328     subdir('cpp_methods')
329   endif
330
331   if get_option('enable-openvino')
332     subdir('nnstreamer_filter_openvino')
333   endif
334
335   if mxnet_support_is_available
336     subdir('nnstreamer_filter_mxnet')
337   endif
338
339   if nnstreamer_edge_support_is_available
340     subdir('nnstreamer_edge')
341   endif
342
343   if tflite_support_is_available or tflite2_support_is_available
344     unittest_filter_shared_model = executable('unittest_filter_shared_model',
345       join_paths('nnstreamer_filter_shared_model', 'unittest_filter_shared_model.cc'),
346       dependencies: [nnstreamer_unittest_deps, unittest_util_dep],
347       install: get_option('install-test'),
348       install_dir: unittest_install_dir
349     )
350
351     test('unittest_filter_shared_model', unittest_filter_shared_model, timeout: 30, env: testenv)
352   endif
353
354   if datarepo_support_is_available
355     subdir('nnstreamer_datarepo')
356   endif
357
358   # Run unittest_trainer
359   unittest_trainer = executable('unittest_trainer',
360     join_paths('nnstreamer_trainer', 'unittest_trainer.cc'),
361     dependencies: [nnstreamer_unittest_deps],
362     install: get_option('install-test'),
363     install_dir: unittest_install_dir
364   )
365
366   test('unittest_trainer', unittest_trainer, env: testenv)
367
368 endif # gtest_dep.found()
369
370 tensor_filter_ext_enabled = tflite_support_is_available or \
371     tflite2_support_is_available or \
372     tf_support_is_available or \
373     have_python3 or \
374     pytorch_support_is_available or caffe2_support_is_available or \
375     nnfw_runtime_support_is_available or get_option('enable-edgetpu') or \
376     mvncsdk2_support_is_available or get_option('enable-openvino') or \
377     mxnet_support_is_available
378 if get_option('install-test') and tensor_filter_ext_enabled
379   install_subdir('test_models', install_dir: unittest_install_dir)
380 endif
381
382
383 # Install Unittest
384 if get_option('install-test')
385   install_data('gen24bBMP.py', install_dir: unittest_install_dir)
386   install_data('test_utils.py', install_dir: unittest_install_dir)
387   install_subdir('nnstreamer_converter', install_dir: unittest_install_dir)
388   install_subdir('nnstreamer_merge', install_dir: unittest_install_dir)
389   install_subdir('nnstreamer_decoder', install_dir: unittest_install_dir)
390   install_subdir('nnstreamer_decoder_boundingbox', install_dir: unittest_install_dir)
391   install_subdir('nnstreamer_decoder_pose', install_dir: unittest_install_dir)
392   install_subdir('nnstreamer_demux', install_dir: unittest_install_dir)
393   install_subdir('nnstreamer_filter_custom', install_dir: unittest_install_dir)
394   if tflite_support_is_available
395     install_subdir('nnstreamer_filter_tensorflow_lite', install_dir: unittest_install_dir)
396   endif
397   if tflite2_support_is_available
398     install_subdir('nnstreamer_decoder_image_labeling', install_dir: unittest_install_dir)
399     install_subdir('nnstreamer_decoder_image_segment', install_dir: unittest_install_dir)
400     install_subdir('nnstreamer_filter_reload', install_dir: unittest_install_dir)
401     install_subdir('nnstreamer_filter_tensorflow2_lite', install_dir: unittest_install_dir)
402   endif
403   if have_python3
404     if flatbuf_support_is_available
405       install_subdir('nnstreamer_converter_python3', install_dir: unittest_install_dir)
406       install_subdir('nnstreamer_decoder_python3', install_dir: unittest_install_dir)
407     endif
408     install_subdir('nnstreamer_filter_python3', install_dir: unittest_install_dir)
409   endif
410   if tf_support_is_available
411     install_subdir('nnstreamer_filter_tensorflow', install_dir: unittest_install_dir)
412   endif
413   if pytorch_support_is_available
414     install_subdir('nnstreamer_filter_pytorch', install_dir: unittest_install_dir)
415   endif
416   if caffe2_support_is_available
417     install_subdir('nnstreamer_filter_caffe2', install_dir: unittest_install_dir)
418   endif
419   if deepview_rt_support_is_available
420     install_subdir('nnstreamer_filter_deepview_rt', install_dir: unittest_install_dir)
421   endif
422   if flatbuf_support_is_available
423     install_subdir('nnstreamer_flatbuf', install_dir: unittest_install_dir)
424     install_subdir('nnstreamer_flexbuf', install_dir: unittest_install_dir)
425   endif
426   if protobuf_support_is_available
427     install_subdir('nnstreamer_protobuf', install_dir: unittest_install_dir)
428   endif
429   if mxnet_support_is_available
430     install_subdir('unittest_filter_mxnet', install_dir: unittest_install_dir)
431   endif
432   install_subdir('nnstreamer_mux', install_dir: unittest_install_dir)
433   install_subdir('nnstreamer_rate', install_dir: unittest_install_dir)
434   install_subdir('nnstreamer_repo', install_dir: unittest_install_dir)
435   install_subdir('nnstreamer_repo_dynamicity', install_dir: unittest_install_dir)
436   install_subdir('nnstreamer_repo_lstm', install_dir: unittest_install_dir)
437   install_subdir('nnstreamer_repo_rnn', install_dir: unittest_install_dir)
438   install_subdir('nnstreamer_split', install_dir: unittest_install_dir)
439   install_subdir('transform_arithmetic', install_dir: unittest_install_dir)
440   install_subdir('transform_clamp', install_dir: unittest_install_dir)
441   install_subdir('transform_dimchg', install_dir: unittest_install_dir)
442   install_subdir('transform_stand', install_dir: unittest_install_dir)
443   install_subdir('transform_transpose', install_dir: unittest_install_dir)
444   install_subdir('transform_typecast', install_dir: unittest_install_dir)
445 endif