libvirt/tests/meson.build
Pavel Hrdina 401aa32fdb meson: tests: built utils static libraries
With the old build system we just list the source files directly for
each test, but this would not work as expected with Meson.

For every binary there is a separate directory with its object files
which would mean all the utils sources would be compiled repeatedly
for every test using them.

Having static libraries ensures that the utils sources are compiled
only once.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Neal Gompa <ngompa13@gmail.com>
2020-08-03 09:27:05 +02:00

173 lines
3.7 KiB
Meson

tests_dep = declare_dependency(
compile_args: [
'-Dabs_builddir="@0@"'.format(meson.current_build_dir()),
'-Dabs_top_builddir="@0@"'.format(meson.build_root()),
'-Dabs_srcdir="@0@"'.format(meson.current_source_dir()),
'-Dabs_top_srcdir="@0@"'.format(meson.source_root()),
] + coverage_flags + cc_flags_relaxed_frame_limit,
dependencies: [
apparmor_dep,
dlopen_dep,
glib_dep,
gnutls_dep,
libnl_dep,
libxml_dep,
rpc_dep,
sasl_dep,
selinux_dep,
xdr_dep,
yajl_dep,
],
include_directories: [
conf_inc_dir,
hypervisor_inc_dir,
libvirt_inc,
src_inc_dir,
top_inc_dir,
util_inc_dir,
],
link_args: libvirt_export_dynamic,
)
# mock_libs:
# each entry is a dictionary with following items:
# * name - mock library name which is also used as default source file name (required)
# * sources - override default sources based on name (optional, default [])
# * deps - additional dependencies (optional, default [])
mock_libs = [
{ 'name': 'domaincapsmock' },
{ 'name': 'shunload', 'sources': [ 'shunloadhelper.c' ] },
{ 'name': 'vircgroupmock' },
{ 'name': 'virdeterministichashmock' },
{ 'name': 'virfilecachemock' },
{ 'name': 'virhostcpumock' },
{ 'name': 'virhostdevmock' },
{ 'name': 'virnetdaemonmock' },
{ 'name': 'virnetdevmock' },
{ 'name': 'virnetserverclientmock' },
{ 'name': 'virpcimock' },
{ 'name': 'virportallocatormock' },
{ 'name': 'virprocessmock' },
{ 'name': 'virrandommock' },
]
if host_machine.system() == 'linux'
mock_libs += [
{ 'name': 'virfilemock' },
{ 'name': 'virnetdevbandwidthmock' },
{ 'name': 'virnumamock' },
{ 'name': 'virtestmock' },
{ 'name': 'virusbmock' },
]
endif
if conf.has('WITH_BHYVE')
mock_libs += [
{ 'name': 'bhyveargv2xmlmock' },
{ 'name': 'bhyvexml2argvmock' },
]
endif
if conf.has('WITH_DBUS')
mock_libs += [
{ 'name': 'virdbusmock', 'deps': [ dbus_dep ] },
]
endif
if conf.has('WITH_LIBXL')
mock_libs += [
{ 'name': 'xlmock', 'sources': [ 'libxlmock.c' ], 'deps': [ libxl_dep ] },
]
endif
if conf.has('WITH_NSS')
mock_libs += [
{ 'name': 'nssmock' },
]
endif
if conf.has('WITH_QEMU')
mock_libs += [
{ 'name': 'qemucaps2xmlmock' },
{ 'name': 'qemucapsprobemock' },
{ 'name': 'qemucpumock' },
{ 'name': 'qemuhotplugmock' },
{ 'name': 'qemuxml2argvmock' },
]
endif
if conf.has('WITH_SECDRIVER_SELINUX')
mock_libs += [
{ 'name': 'securityselinuxhelper' },
]
endif
foreach mock : mock_libs
shared_module(
mock['name'],
mock.get('sources', [ '@0@.c'.format(mock['name']) ]),
dependencies: [
tests_dep,
mock.get('deps', []),
],
link_with: [
libvirt_lib,
],
)
endforeach
# build libraries used by tests
test_utils_lib = static_library(
'test_utils',
[ 'testutils.c' ],
dependencies: [ tests_dep ],
)
if conf.has('WITH_LIBXL')
test_utils_xen_lib = static_library(
'test_utils_xen',
[ 'testutilsxen.c' ],
dependencies: [ tests_dep ],
)
else
test_utils_xen_lib = []
endif
if conf.has('WITH_LXC')
test_utils_lxc_lib = static_library(
'test_utils_lxc',
[ 'testutilslxc.c' ],
dependencies: [ tests_dep ],
)
else
test_utils_lxc_lib = []
endif
if conf.has('WITH_QEMU')
test_utils_qemu_lib = static_library(
'test_utils_qemu',
[ 'testutilsqemu.c' ],
dependencies: [ tests_dep ],
)
test_utils_qemu_monitor_lib = static_library(
'test_utils_qemu_monitor',
[ 'qemumonitortestutils.c', 'testutilsqemuschema.c' ],
dependencies: [ tests_dep ],
)
else
test_utils_qemu_lib = []
test_utils_qemu_monitor_lib = []
endif
test_file_wrapper_lib = static_library(
'test_file_wrapper',
[ 'virfilewrapper.c' ],
dependencies: [ tests_dep ],
)