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')