diff options
| author | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
|---|---|---|
| committer | frosty <frostinator33@airmail.cc> | 2026-10-26 10:21:57 -0400 |
| commit | 74aecd8b0986d07b50b7ce310d64e645b8b54e38 (patch) | |
| tree | 560e6434f183eb54cd779936f3a4c9575146a066 /meson.build | |
| parent | 3d7e90d401da02d430a87db0ec7e1db3a6f1a68f (diff) | |
| parent | 4436001bb361ad4f9e4e05819214ecf0ea77c063 (diff) | |
Merge 'upstream/master'
Diffstat (limited to 'meson.build')
| -rw-r--r-- | meson.build | 133 |
1 files changed, 89 insertions, 44 deletions
diff --git a/meson.build b/meson.build index 94580587..205553e9 100644 --- a/meson.build +++ b/meson.build @@ -1,44 +1,102 @@ -project('Dino', 'c', 'cpp', 'vala', license: 'GPL-3.0', meson_version: '>=1.3.0') +project( + 'Dino', + 'c', 'cpp', 'vala', + license: 'GPL-3.0', + meson_version: '>=1.3.0', + version: run_command( + find_program('python3', required: true), # Can't use import('python').find_installation() here + meson.current_source_dir() / 'build-aux' / 'version.py', + meson.current_source_dir() / 'VERSION', + '--git-repo', meson.current_source_dir(), + '--git', find_program('git', required: false), + check: true + ).stdout().strip() +) -fs = import('fs') gnome = import('gnome') i18n = import('i18n') -python = import('python') +cc = meson.get_compiler('c') -# plugin_crypto is enabled if any of the crypto plugins is enabled, auto if -# none of them are explicitly enabled but at least one is set to auto, or -# disabled if all of them are disabled. -plugin_crypto = get_option('plugin-ice') -foreach plugin : ['plugin-ice', 'plugin-omemo', 'plugin-rtp'] - if get_option(plugin).enabled() and not plugin_crypto.enabled() - plugin_crypto = get_option(plugin) - elif get_option(plugin).allowed() and not plugin_crypto.allowed() - plugin_crypto = get_option(plugin) +vala_version_required = '0.56.14' +vala = meson.get_compiler('vala') +if not vala.version().version_compare('>= @0@'.format(vala_version_required)) + error('valac >= @0@ required!'.format(vala_version_required)) +endif + +# Trigger recomnfiguration on version change +version_stamp = configure_file( + command: [ + # Keep in sync with above + find_program('python3', required: true), + meson.current_source_dir() / 'build-aux' / 'version.py', + meson.current_source_dir() / 'VERSION', + '--git-repo', meson.current_source_dir(), + '--git', find_program('git', required: false), + # Trigger depfile generation + '--depfile', '@DEPFILE@' + ], + input: 'build-aux' / 'version.py', + output: 'version.stamp', + depfile: 'version.d' +) + +# Reduce build time noise +vala_c_args = cc.get_supported_arguments([ + '-Wno-address', + '-Wno-deprecated-declarations', + '-Wno-discarded-qualifiers', + '-Wno-duplicate-decl-specifier', + '-Wno-unused-but-set-variable', + '-Wno-unused-function', + '-Wno-unused-label', + '-Wno-unused-value', + '-Wno-unused-variable', +]) + +if get_option('crypto-backend') == 'auto' + # Prefer libgcrypt/gnutls over openssl because glib-networking is usually + # built with gnutls anyway. + dep_libgcrypt = dependency('libgcrypt', required: false) + dep_gnutls = dependency('gnutls', required: false) + if dep_libgcrypt.found() and dep_gnutls.found() + crypto_backend = 'gnu' + else + dep_openssl = dependency('openssl', required: false) + if dep_openssl.found() + crypto_backend = 'openssl' + else + error('Could not find crypto backend automatically. Specify explicitly via crypto-backend option.') + endif endif -endforeach +elif get_option('crypto-backend') == 'openssl' + dep_openssl = dependency('openssl') + crypto_backend = 'openssl' +elif get_option('crypto-backend') == 'gnu' + dep_libgcrypt = dependency('libgcrypt') + dep_gnutls = dependency('gnutls') + crypto_backend = 'gnu' +endif dep_gdk_pixbuf = dependency('gdk-pixbuf-2.0') dep_gee = dependency('gee-0.8') dep_gio = dependency('gio-2.0') -dep_glib = dependency('glib-2.0') -dep_gnutls = dependency('gnutls', disabler: true, required: get_option('plugin-ice')) +dep_glib = dependency('glib-2.0', version: '>=2.66') dep_gmodule = dependency('gmodule-2.0') -dep_gpgme = dependency('gpgme', disabler: true, required: get_option('plugin-openpgp')) -dep_gstreamer = dependency('gstreamer-1.0', disabler: true, required: get_option('plugin-rtp')) -dep_gstreamer_app = dependency('gstreamer-app-1.0', disabler: true, required: get_option('plugin-rtp')) -dep_gstreamer_audio = dependency('gstreamer-audio-1.0', disabler: true, required: get_option('plugin-rtp')) -dep_gstreamer_rtp = dependency('gstreamer-rtp-1.0', disabler: true, required: get_option('plugin-rtp')) -dep_gstreamer_video = dependency('gstreamer-video-1.0', disabler: true, required: get_option('plugin-rtp')) -dep_gtk4 = dependency('gtk4') +dep_gpgme = dependency('gpgme', disabler: true, required: get_option('openpgp')) +dep_gstreamer = dependency('gstreamer-1.0', version: '>=1.20', required: get_option('rtp')) +dep_gstreamer_app = dependency('gstreamer-app-1.0', version: '>=1.20', required: get_option('rtp')) +dep_gstreamer_audio = dependency('gstreamer-audio-1.0', version: '>=1.20', required: get_option('rtp')) +dep_gstreamer_rtp = dependency('gstreamer-rtp-1.0', version: '>=1.20', required: get_option('rtp')) +dep_gstreamer_video = dependency('gstreamer-video-1.0', version: '>=1.20', required: get_option('rtp')) +dep_gtk4 = dependency('gtk4', version: '>=4.14') dep_icu_uc = dependency('icu-uc') dep_libadwaita = dependency('libadwaita-1', version: '>=1.5') dep_libcanberra = dependency('libcanberra', disabler: true, required: get_option('plugin-notification-sound')) -dep_libgcrypt = dependency('libgcrypt', disabler: true, required: plugin_crypto) -dep_libqrencode = dependency('libqrencode', disabler: true, required: get_option('plugin-omemo')) -dep_libsrtp2 = dependency('libsrtp2', disabler: true, required: plugin_crypto) -dep_libomemo_c = dependency('libomemo-c', disabler: true, required: get_option('plugin-omemo')) -dep_libsoup = dependency('libsoup-3.0', disabler: true, required: get_option('plugin-http-files')) -dep_nice = dependency('nice', version: '>=0.1.15', disabler: true, required: get_option('plugin-ice')) +dep_libqrencode = dependency('libqrencode', disabler: true, required: get_option('omemo')) +dep_libsrtp2 = dependency('libsrtp2') +dep_libomemo_c = dependency('libomemo-c', disabler: true, required: get_option('omemo')) +dep_libsoup = dependency('libsoup-3.0') +dep_nice = dependency('nice', version: '>=0.1.15') dep_m = meson.get_compiler('c').find_library('m', required: false) dep_sqlite3 = dependency('sqlite3', version: '>=3.24') @@ -47,21 +105,10 @@ if not dep_webrtc_audio_processing.found() dep_webrtc_audio_processing = dependency('webrtc-audio-processing', version: ['>=0.2'], required: false) endif if not dep_webrtc_audio_processing.found() - dep_webrtc_audio_processing = dependency('webrtc-audio-processing-2', required: false) + dep_webrtc_audio_processing = dependency('webrtc-audio-processing-2', required: false, disabler: true) endif -if not dep_webrtc_audio_processing.found() - dep_webrtc_audio_processing = disabler() -endif - -prog_git = find_program('git', required: false) -prog_python = python.find_installation() - -if import('fs').is_file('VERSION') and meson.version().version_compare('>=1.4.0') - version_file = files('VERSION')[0] - version_file_path = version_file.full_path() -else - version_file = 'invalid' - version_file_path = meson.current_source_dir() / 'VERSION' +if not dep_webrtc_audio_processing.found() and get_option('voice-processing').enabled() + error('No compatible webrtc-audio-processing found, but voice-processing option set to enabled.') endif default_install_rpath = '' @@ -69,9 +116,7 @@ if get_option('set-install-rpath') default_install_rpath = get_option('prefix') / get_option('libdir') endif -subdir('qlite') subdir('xmpp-vala') subdir('libdino') subdir('main') -subdir('crypto-vala') subdir('plugins') |
