spice/meson.build
Frediano Ziglio 46cda65123 build: Remove GObject dependency
Not used anymore.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2020-05-01 06:58:09 +01:00

228 lines
7.0 KiB
Meson
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
# project definition
#
project('spice', 'c', 'cpp',
version : run_command('build-aux/git-version-gen', meson.source_root() + '/.tarball-version', check : true).stdout().strip(),
license : 'LGPLv2.1',
meson_version : '>= 0.48',
default_options : ['buildtype=debugoptimized',
'warning_level=2'])
message('Updating submodules')
run_command('build-aux/meson/check-spice-common', check : true)
#
# soversion
# The versioning is defined by the forumla (CURRENT-AGE.AGE.REVISION)
#
# XXX: KEEP IN SYNC WITH configure.ac file
#
# Follow the libtool manual for the so version:
# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
# - If the library source code has changed at all since the last update,
# then increment revision (c:r:a becomes c:r+1:a).
# - If any interfaces have been added, removed, or changed since the last update,
# increment current, and set revision to 0.
# - If any interfaces have been added since the last public release,
# then increment age.
# - If any interfaces have been removed or changed since the last public release,
# then set age to 0.
#
#
spice_server_current = 15
spice_server_revision = 0
spice_server_age = 14
spice_server_so_version = '@0@.@1@.@2@'.format(spice_server_current - spice_server_age,
spice_server_age,
spice_server_revision)
message('libspice.so version: ' + spice_server_so_version)
# some global vars
spice_server_global_cflags = ['-DSPICE_SERVER_INTERNAL',
'-DG_LOG_DOMAIN="Spice"',
'-Wno-sign-compare',
'-Wno-unused-parameter']
compiler = meson.get_compiler('c')
cxx_compiler = meson.get_compiler('cpp')
spice_server_config_data = configuration_data()
spice_server_include = [include_directories('.')]
spice_server_deps = [dependency('threads')]
spice_server_link_args = []
spice_server_requires = ''
spice_protocol_version='0.14.0'
#
# Spice common subproject
#
spice_common = subproject('spice-common',
default_options : [
'generate-code=server',
'spice-protocol-version=@0@'.format(spice_protocol_version),
])
spice_server_config_data.merge_from(spice_common.get_variable('spice_common_config_data'))
spice_server_deps += spice_common.get_variable('spice_common_server_dep')
spice_protocol_version = spice_common.get_variable('spice_protocol_version')
#
# check for system headers
#
headers = ['sys/time.h',
'execinfo.h',
'linux/sockios.h',
'pthread_np.h']
foreach header : headers
if compiler.has_header(header)
spice_server_config_data.set('HAVE_@0@'.format(header.underscorify().to_upper()), '1')
endif
endforeach
# TCP_KEEPIDLE definition in netinet/tcp.h
if compiler.has_header_symbol('netinet/tcp.h', 'TCP_KEEPIDLE')
spice_server_config_data.set('HAVE_TCP_KEEPIDLE', '1')
endif
#
# check for mandatory dependencies
#
glib_version = '2.38'
glib_version_info = '>= @0@'.format(glib_version)
pixman_version = '>= 0.17.7'
deps = {'glib-2.0' : glib_version_info,
'pixman-1' : pixman_version,
'openssl' : '>= 1.0.0'}
foreach dep, version : deps
spice_server_deps += dependency(dep, version : version)
endforeach
# TODO: specify minimum version for jpeg and zlib?
foreach dep : ['libjpeg', 'zlib']
spice_server_deps += dependency(dep)
endforeach
if host_machine.system() != 'windows'
foreach dep : ['rt', 'm']
spice_server_deps += compiler.find_library(dep)
endforeach
else
spice_server_deps += compiler.find_library('ws2_32')
endif
#
# Non-mandatory/optional dependencies
#
optional_deps = {'opus' : '>= 0.9.14'}
foreach dep, version : optional_deps
d = dependency(dep, required : get_option(dep), version : version)
if d.found()
spice_server_deps += d
spice_server_config_data.set('HAVE_@0@'.format(dep.underscorify().to_upper()), '1')
endif
endforeach
# gstreamer
spice_server_has_gstreamer = false
spice_server_gst_version = get_option('gstreamer')
if spice_server_gst_version != 'no'
gst_deps = ['gstreamer', 'gstreamer-base', 'gstreamer-app', 'gstreamer-video']
foreach dep : gst_deps
dep = '@0@-@1@'.format(dep, spice_server_gst_version)
spice_server_deps += dependency(dep)
endforeach
spice_server_deps += dependency('orc-0.4')
gst_def = 'HAVE_GSTREAMER'
if spice_server_gst_version == '1.0'
gst_def = 'HAVE_GSTREAMER_1_0'
endif
spice_server_config_data.set(gst_def, '1')
spice_server_has_gstreamer = true
endif
# lz4
spice_server_has_lz4 = false
if get_option('lz4')
lz4_dep = dependency('liblz4', required : false, version : '>= 129')
if not lz4_dep.found()
lz4_dep = dependency('liblz4', version : '>= 1.7.3')
endif
if compiler.has_function('LZ4_compress_fast_continue', dependencies : lz4_dep)
spice_server_config_data.set('HAVE_LZ4_COMPRESS_FAST_CONTINUE', '1')
endif
spice_server_deps += lz4_dep
spice_server_config_data.set('USE_LZ4', '1')
spice_server_has_lz4 = true
endif
# sasl
spice_server_has_sasl = false
if get_option('sasl')
spice_server_deps += dependency('libsasl2')
spice_server_config_data.set('HAVE_SASL', '1')
spice_server_has_sasl = true
endif
# smartcard check
spice_server_has_smartcard = false
smartcard_dep = dependency('libcacard', required : get_option('smartcard'), version : '>= 2.5.1')
if smartcard_dep.found()
spice_server_deps += smartcard_dep
spice_server_config_data.set('USE_SMARTCARD', '1')
spice_server_has_smartcard = true
spice_server_requires += 'libcacard >= 2.5.1 '
endif
#
# global C defines
#
glib_encoded_version = 'GLIB_VERSION_@0@'.format(glib_version.underscorify())
spice_server_global_cflags += ['-DGLIB_VERSION_MIN_REQUIRED=@0@'.format(glib_encoded_version),
'-DGLIB_VERSION_MAX_ALLOWED=@0@'.format(glib_encoded_version)]
add_project_arguments(compiler.get_supported_arguments(spice_server_global_cflags),
language : 'c')
spice_server_global_cxxflags = spice_server_global_cflags
spice_server_global_cxxflags += [
'-fno-exceptions',
'-Wno-suggest-final-methods',
'-Wno-suggest-final-types',
'-Wno-array-bounds',
'-Wno-narrowing',
'-Wno-missing-field-initializers',
'-Wno-deprecated-declarations',
]
add_project_arguments(cxx_compiler.get_supported_arguments(spice_server_global_cxxflags),
language : 'cpp')
#
# Subdirectories
#
subdir('server')
subdir('tools')
subdir('docs')
#
# write config.h
#
spice_server_config_data.set_quoted('VERSION', meson.project_version())
spice_server_config_data.set('SPICE_USE_SAFER_CONTAINEROF', '1')
if get_option('statistics')
spice_server_config_data.set('RED_STATISTICS', '1')
endif
# Minimal Win32 version
if host_machine.system() == 'windows'
spice_server_config_data.set('_WIN32_WINNT', '0x600')
endif
configure_file(output : 'config.h',
configuration : spice_server_config_data)