build-sys: meson: Fix 2 cases of joining paths w/o join_paths
[platform/upstream/pulseaudio.git] / src / modules / meson.build
1 subdir('rtp')
2
3 # module name, sources, [headers, extra flags, extra deps, extra libs]
4 all_modules = [
5   [ 'module-allow-passthrough', 'module-allow-passthrough.c' ],
6   [ 'module-always-sink', 'module-always-sink.c' ],
7   [ 'module-always-source', 'module-always-source.c' ],
8   [ 'module-augment-properties', 'module-augment-properties.c' ],
9 #  [ 'module-bonjour-publish', 'macosx/module-bonjour-publish.c' ],
10   [ 'module-card-restore', 'module-card-restore.c' ],
11   [ 'module-cli', 'module-cli.c', [], [], [], libcli ],
12   [ 'module-cli-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_TCP_SOCKETS'], [], libprotocol_cli ],
13   [ 'module-cli-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_UNIX_SOCKETS'], [], libprotocol_cli ],
14   [ 'module-combine', 'module-combine.c' ],
15   [ 'module-combine-sink', 'module-combine-sink.c' ],
16 #  [ 'module-coreaudio-detect', 'macosx/module-coreaudio-detect.c' ],
17 #  [ 'module-coreaudio-device', 'macosx/module-coreaudio-device.c' ],
18   [ 'module-default-device-restore', 'module-default-device-restore.c', [], [], [], libprotocol_native ],
19   [ 'module-detect', 'module-detect.c' ],
20   [ 'module-device-manager', 'module-device-manager.c', [], [], [], libprotocol_native ],
21   [ 'module-device-restore', 'module-device-restore.c', [], [], [dbus_dep], libprotocol_native ],
22 #  [ 'module-esound-compat-spawnfd', 'module-esound-compat-spawnfd.c' ],
23 #  [ 'module-esound-compat-spawnpid', 'module-esound-compat-spawnpid.c' ],
24 #  [ 'module-esound-protocol-tcp', 'module-protocol-stub.c' ],
25 #  [ 'module-esound-protocol-unix', 'module-protocol-stub.c' ],
26 #  [ 'module-esound-sink', 'module-esound-sink.c' ],
27   [ 'module-filter-apply', 'module-filter-apply.c' ],
28   [ 'module-filter-heuristics', 'module-filter-heuristics.c' ],
29 #  [ 'module-gconf', 'gconf/module-gconf.c' ],
30   [ 'module-http-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_TCP_SOCKETS'], [], libprotocol_http ],
31   [ 'module-http-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_UNIX_SOCKETS'], [], libprotocol_http ],
32   [ 'module-intended-roles', 'module-intended-roles.c' ],
33   [ 'module-ladspa-sink', 'module-ladspa-sink.c', 'ladspa.h', ['-DLADSPA_PATH="' + join_paths(libdir, 'ladspa') + ':/usr/local/lib/ladspa:/usr/lib/ladspa:/usr/local/lib64/ladspa:/usr/lib64/ladspa"'], [dbus_dep, libm_dep, ltdl_dep] ],
34   [ 'module-loopback', 'module-loopback.c' ],
35   [ 'module-match', 'module-match.c' ],
36   [ 'module-native-protocol-fd', 'module-native-protocol-fd.c', [], [], [], libprotocol_native ],
37   [ 'module-native-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_NATIVE', '-DUSE_TCP_SOCKETS'], [], libprotocol_native ],
38   [ 'module-native-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_NATIVE', '-DUSE_UNIX_SOCKETS'], [], libprotocol_native ],
39   [ 'module-null-sink', 'module-null-sink.c' ],
40   [ 'module-null-source', 'module-null-source.c' ],
41   [ 'module-pipe-sink', 'module-pipe-sink.c' ],
42   [ 'module-pipe-source', 'module-pipe-source.c' ],
43   [ 'module-position-event-sounds', 'module-position-event-sounds.c' ],
44   [ 'module-remap-sink', 'module-remap-sink.c' ],
45   [ 'module-remap-source', 'module-remap-source.c' ],
46   [ 'module-rescue-streams', 'module-rescue-streams.c' ],
47   [ 'module-role-cork', ['module-role-cork.c', 'stream-interaction.c'], 'stream-interaction.h' ],
48   [ 'module-role-ducking', ['module-role-ducking.c', 'stream-interaction.c'], 'stream-interaction.h' ],
49   [ 'module-rtp-recv', 'rtp/module-rtp-recv.c', [], [], [], librtp ],
50   [ 'module-rtp-send', 'rtp/module-rtp-send.c' , [], [], [], librtp ],
51   [ 'module-simple-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_TCP_SOCKETS'], [], libprotocol_simple ],
52   [ 'module-simple-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_UNIX_SOCKETS'], [], libprotocol_simple ],
53   [ 'module-sine', 'module-sine.c' ],
54   [ 'module-sine-source', 'module-sine-source.c' ],
55 #  [ 'module-solaris', 'module-solaris.c' ],
56   [ 'module-stream-restore', 'module-stream-restore.c', [], [], [dbus_dep], libprotocol_native ],
57   [ 'module-suspend-on-idle', 'module-suspend-on-idle.c' ],
58   [ 'module-switch-on-connect', 'module-switch-on-connect.c' ],
59   [ 'module-switch-on-port-available', 'module-switch-on-port-available.c' ],
60   [ 'module-tunnel-sink', 'module-tunnel.c', [], [], [x11_dep] ],
61   [ 'module-tunnel-sink-new', 'module-tunnel-sink-new.c' ],
62   [ 'module-tunnel-source', 'module-tunnel.c', [], [], [x11_dep] ],
63   [ 'module-tunnel-source-new', 'module-tunnel-source-new.c' ],
64   [ 'module-virtual-sink', 'module-virtual-sink.c' ],
65   [ 'module-virtual-source', 'module-virtual-source.c' ],
66   [ 'module-virtual-surround-sink', 'module-virtual-surround-sink.c' ],
67   [ 'module-volume-restore', 'module-volume-restore.c' ],
68 #  [ 'module-waveout', 'module-waveout.c' ],
69 ]
70
71 # Modules enabled by headers
72
73 if cc.has_header('linux/input.h')
74   all_modules += [
75     [ 'module-mmkbd-evdev', 'module-mmkbd-evdev.c' ],
76   ]
77 endif
78
79 if cc.has_header('sys/soundcard.h')
80   subdir('oss')
81   all_modules += [
82     [ 'module-oss', 'oss/module-oss.c', [], [], [], liboss_util ],
83   ]
84 endif
85
86 # Modules enabled by dependencies
87
88 if alsa_dep.found()
89   subdir('alsa')
90   all_modules += [
91     [ 'module-alsa-card', 'alsa/module-alsa-card.c', [], [], [alsa_dep, libm_dep], libalsa_util ],
92     [ 'module-alsa-sink', 'alsa/module-alsa-sink.c', [], [], [alsa_dep, libm_dep], libalsa_util ],
93     [ 'module-alsa-source', 'alsa/module-alsa-source.c', [], [], [alsa_dep, libm_dep], libalsa_util ],
94   ]
95 endif
96
97 if avahi_dep.found()
98   all_modules += [
99     [ 'module-zeroconf-discover', 'module-zeroconf-discover.c', [], [], [avahi_dep], libavahi_wrap ],
100     [ 'module-zeroconf-publish', 'module-zeroconf-publish.c', [], [], [avahi_dep, dbus_dep], [libavahi_wrap, libprotocol_native] ],
101   ]
102 endif
103
104 if bluez_dep.found()
105   subdir('bluetooth')
106   all_modules += [
107     [ 'module-bluetooth-discover', 'bluetooth/module-bluetooth-discover.c' ],
108     [ 'module-bluetooth-policy', 'bluetooth/module-bluetooth-policy.c', [], [], [dbus_dep] ],
109     [ 'module-bluez5-device', 'bluetooth/module-bluez5-device.c', [], [], [], libbluez5_util ],
110     [ 'module-bluez5-discover', 'bluetooth/module-bluez5-discover.c', [], [], [dbus_dep], libbluez5_util ],
111   ]
112 endif
113
114 if dbus_dep.found()
115   all_modules += [
116     [ 'module-console-kit', 'module-console-kit.c', [], [], [dbus_dep] ],
117     [ 'module-dbus-protocol',
118       [ 'dbus/iface-card.c', 'dbus/iface-card.h',
119         'dbus/iface-card-profile.c', 'dbus/iface-card-profile.h',
120         'dbus/iface-client.c', 'dbus/iface-client.h',
121         'dbus/iface-core.c', 'dbus/iface-core.h',
122         'dbus/iface-device.c', 'dbus/iface-device.h',
123         'dbus/iface-device-port.c', 'dbus/iface-device-port.h',
124         'dbus/iface-memstats.c', 'dbus/iface-memstats.h',
125         'dbus/iface-module.c', 'dbus/iface-module.h',
126         'dbus/iface-sample.c', 'dbus/iface-sample.h',
127         'dbus/iface-stream.c', 'dbus/iface-stream.h',
128         'dbus/module-dbus-protocol.c',
129       ],
130       [], [], [dbus_dep] ],
131     [ 'module-rygel-media-server', 'module-rygel-media-server.c', [], [], [dbus_dep], libprotocol_http ],
132   ]
133 endif
134
135 if dbus_dep.found() and fftw_dep.found()
136   all_modules += [
137     [ 'module-equalizer-sink', 'module-equalizer-sink.c', [], [], [dbus_dep, fftw_dep, libm_dep] ],
138   ]
139 endif
140
141 if gio_dep.found()
142   subdir('gsettings')
143   all_modules += [
144     [ 'module-gsettings',
145       [ 'gsettings/module-gsettings.c', 'stdin-util.c', 'stdin-util.h' ],
146       [], ['-DPA_GSETTINGS_HELPER="' + join_paths(pulselibexecdir, 'gsettings-helper') + '"'] ]
147   ]
148 endif
149
150 if jack_dep.found()
151   all_modules += [
152     [ 'module-jack-sink', 'jack/module-jack-sink.c', [], [], [jack_dep] ],
153     [ 'module-jack-source', 'jack/module-jack-source.c', [], [], [jack_dep] ],
154   ]
155   if dbus_dep.found()
156     all_modules += [
157       [ 'module-jackdbus-detect', 'jack/module-jackdbus-detect.c', [], [], [dbus_dep] ],
158     ]
159   endif
160 endif
161
162 if lirc_dep.found()
163   all_modules += [
164     [ 'module-lirc', 'module-lirc.c', [], [], [lirc_dep] ],
165   ]
166 endif
167
168 if openssl_dep.found()
169   subdir('raop')
170   all_modules += [
171     [ 'module-raop-sink', 'raop/module-raop-sink.c', [], [], [], libraop ],
172   ]
173   if avahi_dep.found()
174     all_modules += [
175       [ 'module-raop-discover', 'raop/module-raop-discover.c', [], [], [avahi_dep], libavahi_wrap ],
176     ]
177   endif
178 endif
179
180 if libsystemd_dep.found()
181   all_modules += [
182     [ 'module-systemd-login', 'module-systemd-login.c', [], [], [libsystemd_dep] ],
183   ]
184 endif
185
186 if udev_dep.found()
187   all_modules += [ [ 'module-udev-detect', 'module-udev-detect.c', [], [], [udev_dep] ] ]
188   if get_option('hal-compat')
189     all_modules += [ [ 'module-hal-detect', 'module-hal-detect-compat.c' ] ]
190   endif
191 endif
192
193 if x11_dep.found()
194   all_modules += [
195     [ 'module-x11-bell', 'x11/module-x11-bell.c', [], [], [x11_dep] ],
196     [ 'module-x11-cork-request', 'x11/module-x11-cork-request.c', [], [], [x11_dep, xtst_dep] ],
197     [ 'module-x11-publish', 'x11/module-x11-publish.c', [], [], [x11_dep], libprotocol_native ],
198     [ 'module-x11-xsmp', 'x11/module-x11-xsmp.c', [], [], [x11_dep, ice_dep, sm_dep] ],
199   ]
200 endif
201
202 # Module echo-cancel is quite modular itself and requires a section of its own
203
204 module_echo_cancel_sources = [
205   'echo-cancel/echo-cancel.h',
206   'echo-cancel/module-echo-cancel.c',
207   'echo-cancel/null.c',
208 ]
209 module_echo_cancel_orc_sources = []
210 module_echo_cancel_flags = []
211 module_echo_cancel_deps = []
212 module_echo_cancel_libs = []
213
214 if get_option('adrian-aec')
215   module_echo_cancel_sources += [
216     'echo-cancel/adrian.c', 'echo-cancel/adrian.h',
217     'echo-cancel/adrian-aec.c', 'echo-cancel/adrian-aec.h',
218   ]
219   module_echo_cancel_flags += ['-DHAVE_ADRIAN_EC=1']
220   module_echo_cancel_deps += [libm_dep]
221
222   if have_orcc
223     orcsrc = 'adrian-aec'
224     orc_h = custom_target(orcsrc + '-orc-gen.h',
225       input : join_paths('echo-cancel', orcsrc + '.orc'),
226       output : orcsrc + '-orc-gen.h',
227       command : orcc_args + ['--header', '-o', '@OUTPUT@', '@INPUT@']
228     )
229     orc_c = custom_target(orcsrc + '-orc-gen.c',
230       input : join_paths('echo-cancel', orcsrc + '.orc'),
231       output : orcsrc + '-orc-gen.c',
232       command : orcc_args + ['--implementation', '-o', '@OUTPUT@', '@INPUT@']
233     )
234     module_echo_cancel_orc_sources += [orc_c, orc_h]
235     module_echo_cancel_deps += [orc_dep]
236   endif
237
238 endif
239
240 if speex_dep.found()
241   module_echo_cancel_sources += ['echo-cancel/speex.c']
242   module_echo_cancel_deps += [speex_dep]
243 endif
244
245 if webrtc_dep.found()
246   subdir('echo-cancel')
247   module_echo_cancel_libs += [libwebrtc_util]
248 endif
249
250 all_modules += [
251   [ 'module-echo-cancel',
252     module_echo_cancel_sources + module_echo_cancel_orc_sources,
253     [],
254     module_echo_cancel_flags,
255     module_echo_cancel_deps,
256     module_echo_cancel_libs,
257   ]
258 ]
259
260 # Generate a shared module object for each modules
261
262 # FIXME: Not all modules actually have a dep in modlibexecdir
263 # FIXME: meson doesn't support multiple RPATH arguments currently
264 rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir)
265
266 foreach m : all_modules
267   name = m[0]
268   sources = m[1]
269   headers = m.get(2, [])
270   extra_flags = m.get(3, [])
271   extra_deps = m.get(4, [])
272   extra_libs = m.get(5, [])
273
274   mod = shared_module(name,
275     sources,
276     headers,
277     include_directories : [configinc, topinc],
278     c_args : [pa_c_args, server_c_args, '-DPA_MODULE_NAME=' + name.underscorify()] + extra_flags,
279     install : true,
280     install_rpath : rpath_dirs,
281     install_dir : modlibexecdir,
282     dependencies : [thread_dep, libpulse_dep, libpulsecommon_dep, libpulsecore_dep] + extra_deps,
283     link_args : [nodelete_link_args, '-Wl,--no-undefined' ],
284     link_with : extra_libs,
285     name_prefix : '',
286     implicit_include_directories : false)
287 endforeach