endif
endforeach
-# Check if various sanitizers are supported
-sanitizers = []
-foreach arg : ['address']
-
- have = run_command(check_compilation_sh,
- cc.cmd_array(), '-x', 'c',
- '-fsanitize=@0@'.format(arg),
- '-include', link_test_c).returncode() == 0
- message('@0@ sanitizer supported: @1@'.format(arg, have ? 'yes' : 'no'))
- if have
- sanitizers += arg
- endif
-endforeach
-
if get_option('buildtype') != 'debug'
foreach arg : ['-ffunction-sections',
'-fdata-sections']
############################################################
-prev = ''
-foreach p : fuzz_regression_tests
- a = p.split('/')[-3]
- b = p.split('/')[-2]
- c = p.split('/')[-1]
+# Enable tests for all supported sanitizers
+foreach tuple : sanitizers
+ sanitizer = tuple[0]
+ build = tuple[1]
- if a == 'address'
- build = sanitize_address
- else
- error('unknown sanitizer @0@'.format(a))
- endif
-
- name = '@1@:@0@'.format(a, b)
-
- if name != prev
- if want_tests == 'false'
- message('Not compiling @0@ because tests is set to false'.format(name))
- elif not sanitizers.contains(a)
- message('Not compiling @0@ because @1@ sanitizer is not available'.format(name, a))
- elif slow_tests
- exe = custom_target(
- name,
- output : name,
- depends : build,
- command : [env, 'ln', '-fs',
- join_paths(build.full_path(), b),
- '@OUTPUT@'],
- build_by_default : true)
- else
- message('Not compiling @0@ because slow-tests is set to false'.format(name))
- endif
- endif
- prev = name
+ have = run_command(check_compilation_sh,
+ cc.cmd_array(), '-x', 'c',
+ '-fsanitize=@0@'.format(sanitizer),
+ '-include', link_test_c).returncode() == 0
+ message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
- if want_tests != 'false' and slow_tests
- test(c, env, args : [exe.full_path(),
- join_paths(meson.source_root(),
- 'test/fuzz-regressions',
- p)])
+ if have
+ prev = ''
+ foreach p : fuzz_regression_tests
+ b = p.split('/')[-2]
+ c = p.split('/')[-1]
+
+ name = '@0@:@1@'.format(b, sanitizer)
+
+ if name != prev
+ if want_tests == 'false'
+ message('Not compiling @0@ because tests is set to false'.format(name))
+ elif slow_tests
+ exe = custom_target(
+ name,
+ output : name,
+ depends : build,
+ command : [env, 'ln', '-fs',
+ join_paths(build.full_path(), b),
+ '@OUTPUT@'],
+ build_by_default : true)
+ else
+ message('Not compiling @0@ because slow-tests is set to false'.format(name))
+ endif
+ endif
+ prev = name
+
+ if want_tests != 'false' and slow_tests
+ test('@0@:@1@:@2@'.format(b, c, sanitizer),
+ env,
+ args : [exe.full_path(),
+ join_paths(meson.source_root(),
+ 'test/fuzz-regressions',
+ p)])
+ endif
+ endforeach
endif
endforeach
+
############################################################
if git.found()