1 # Build nnstreamer subplugins and apps for test cases
2 subdir('nnstreamer_example')
4 # Set unittest install dir
5 unittest_install_dir = join_paths(unittest_base_dir, 'tests')
7 # Build and copy exe for ssat
8 copy = find_program('cp', required: true)
9 libpng_dep = dependency('libpng', required: false)
11 b2p = executable('bmp2png',
13 dependencies: [libpng_dep, glib_dep],
14 install: get_option('install-test'),
15 install_dir: unittest_install_dir
18 custom_target('copy-bmp2png',
22 command: [copy, '@INPUT@', '@CURRENT_SOURCE_DIR@'],
23 build_by_default: true,
24 build_always_stale: true,
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
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('.')
43 subdir('nnstreamer_repo_dynamicity')
45 # filter_reload (Currently, the reload test for tensor filter requires tflite)
46 if tflite2_support_is_available
47 subdir('nnstreamer_filter_reload')
51 gtest_dep = dependency('gtest', required: false)
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'
59 gtest_compile_args += '-Wno-maybe-uninitialized'
62 lesser_code_quality_accepted_for_unittest_code = declare_dependency(compile_args: gtest_compile_args)
64 nnstreamer_unittest_deps = [
71 lesser_code_quality_accepted_for_unittest_code
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
82 test('unittest_common', unittest_common, env: testenv)
85 gst18_dep = dependency('gstreamer-' + gst_api_verision, version : '>=1.8', required : false)
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
94 test('unittest_sink', unittest_sink, timeout: 120, env: testenv)
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
103 test('unittest_tensor_region', unittest_tensor_region, env: testenv)
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
113 test('unittest_plugins', unittest_plugins, env: testenv)
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
123 test('unittest_if', unittest_if, env: testenv)
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
133 test('unittest_rate', unittest_rate, env: testenv)
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
143 test('unittest_latency', unittest_latency, env: testenv)
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
153 test('unittest_filter_single', unittest_filter_single, env: testenv)
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
163 test('unittest_join', unittest_join, env: testenv)
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)
173 test('unittest_mqtt_w_helper', unittest_mqtt_w_helper, env: testenv)
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)
181 test('unittest_mqtt', unittest_mqtt, env: testenv)
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)
192 test('gstreamer_ntp_util_mock', gstreamer_ntp_util_mock, env: testenv)
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
205 test('unittest_src_iio', unittest_src_iio, timeout: 120, env: testenv)
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
217 test('unittest_converter', unittest_converter, env: testenv)
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
227 test('unittest_filter_custom', unittest_filter_custom, timeout: 120, env: testenv)
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
239 test('unittest_filter_armnn', unittest_filter_armnn, env: testenv)
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
251 test('unittest_filter_lua', unittest_filter_lua, env: testenv)
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
263 test('unittest_filter_snpe', unittest_filter_snpe, env: testenv)
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
275 test('unittest_filter_tensorflow2_lite', unittest_filter_tensorflow2_lite, env: testenv)
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
287 test('unittest_decoder', unittest_decoder, env: testenv)
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
299 test('unittest_grpc', unittest_grpc, env: testenv)
303 if get_option('enable-tizen-sensor')
304 subdir('tizen_sensor')
307 # Tensor filter extensions basic test cases
308 subdir('nnstreamer_filter_extensions_common')
311 if nnfw_runtime_support_is_available
312 subdir('tizen_nnfw_runtime')
315 if (tflite_support_is_available or tflite2_support_is_available) and get_option('enable-edgetpu')
316 subdir('nnstreamer_filter_edgetpu')
319 if mvncsdk2_support_is_available
320 subdir('nnstreamer_filter_mvncsdk2')
323 if tvm_support_is_available
324 subdir('nnstreamer_filter_tvm')
327 if get_option('enable-cppfilter')
328 subdir('cpp_methods')
331 if get_option('enable-openvino')
332 subdir('nnstreamer_filter_openvino')
335 if mxnet_support_is_available
336 subdir('nnstreamer_filter_mxnet')
339 if nnstreamer_edge_support_is_available
340 subdir('nnstreamer_edge')
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
351 test('unittest_filter_shared_model', unittest_filter_shared_model, timeout: 30, env: testenv)
354 if datarepo_support_is_available
355 subdir('nnstreamer_datarepo')
358 # ONNXRUNTIME unittest
359 if onnxruntime_support_is_available
360 unittest_filter_onnxruntime = executable('unittest_filter_onnxruntime',
361 join_paths('nnstreamer_filter_onnxruntime', 'unittest_filter_onnxruntime.cc'),
362 dependencies: [nnstreamer_unittest_deps],
363 install: get_option('install-test'),
364 install_dir: unittest_install_dir
367 test('unittest_filter_onnxruntime', unittest_filter_onnxruntime, env: testenv)
370 # Run unittest_trainer
371 unittest_trainer = executable('unittest_trainer',
372 join_paths('nnstreamer_trainer', 'unittest_trainer.cc'),
373 dependencies: [nnstreamer_unittest_deps],
374 install: get_option('install-test'),
375 install_dir: unittest_install_dir
378 test('unittest_trainer', unittest_trainer, env: testenv)
380 endif # gtest_dep.found()
382 tensor_filter_ext_enabled = tflite_support_is_available or \
383 tflite2_support_is_available or \
384 tf_support_is_available or \
386 pytorch_support_is_available or caffe2_support_is_available or \
387 nnfw_runtime_support_is_available or get_option('enable-edgetpu') or \
388 mvncsdk2_support_is_available or get_option('enable-openvino') or \
389 mxnet_support_is_available
390 if get_option('install-test') and tensor_filter_ext_enabled
391 install_subdir('test_models', install_dir: unittest_install_dir)
396 if get_option('install-test')
397 install_data('gen24bBMP.py', install_dir: unittest_install_dir)
398 install_data('test_utils.py', install_dir: unittest_install_dir)
399 install_subdir('nnstreamer_converter', install_dir: unittest_install_dir)
400 install_subdir('nnstreamer_merge', install_dir: unittest_install_dir)
401 install_subdir('nnstreamer_decoder', install_dir: unittest_install_dir)
402 install_subdir('nnstreamer_decoder_boundingbox', install_dir: unittest_install_dir)
403 install_subdir('nnstreamer_decoder_pose', install_dir: unittest_install_dir)
404 install_subdir('nnstreamer_demux', install_dir: unittest_install_dir)
405 install_subdir('nnstreamer_filter_custom', install_dir: unittest_install_dir)
406 if tflite_support_is_available or tflite2_support_is_available
407 install_subdir('nnstreamer_filter_tensorflow_lite', install_dir: unittest_install_dir)
409 if tflite2_support_is_available
410 install_subdir('nnstreamer_decoder_image_labeling', install_dir: unittest_install_dir)
411 install_subdir('nnstreamer_decoder_image_segment', install_dir: unittest_install_dir)
412 install_subdir('nnstreamer_filter_reload', install_dir: unittest_install_dir)
413 install_subdir('nnstreamer_filter_tensorflow2_lite', install_dir: unittest_install_dir)
416 if flatbuf_support_is_available
417 install_subdir('nnstreamer_converter_python3', install_dir: unittest_install_dir)
418 install_subdir('nnstreamer_decoder_python3', install_dir: unittest_install_dir)
420 install_subdir('nnstreamer_filter_python3', install_dir: unittest_install_dir)
422 if tf_support_is_available
423 install_subdir('nnstreamer_filter_tensorflow', install_dir: unittest_install_dir)
425 if pytorch_support_is_available
426 install_subdir('nnstreamer_filter_pytorch', install_dir: unittest_install_dir)
428 if caffe2_support_is_available
429 install_subdir('nnstreamer_filter_caffe2', install_dir: unittest_install_dir)
431 if ncnn_support_is_available
432 install_subdir('nnstreamer_filter_ncnn', install_dir: unittest_install_dir)
434 if deepview_rt_support_is_available
435 install_subdir('nnstreamer_filter_deepview_rt', install_dir: unittest_install_dir)
437 if flatbuf_support_is_available
438 install_subdir('nnstreamer_flatbuf', install_dir: unittest_install_dir)
439 install_subdir('nnstreamer_flexbuf', install_dir: unittest_install_dir)
441 if protobuf_support_is_available
442 install_subdir('nnstreamer_protobuf', install_dir: unittest_install_dir)
444 if mxnet_support_is_available
445 install_subdir('unittest_filter_mxnet', install_dir: unittest_install_dir)
447 install_subdir('nnstreamer_mux', install_dir: unittest_install_dir)
448 install_subdir('nnstreamer_rate', install_dir: unittest_install_dir)
449 install_subdir('nnstreamer_repo', install_dir: unittest_install_dir)
450 install_subdir('nnstreamer_repo_dynamicity', install_dir: unittest_install_dir)
451 install_subdir('nnstreamer_repo_lstm', install_dir: unittest_install_dir)
452 install_subdir('nnstreamer_repo_rnn', install_dir: unittest_install_dir)
453 install_subdir('nnstreamer_split', install_dir: unittest_install_dir)
454 install_subdir('transform_arithmetic', install_dir: unittest_install_dir)
455 install_subdir('transform_clamp', install_dir: unittest_install_dir)
456 install_subdir('transform_dimchg', install_dir: unittest_install_dir)
457 install_subdir('transform_stand', install_dir: unittest_install_dir)
458 install_subdir('transform_transpose', install_dir: unittest_install_dir)
459 install_subdir('transform_typecast', install_dir: unittest_install_dir)