Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> --- data/meson.build | 16 ++++ icons/meson.build | 14 ++++ man/meson.build | 16 ++++ meson.build | 206 ++++++++++++++++++++++++++++++++++++++++++++++ meson_options.txt | 25 ++++++ po/meson.build | 2 + src/meson.build | 116 ++++++++++++++++++++++++++ tests/meson.build | 16 ++++ 8 files changed, 411 insertions(+) create mode 100644 data/meson.build create mode 100644 icons/meson.build create mode 100644 man/meson.build create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 po/meson.build create mode 100644 src/meson.build create mode 100644 tests/meson.build diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..f57e751 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,16 @@ +intltool = find_program('intltool-merge') +podir = join_paths(meson.source_root(), 'po') + +targets = {'remote-viewer.desktop' : 'applications', + 'remote-viewer.appdata.xml' : 'appdata', + 'virt-viewer-mime.xml' : 'mime/packages'} + +foreach target, dir : targets + style = target.split('.')[-1] + custom_target(target, + input : '@0@.in'.format(target), + output : target, + command : [intltool, '--@0@-style'.format(style), podir, '@INPUT@', '@OUTPUT@'], + install : true, + install_dir : join_paths(virt_viewer_datadir, dir)) +endforeach diff --git a/icons/meson.build b/icons/meson.build new file mode 100644 index 0000000..8a7741f --- /dev/null +++ b/icons/meson.build @@ -0,0 +1,14 @@ +dirs = [ + '16x16', + '22x22', + '24x24', + '32x32', + '48x48', + '256x256' +] + +foreach d : dirs + file = files('@0@/virt-viewer.png'.format(d)) + dir = join_paths(virt_viewer_datadir, 'icons', 'hicolor', d, 'apps') + install_data(file, install_dir : dir) +endforeach diff --git a/man/meson.build b/man/meson.build new file mode 100644 index 0000000..9d79bd0 --- /dev/null +++ b/man/meson.build @@ -0,0 +1,16 @@ +pod2man = find_program('pod2man') +manuals = ['remote-viewer', 'virt-viewer'] + +if pod2man.found() + foreach m : manuals + man = '@0@.1'.format(m) + pod = '@0@.pod'.format(m) + custom_target(man, + output : man, + input : pod, + install : true, + install_dir : join_paths(virt_viewer_datadir, 'man', 'man1'), + build_by_default : true, + command : [pod2man, '-c', 'Virtualization Support', '@INPUT@', '@OUTPUT@']) + endforeach +endif diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..4c6729d --- /dev/null +++ b/meson.build @@ -0,0 +1,206 @@ +project('virt-viewer', 'c', + version : '8.0', + license : 'GPLv2', + meson_vesrion : '>= 0.47.0') + +# +# globals +# +virt_viewer_deps = [] +virt_viewer_include = [include_directories('.')] +virt_viewer_config_data = configuration_data() +virt_viewer_package_name = meson.project_name() +virt_viewer_version = meson.project_version() +virt_viewer_datadir = join_paths(get_option('prefix'), get_option('datadir')) +virt_viewer_localedir = join_paths(virt_viewer_datadir, 'locale') + +virt_viewer_cflags = ['-DG_LOG_DOMAIN="@0@"'.format(virt_viewer_package_name), + '-Wall', + '-Wmissing-prototypes', + '-std=c99', + '-Wnested-externs', + '-Wpointer-arith', + '-Wextra', + '-Wshadow', + '-Wcast-align', + '-Wwrite-strings', + '-Waggregate-return', + '-Winline', + '-Wredundant-decls', + '-Wdeprecated-declarations', + '-Wno-sign-compare', + '-Wno-cast-function-type', + '-Werror'] + +compiler = meson.get_compiler('c') + +# dependency versions +glib2_version='2.38' +glib2_major_minor = glib2_version.split('.') +glib2_required = '>= @0@'.format(glib2_version) +glib2_encoded_version='GLIB_VERSION_@0@_@1@'.format(glib2_major_minor[0], glib2_major_minor[1]) + +gtk_version='3.12' +gtk_major_minor = gtk_version.split('.') +gtk_required = '>= @0@'.format(gtk_version) +gtk_encoded_version='GDK_VERSION_@0@_@1@'.format(gtk_major_minor[0], gtk_major_minor[1]) + +libxml2_required='>= 2.6.0' +libvirt_required='>= 0.10.0' +libvirt_glib_required='>= 0.1.8' +gtk_vnc_required='>= 0.4.0' +spice_gtk_required='>= 0.35' +spice_protocol_required='>= 0.12.7' +govirt_required='>= 0.3.3' +rest_required='>= 0.8' + +# +# check system headers +# +headers = ['sys/socket.h', 'sys/un.h', 'windows.h'] +foreach header : headers + if compiler.has_header(header) + virt_viewer_config_data.set('HAVE_@0@'.format(header.underscorify().to_upper()), '1') + endif +endforeach + +# +# check system functions +# +functions = ['fork', 'socketpair'] +foreach function : functions + if compiler.has_function(function) + virt_viewer_config_data.set('HAVE_@0@'.format(function.underscorify().to_upper()), '1') + endif +endforeach + +# +# Check for dependencies +# +virt_viewer_deps = [compiler.find_library('m')] + +# mandatory deps +deps = {'glib-2.0' : glib2_required, + 'gio-2.0' : glib2_required, + 'gthread-2.0' : glib2_required, + 'gmodule-export-2.0': glib2_required, + 'gtk+-3.0' : gtk_required, + 'libxml-2.0' : libxml2_required} + +foreach dep, version : deps + virt_viewer_deps += dependency(dep, version : version) +endforeach +virt_viewer_cflags += ['-DGLIB_VERSION_MIN_REQUIRED=@0@'.format(glib2_encoded_version), + '-DGLIB_VERSION_MAX_ALLOWED=@0@'.format(glib2_encoded_version), + '-DGDK_VERSION_MIN_REQUIRED=@0@'.format(gtk_encoded_version), + '-DGDK_VERSION_MAX_ALLOWED=@0@'.format(gtk_encoded_version)] + +# optional deps + +# libvirt +virt_viewer_has_libvirt = false + +libvirt_dep = dependency('libvirt', version : libvirt_required, required : get_option('libvirt')) +libvirt_glib_dep = dependency('libvirt-glib-1.0', version : libvirt_glib_required, required : get_option('libvirt')) + +if libvirt_dep.found() and libvirt_glib_dep.found() + virt_viewer_deps += [libvirt_dep, libvirt_glib_dep] + + if compiler.has_function('virDomainOpenGraphicsFD', dependencies : libvirt_dep) + virt_viewer_config_data.set('HAVE_VIR_DOMAIN_OPEN_GRAPHICS_FD', '1') + endif + + virt_viewer_config_data.set('HAVE_LIBVIRT', '1') + virt_viewer_has_libvirt = true +endif + +# gtk-vnc +virt_viewer_has_gtk_vnc = false +gtk_vnc_dep = dependency('gtk-vnc-2.0', version : gtk_vnc_required, required : get_option('gtk-vnc')) + +if gtk_vnc_dep.found() + virt_viewer_deps += gtk_vnc_dep + virt_viewer_config_data.set('HAVE_GTK_VNC', '1') + virt_viewer_has_gtk_vnc = true +endif + +# spice-gtk +virt_viewer_has_spice_gtk = false +spice_protocol_dep = dependency('spice-protocol', version : spice_protocol_required, required : get_option('spice-gtk')) +spice_glib_dep = dependency('spice-client-glib-2.0', version : spice_gtk_required, required : get_option('spice-gtk')) +spice_gtk_dep = dependency('spice-client-gtk-3.0', version : spice_gtk_required, required : get_option('spice-gtk')) + +if spice_protocol_dep.found() and spice_glib_dep.found() and spice_gtk_dep.found() + virt_viewer_deps += [spice_protocol_dep, spice_glib_dep, spice_gtk_dep] + virt_viewer_config_data.set('HAVE_SPICE_GTK', '1') + virt_viewer_has_spice_gtk = true +endif + +# ovirt +virt_viewer_has_ovirt = false +rest_dep = dependency('rest-0.7', version : rest_required, required : get_option('ovirt')) +ovirt_dep = dependency('govirt-1.0', version : govirt_required, required: get_option('ovirt')) + +if rest_dep.found() and ovirt_dep.found() + virt_viewer_deps += [rest_dep, ovirt_dep] + + if (compiler.has_function('ovirt_api_search_vms', dependencies : ovirt_dep) and + compiler.has_function('ovirt_vm_get_host', dependencies : ovirt_dep) and + compiler.has_function('ovirt_host_get_cluster', dependencies : ovirt_dep) and + compiler.has_function('ovirt_cluster_get_data_center', dependencies : ovirt_dep)) + virt_viewer_config_data.set('HAVE_OVIRT_DATA_CENTER', '1') + endif + + virt_viewer_config_data.set('HAVE_OVIRT', '1') + virt_viewer_has_ovirt = true +endif + +osid = get_option('osid') +if osid.strip() != '' + virt_viewer_config_data.set_quoted('REMOTE_VIEWER_OS_ID', osid) +endif + +buildid = get_option('buildid') +if buildid.strip() == '0' + buildid = '' +else + buildid = '-@0@'.format(buildid) +endif + +virt_viewer_config_data.set_quoted('BUILDID', '@0@'.format(buildid)) + +# +# global C defines +# +add_project_arguments(compiler.get_supported_arguments(virt_viewer_cflags), + language : 'c') + +# +# Subdirectories +# +subdir('src') +subdir('tests') +subdir('icons') +subdir('po') +subdir('data') +subdir('man') + +# +# Write config.h +# + +config_data = {'PACKAGE' : virt_viewer_package_name, + 'GETTEXT_PACKAGE' : virt_viewer_package_name, + 'VERSION' : virt_viewer_version, + 'PACKAGE_VERSION' : virt_viewer_version, + 'LOCALE_DIR' : virt_viewer_localedir} + +foreach key, value : config_data + virt_viewer_config_data.set_quoted(key, value) +endforeach + +virt_viewer_config_data.set('_GNU_SOURCE', '') + +configure_file(output : 'config.h', + install : false, + configuration : virt_viewer_config_data) diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..cb39516 --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,25 @@ +option('libvirt', + type : 'feature', + description: 'Enable libvirt') + +option('gtk-vnc', + type : 'feature', + description: 'Enable gtk-vnc') + +option('spice-gtk', + type : 'feature', + description: 'Enable spice-gtk') + +option('ovirt', + type : 'feature', + description: 'Enable ovirt') + +option('osid', + type : 'string', + description: 'OS ID for this build') + +option('buildid', + type : 'string', + value : '0', + description: 'Set additional build version details') + diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000..a2a36b8 --- /dev/null +++ b/po/meson.build @@ -0,0 +1,2 @@ +i18n = import('i18n') +i18n.gettext('virt-viewer') diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..29026f5 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,116 @@ +virt_viewer_include += [include_directories('.')] +gnome = import('gnome') + +virt_viewer_gresource = files('resources/virt-viewer.gresource.xml') +virt_viewer_resources = gnome.compile_resources('virt-viewer-resources', + virt_viewer_gresource, + source_dir : 'resources', + c_name : 'virt_viewer') +virt_viewer_enums = gnome.mkenums_simple('virt-viewer-enums', sources : ['virt-viewer-display.h']) + +# libvirt-viewer-util +libvirt_viewer_util_sources = [ + 'virt-viewer-util.h', + 'virt-viewer-util.c', +] + +libvirt_viewer_util_lib = static_library('virt-viewer-util', libvirt_viewer_util_sources, + include_directories : virt_viewer_include, + dependencies : virt_viewer_deps, + install : false) + +# libvirt-viewer +libvirt_viewer_sources = [ + virt_viewer_resources, + virt_viewer_enums, + 'glib-compat.h', + 'glib-compat.c', + 'virt-viewer-auth.h', + 'virt-viewer-auth.c', + 'virt-viewer-app.h', + 'virt-viewer-app.c', + 'virt-viewer-file.h', + 'virt-viewer-file.c', + 'virt-viewer-session.h', + 'virt-viewer-session.c', + 'virt-viewer-display.h', + 'virt-viewer-display.c', + 'virt-viewer-notebook.h', + 'virt-viewer-notebook.c', + 'virt-viewer-window.h', + 'virt-viewer-window.c', + 'virt-viewer-vm-connection.h', + 'virt-viewer-vm-connection.c', + 'virt-viewer-timed-revealer.c', + 'virt-viewer-timed-revealer.h', +] + +if virt_viewer_has_gtk_vnc + libvirt_viewer_sources += ['virt-viewer-session-vnc.h', + 'virt-viewer-session-vnc.c', + 'virt-viewer-display-vnc.h', + 'virt-viewer-display-vnc.c'] +endif + +if virt_viewer_has_spice_gtk + libvirt_viewer_sources += ['virt-viewer-session-spice.h', + 'virt-viewer-session-spice.c', + 'virt-viewer-display-spice.h', + 'virt-viewer-display-spice.c', + 'virt-viewer-file-transfer-dialog.h', + 'virt-viewer-file-transfer-dialog.c'] +endif + +if virt_viewer_has_ovirt + libvirt_viewer_sources += ['ovirt-foreign-menu.h', + 'ovirt-foreign-menu.c', + 'remote-viewer-iso-list-dialog.c', + 'remote-viewer-iso-list-dialog.h'] +endif + +libvirt_viewer_lib = static_library('virt-viewer', libvirt_viewer_sources, + include_directories : virt_viewer_include, + dependencies : virt_viewer_deps, + install: false) + +# remote-viewer +remote_viewer_sources = [ + virt_viewer_enums[1], + 'remote-viewer.h', + 'remote-viewer.c', + 'remote-viewer-connect.c', + 'remote-viewer-connect.h', + 'remote-viewer-main.c', +] + +executable('remote-viewer', + remote_viewer_sources, + include_directories : virt_viewer_include, + dependencies : virt_viewer_deps, + link_with : [libvirt_viewer_util_lib, libvirt_viewer_lib], + install : false) + +# virt-viewer +virt_viewer_sources = [ + virt_viewer_enums[1], + 'virt-viewer.h', + 'virt-viewer.c', + 'virt-viewer-main.c', +] + +if virt_viewer_has_libvirt + executable('virt-viewer', + virt_viewer_sources, + include_directories : virt_viewer_include, + dependencies : virt_viewer_deps, + link_with : [libvirt_viewer_util_lib, libvirt_viewer_lib], + install : true) +endif + +# virt-viewer.rc +virt_viewer_rc = configuration_data() +virt_viewer_rc.set('VERSION', virt_viewer_version) +virt_viewer_rc.set('PACKAGE_STRING', '@0@ @1@'.format(virt_viewer_package_name, virt_viewer_version)) +configure_file(input : 'virt-viewer.rc.in', + output : 'virt-viewer.rc', + configuration : virt_viewer_rc) diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 0000000..3e41a7f --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,16 @@ +tests = { + 'test-version-compare' : [], + 'test-monitor-mapping' : [], + 'test-hotkeys' : [libvirt_viewer_lib], + 'test-monitor-alignment' : [], +} + +foreach t, libs : tests + test(t, + executable(t, + ['@0@.c'.format(t), virt_viewer_enums[1]], + include_directories : virt_viewer_include, + dependencies : virt_viewer_deps, + link_with : [libvirt_viewer_util_lib, libs], + install : false)) +endforeach -- 2.17.1 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list