mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00

This heavily changes the API for the client. The goal here is to move the logic to construct the history to show in the daemon and not the client. This has several advantages: 1. Logic is common across every platforms, so bugs should not be platform-specific 2. Client got less logic 3. Signal are simplified, if an edition comes, "MessageUpdated" will be triggered instead MessageReceived. 4. Some tests are added for linearizing the history. 5. Search on edition is fixed. Tests got heavily re-written, but the content didn't change (2 tests are added, the rest is simplification). GitLab: #831 Change-Id: Ie7c81077067e9e49db1dd396829c9225c0512c16
190 lines
6.8 KiB
Meson
190 lines
6.8 KiB
Meson
project('jami-daemon', ['c', 'cpp'],
|
|
version: '14.0.0',
|
|
license: 'GPL3+',
|
|
default_options: ['cpp_std=gnu++17', 'buildtype=debugoptimized'],
|
|
meson_version:'>= 0.56'
|
|
)
|
|
|
|
modpkgconfig = import('pkgconfig')
|
|
|
|
if host_machine.system() == 'darwin'
|
|
add_languages('objcpp')
|
|
endif
|
|
|
|
#################################################
|
|
# Required dependencies
|
|
#################################################
|
|
depthreads = dependency('threads')
|
|
depopendht = dependency('opendht', version: '>= 2.1.0')
|
|
depdhtnet = dependency('dhtnet')
|
|
depgnutls = dependency('gnutls', version: '>= 3.6.7')
|
|
depnettle = dependency('nettle', version: '>= 3.0.0')
|
|
deplibpjproject = dependency('libpjproject') # a custom fork, see contrib/src/pjproject/rules.mak
|
|
deplibgit2 = dependency('libgit2', version: '>= 1.1.0')
|
|
deplibsecp256k1 = dependency('libsecp256k1', version: '>= 0.1')
|
|
deplibavcodec = dependency('libavcodec', version: '>= 56.60.100')
|
|
deplibavfilter = dependency('libavfilter', version: '>= 5.40.101')
|
|
deplibavdevice = dependency('libavdevice', version: '>= 56.4.100')
|
|
deplibavformat = dependency('libavformat', version: '>= 56.40.101')
|
|
deplibswscale = dependency('libswscale', version: '>= 3.1.101')
|
|
deplibswresample = dependency('libswresample', version: '>= 1.2.101')
|
|
deplibavutil = dependency('libavutil', version: '>= 55.75.100')
|
|
depfmt = dependency('fmt', version: '>= 5.3')
|
|
depyamlcpp = dependency('yaml-cpp', version: '>= 0.5.1')
|
|
depjsoncpp = dependency('jsoncpp', version: '>= 1.6.5')
|
|
depzlib = dependency('zlib')
|
|
|
|
if get_option('interfaces').contains('dbus')
|
|
depsdbuscpp = dependency('sdbus-c++', version: '>= 1.2.0')
|
|
progsdbuscppxml2cpp = find_program('sdbus-c++-xml2cpp', native: true)
|
|
endif
|
|
|
|
if get_option('interfaces').contains('nodejs')
|
|
progswig = find_program('swig', native: true)
|
|
prognodegyp = find_program('node-gyp', native: true)
|
|
endif
|
|
|
|
if get_option('tests')
|
|
depcppunit = dependency('cppunit', version: '>= 1.12')
|
|
endif
|
|
|
|
#################################################
|
|
# Optional dependencies and configuration
|
|
#################################################
|
|
progpod2man = find_program('pod2man', native: true, required: false)
|
|
|
|
conf = configuration_data()
|
|
conf.set_quoted('PACKAGE', 'jami')
|
|
conf.set_quoted('PACKAGE_NAME', 'Jami Daemon')
|
|
conf.set_quoted('PACKAGE_VERSION', meson.project_version())
|
|
conf.set_quoted('PACKAGE_STRING', 'Jami Daemon ' + meson.project_version())
|
|
conf.set_quoted('JAMI_DATADIR', get_option('datadir') / 'jami')
|
|
|
|
depopensl = meson.get_compiler('cpp').find_library('OpenSLES', has_headers: 'SLES/OpenSLES.h', required: get_option('opensl'))
|
|
conf.set10('HAVE_OPENSL', depopensl.found())
|
|
|
|
depalsa = dependency('alsa', version: '>= 1.0', required: get_option('alsa'))
|
|
conf.set10('HAVE_ALSA', depalsa.found())
|
|
|
|
deplibpulse = dependency('libpulse', version: '>= 0.9.15', required: get_option('pulseaudio'))
|
|
conf.set10('HAVE_PULSE', deplibpulse.found())
|
|
|
|
depjack = dependency('jack', required: get_option('jack'))
|
|
conf.set10('HAVE_JACK', depjack.found())
|
|
|
|
depportaudio = dependency('portaudio-2.0', required: get_option('portaudio'))
|
|
conf.set10('HAVE_PORTAUDIO', depportaudio.found())
|
|
|
|
depopenssl = dependency('openssl', required: get_option('name_service'))
|
|
conf.set10('HAVE_RINGNS', depopenssl.found())
|
|
|
|
depwebrtcap = dependency('webrtc-audio-processing', required: get_option('webrtc_ap'))
|
|
conf.set10('HAVE_WEBRTC_AP', depwebrtcap.found())
|
|
|
|
depspeexdsp = dependency('speexdsp', required: get_option('speex_ap'))
|
|
conf.set10('HAVE_SPEEXDSP', depspeexdsp.found())
|
|
|
|
if get_option('video')
|
|
conf.set('ENABLE_VIDEO', true)
|
|
if host_machine.system() == 'linux' and meson.get_compiler('cpp').get_define('__ANDROID__') != '1'
|
|
deplibudev = dependency('libudev')
|
|
endif
|
|
|
|
if get_option('hw_acceleration')
|
|
conf.set('RING_ACCEL', true)
|
|
conf.set('ENABLE_VIDEOTOOLBOX', host_machine.system() == 'darwin')
|
|
else
|
|
conf.set('RING_ACCEL', false)
|
|
conf.set('ENABLE_VIDEOTOOLBOX', false)
|
|
endif
|
|
else
|
|
conf.set('ENABLE_VIDEO', false)
|
|
conf.set('RING_ACCEL', false)
|
|
conf.set('ENABLE_VIDEOTOOLBOX', false)
|
|
endif
|
|
|
|
if get_option('plugins')
|
|
conf.set('ENABLE_PLUGIN', true)
|
|
if host_machine.system() == 'darwin'
|
|
depminizip = dependency('minizip', version: '>= 3.0.0')
|
|
else
|
|
deplibarchive = dependency('libarchive', version: '>= 3.4.0')
|
|
endif
|
|
depdl = meson.get_compiler('cpp').find_library('dl', required: false)
|
|
else
|
|
conf.set('ENABLE_PLUGIN', false)
|
|
endif
|
|
|
|
if get_option('tracepoints')
|
|
conf.set('ENABLE_TRACEPOINTS', true)
|
|
deplttngust = dependency('lttng-ust', version: '>= 2.13')
|
|
else
|
|
conf.set('ENABLE_TRACEPOINTS', false)
|
|
endif
|
|
|
|
conf.set10('HAVE_COREAUDIO', host_machine.system() == 'darwin')
|
|
conf.set('ENABLE_SHM', get_option('interfaces').contains('dbus'))
|
|
|
|
configure_file(
|
|
output: 'config.h',
|
|
configuration: conf
|
|
)
|
|
add_project_arguments('-DHAVE_CONFIG_H', language: ['c', 'cpp'])
|
|
|
|
#################################################
|
|
# Build targets
|
|
#################################################
|
|
add_project_arguments('-DLIBJAMI_BUILD', language: ['c', 'cpp'])
|
|
if get_option('default_library') != 'static'
|
|
add_project_arguments('-Djami_EXPORTS', language: ['c', 'cpp'])
|
|
endif
|
|
|
|
add_project_arguments('-DASIO_STANDALONE', language: ['c', 'cpp'])
|
|
add_project_arguments('-DMSGPACK_NO_BOOST', language: ['c', 'cpp'])
|
|
|
|
subdir('src')
|
|
|
|
if get_option('interfaces').contains('dbus')
|
|
subdir('bin' / 'dbus')
|
|
endif
|
|
|
|
if get_option('interfaces').contains('nodejs')
|
|
subdir('bin' / 'nodejs')
|
|
endif
|
|
|
|
if get_option('tests')
|
|
subdir('test')
|
|
endif
|
|
|
|
#################################################
|
|
# Resources and metafiles
|
|
#################################################
|
|
subdir('ringtones')
|
|
|
|
if host_machine.system() == 'linux' and meson.get_compiler('cpp').get_define('__ANDROID__') != '1'
|
|
provides_content = ''
|
|
if get_option('interfaces').contains('dbus')
|
|
provides_content += ' <dbus type="user">cx.ring.Ring</dbus>'
|
|
endif
|
|
if get_option('interfaces').contains('library')
|
|
provides_content += (provides_content == '')? '' : '\n'
|
|
if get_option('default_library') == 'static'
|
|
provides_content += ' <library>libjami.a</library>'
|
|
elif get_option('default_library') == 'shared'
|
|
provides_content += ' <library>libjami.so</library>'
|
|
else
|
|
provides_content += ' <library>libjami.so</library>\n'
|
|
provides_content += ' <library>libjami.a</library>'
|
|
endif
|
|
endif
|
|
if provides_content != ''
|
|
configure_file(
|
|
configuration: {'PROVIDES_CONTENT': provides_content},
|
|
input: 'net.jami.daemon.metainfo.xml.in',
|
|
output: 'net.jami.daemon.metainfo.xml',
|
|
install: true,
|
|
install_dir: get_option('datadir') / 'metainfo'
|
|
)
|
|
endif
|
|
endif
|