aboutsummaryrefslogtreecommitdiff
path: root/meson.build
blob: ad0f7e4e007720971cef946aa15bc41926fb1686 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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()
)

gnome = import('gnome')
i18n = import('i18n')
cc = meson.get_compiler('c')

# 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
elif get_option('crypto-backend') == 'openssl'
    dep_openssl = dependency('openssl', required: true)
    crypto_backend = 'openssl'
elif get_option('crypto-backend') == 'gnu'
    dep_libgcrypt = dependency('libgcrypt', required: true)
    dep_gnutls = dependency('gnutls', required: get_option('plugin-ice'))
    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_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_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_libqrencode = dependency('libqrencode', disabler: true, required: get_option('plugin-omemo'))
dep_libsrtp2 = dependency('libsrtp2', disabler: true, required: true)
dep_libomemo_c = dependency('libomemo-c', disabler: true, required: get_option('plugin-omemo'))
dep_libsoup = dependency('libsoup-3.0')
dep_nice = dependency('nice', version: '>=0.1.15', disabler: true, required: get_option('plugin-ice'))
dep_m = meson.get_compiler('c').find_library('m', required: false)
dep_sqlite3 = dependency('sqlite3', version: '>=3.24')

dep_webrtc_audio_processing = dependency('webrtc-audio-processing-1', required: false)
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)
endif
if not dep_webrtc_audio_processing.found()
    dep_webrtc_audio_processing = disabler()
endif

default_install_rpath = ''
if get_option('set-install-rpath')
    default_install_rpath = get_option('prefix') / get_option('libdir')
endif

subdir('xmpp-vala')
subdir('libdino')
subdir('main')
subdir('plugins')