1jsonc_daccord = dependency( 2 'jsoncdac', 3 default_options: ['default_library=static', 'warning_level=2'], 4) 5 6test_sources = files('base64_test.c', 'test-utils.c') 7 8test_include_dirs = ['.', '../include'] 9 10cper_tests = executable( 11 'cper-tests', 12 'ir-tests.c', 13 test_sources, 14 implicit_include_directories: false, 15 include_directories: include_directories(test_include_dirs), 16 dependencies: [ 17 json_c_dep, 18 jsonc_daccord, 19 libcper_parse_dep, 20 libcper_generate_dep, 21 ], 22) 23test('test-cper-tests', cper_tests) 24 25cc = meson.get_compiler('c') 26 27# Fuzzing only works on linux at this moment. osx clang doesn't have leak detector 28is_darwin = host_machine.system().startswith('darwin') 29if (cc.get_id() == 'clang') and get_option('fuzz').allowed() and not is_darwin 30 sanitize = ['fuzzer'] 31 fuzz_args = [ 32 '-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION', 33 '-fsanitize=fuzzer,address,leak', 34 ] 35 36 foreach fuzzer_test : ['fuzz_cper_buf_to_ir'] 37 fuzz_exe = executable( 38 fuzzer_test, 39 [fuzzer_test + '.c'] + libcper_parse_sources + edk_sources + 'test-utils.c' + libcper_generate_sources, 40 implicit_include_directories: false, 41 include_directories: include_directories(test_include_dirs), 42 c_args: fuzz_args, 43 link_args: fuzz_args, 44 dependencies: [json_c_dep, jsonc_daccord], 45 ) 46 test( 47 fuzzer_test, 48 fuzz_exe, 49 args: [ 50 '-max_total_time=10', 51 '-max_len=131072', 52 '-error_exitcode=1', 53 '-timeout_exitcode=2', 54 ], 55 ) 56 endforeach 57endif 58