mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
tests: Compile virgdbusmock.c with GIO_COMPILATION enabled
There are couple of g_dbus_*() functions we provide an
alternative implementation for in our virgdbusmock.c. However,
these functions are declared in gio/gdbusconnection.h as:
GIO_AVAILABLE_IN_ALL
GDBusConnection *g_bus_get_sync (GBusType bus_type,
GCancellable *cancellable,
GError **error);
where GIO_AVAILABLE_IN_ALL is declared as (in
/gio/gio-visibility.h):
#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(GIO_STATIC_COMPILATION)
# define _GIO_EXPORT __declspec(dllexport)
# define _GIO_IMPORT __declspec(dllimport)
#elif __GNUC__ >= 4
# define _GIO_EXPORT __attribute__((visibility("default")))
# define _GIO_IMPORT
#else
# define _GIO_EXPORT
# define _GIO_IMPORT
#endif
#ifdef GIO_COMPILATION
# define _GIO_API _GIO_EXPORT
#else
# define _GIO_API _GIO_IMPORT
#endif
#define _GIO_EXTERN _GIO_API extern
#define GIO_AVAILABLE_IN_ALL _GIO_EXTERN
Now, on mingw the functions we mock are declared with dllimport
attribute which makes the compiler unhappy:
../tests/virgdbusmock.c:25:24: error: 'g_bus_get_sync'
redeclared without dllimport attribute: previous dllimport
ignored [-Werror=attributes]
The solution is to do what glib does when it compiles the gio
module: set GIO_COMPILATION macro which in turn annotates the
function with dllexport attribute.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
@@ -65,6 +65,10 @@ else
|
||||
endif
|
||||
|
||||
|
||||
virgdbusmock_dep = declare_dependency(
|
||||
compile_args: [ '-DGIO_COMPILATION' ]
|
||||
)
|
||||
|
||||
# mock_libs:
|
||||
# each entry is a dictionary with following items:
|
||||
# * name - mock library name which is also used as default source file name (required)
|
||||
@@ -78,7 +82,7 @@ mock_libs = [
|
||||
{ 'name': 'virdnsmasqmock' },
|
||||
{ 'name': 'virfilecachemock' },
|
||||
{ 'name': 'virfirewallmock' },
|
||||
{ 'name': 'virgdbusmock' },
|
||||
{ 'name': 'virgdbusmock', 'deps': [ virgdbusmock_dep] },
|
||||
{ 'name': 'virhostcpumock' },
|
||||
{ 'name': 'virhostdevmock' },
|
||||
{ 'name': 'virnetdaemonmock' },
|
||||
|
||||
Reference in New Issue
Block a user