meson: add support for llvm-style code coverage

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2024-06-06 17:11:25 +01:00
parent 4dc78789da
commit f4f22d5e23
No known key found for this signature in database
GPG Key ID: D3A4405BE6CC17F4
3 changed files with 15 additions and 2 deletions

1
.gitignore vendored
View File

@ -72,6 +72,7 @@ doxygen/
*.orig
/tests/log
/tests/testcases/__pycache__/
*.profraw
# Subproject files
subprojects/libconfig

View File

@ -36,6 +36,15 @@ if get_option('sanitize')
endif
endif
if get_option('llvm_coverage')
if cc.get_id() != 'clang'
error('option \'llvm_coverage\' requires clang')
endif
coverage_flags = ['-fprofile-instr-generate', '-fcoverage-mapping']
add_global_arguments(coverage_flags, language: 'c')
add_global_link_arguments(coverage_flags, language: 'c')
endif
if get_option('modularize')
if not cc.has_argument('-fmodules')
error('option \'modularize\' requires clang')

View File

@ -12,6 +12,9 @@ option('compton', type: 'boolean', value: true, description: 'Install backwards
option('with_docs', type: 'boolean', value: false, description: 'Build documentation and man pages')
option('modularize', type: 'boolean', value: false, description: 'Build with clang\'s module system')
option('unittest', type: 'boolean', value: false, description: 'Enable unittests in the code')
# Experimental options
option('modularize', type: 'boolean', value: false, description: 'Build with clang\'s module system (experimental)')
option('llvm_coverage', type: 'boolean', value: false, description: 'Use LLVM source-based code coverage, instead of --coverage. Do not use with b_coverage.')