From 5b69b60c197695579fd48abaa81c39b9984f1cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 21 Apr 2022 16:48:16 +0100 Subject: build: introduce Meson build file rules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Meson build system used by many other virt projects (QEMU, libvirt and others) is easier to understand & maintain rules for than cmake, guiding towards best practice. Signed-off-by: Daniel P. Berrangé --- meson.build | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 meson.build (limited to 'meson.build') diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..726d185 --- /dev/null +++ b/meson.build @@ -0,0 +1,67 @@ +project( + 'libvfio-user', + 'c', + version: '0.0.1', + license: 'BSD-3-Clause', + meson_version: '>= 0.53.0', + default_options: [ + 'buildtype=debugoptimized', + 'c_std=gnu99', + 'warning_level=2', + ], +) + +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') + +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) +rstlint = find_program('restructuredtext-lint', required: false) +valgrind = find_program('valgrind', required: false) + +common_cflags = [ + '-D_GNU_SOURCE', +] + +if opt_debug_logs.enabled() or (not opt_debug_logs.disabled() and opt_debug) + common_cflags += ['-DDEBUG'] +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', + ]) +endif + +subdir('include') +subdir('lib') +subdir('samples') +subdir('test') +subdir('docs') -- cgit v1.1