blob: b54dede11c57c250cb5812f4a9eb488e47fc9f2b [file] [log] [blame]
project(
'libvfio-user',
'c',
version: '0.0.1',
license: 'BSD-3-Clause',
meson_version: '>= 0.53.0',
default_options: [
'buildtype=debug',
'c_std=gnu99',
'warning_level=2',
# clang with dwarf-5 can break valgrind
'c_args=-gdwarf-4',
],
)
opt_rpath = get_option('rpath')
opt_tran_pipe = get_option('tran-pipe')
opt_debug_logs = get_option('debug-logs')
opt_sanitizers = get_option('b_sanitize')
opt_debug = get_option('debug')
opt_shadow_ioeventfd = get_option('shadow-ioeventfd')
opt_debug_sgl = get_option('debug-sgl')
cc = meson.get_compiler('c')
prefix = get_option('prefix')
libdir = prefix / get_option('libdir')
if prefix == '/usr' and not opt_rpath.enabled()
rpathdir = ''
else
rpathdir = libdir
endif
thread_dep = dependency('threads')
dl_dep = cc.find_library('dl', required: true)
json_c_version = '0.11'
json_c_dep = dependency('json-c', version: '>=' + json_c_version)
cmocka_version = ''
cmocka_dep = dependency('cmocka', version: '>=' + cmocka_version)
pytest = find_program('pytest-3', required: false)
flake8 = find_program('flake8', required: false)
misspell_fixer = find_program('misspell-fixer', required: false)
rstlint = find_program('restructuredtext-lint', required: false)
valgrind = find_program('valgrind', required: false)
common_cflags = [
'-D_GNU_SOURCE',
]
if opt_debug
common_cflags += '-Werror'
endif
if opt_debug_logs.enabled() or (not opt_debug_logs.disabled() and opt_debug)
common_cflags += ['-DDEBUG']
endif
if opt_shadow_ioeventfd
common_cflags += ['-DSHADOW_IOEVENTFD']
endif
if opt_debug_sgl
common_cflags += ['-DDEBUG_SGL']
endif
if get_option('warning_level') == '2'
# -Wall is set for 'warning_level>=1'
# -Wextra is set for 'warning_level>=2'
common_cflags += cc.get_supported_arguments([
'-Wno-missing-field-initializers',
'-Wmissing-declarations',
'-Wwrite-strings',
])
endif
subdir('include')
subdir('lib')
subdir('samples')
subdir('test')
subdir('docs')