1 libpulsecore_sources = [
21 'filter/lfe-filter.c',
38 'resampler/trivial.c',
47 'sound-file-stream.c',
60 libpulsecore_headers = [
90 'filter/lfe-filter.h',
141 'sound-file-stream.h',
157 if get_option('database') == 'tdb'
158 libpulsecore_sources += 'database-tdb.c'
159 database_c_args = '-DHAVE_TDB'
160 elif get_option('database') == 'gdbm'
161 libpulsecore_sources += 'database-gdbm.c'
162 database_c_args = '-DHAVE_GDBM'
164 libpulsecore_sources += 'database-simple.c'
165 database_c_args = '-DHAVE_SIMPLEDB'
169 libpulsecore_sources += [
173 libpulsecore_headers += [
180 libpulsecore_sources += ['cynara.c']
181 libpulsecore_headers += ['cynara.h']
184 if samplerate_dep.found()
185 libpulsecore_sources += ['resampler/libsamplerate.c']
189 libpulsecore_sources += ['resampler/soxr.c']
193 libpulsecore_sources += ['resampler/speex.c']
197 libpulsecore_sources += ['x11wrap.c']
198 libpulsecore_headers += ['x11wrap.h']
205 orc_h = custom_target(orcsrc + '-orc-gen.h',
206 input : orcsrc + '.orc',
207 output : orcsrc + '-orc-gen.h',
208 command : orcc_args + ['--header', '-o', '@OUTPUT@', '@INPUT@']
210 orc_c = custom_target(orcsrc + '-orc-gen.c',
211 input : orcsrc + '.orc',
212 output : orcsrc + '-orc-gen.c',
213 command : orcc_args + ['--implementation', '-o', '@OUTPUT@', '@INPUT@']
215 orc_sources = [orc_c, 'svolume_orc.c']
216 orc_headers = [orc_h]
219 # FIXME: walk through dependencies and add files
221 # FIXME: SIMD support (ORC)
222 simd = import('unstable-simd')
224 { 'mmx' : ['remap_mmx.c', 'svolume_mmx.c'] },
225 { 'sse' : ['remap_sse.c', 'sconv_sse.c', 'svolume_sse.c'] },
226 { 'neon' : ['remap_neon.c', 'sconv_neon.c', 'mix_neon.c'] },
229 libpulsecore_simd_lib = []
231 foreach simd_kwargs : simd_variants
233 if host_machine.cpu_family() == 'arm' and 'neon' in simd_kwargs
234 if not cc.compiles('''
235 #include <arm_neon.h>
237 return sizeof(uint8x8_t) + sizeof(int32x4_t) + sizeof(float32x4_t);
239 ''', name : 'neon code')
244 libpulsecore_simd = simd.check('libpulsecore_simd',
245 kwargs : simd_kwargs,
246 c_args : [pa_c_args],
247 include_directories : [configinc, topinc],
248 implicit_include_directories : false,
251 libpulsecore_simd_lib += libpulsecore_simd[0]
252 cdata.merge_from(libpulsecore_simd[1])
255 if host_machine.system() == 'windows'
256 libpulsecore_sources += ['mutex-win32.c',
263 libpulsecore = shared_library('pulsecore-' + pa_version_major_minor,
264 libpulsecore_sources, libpulsecore_headers,
265 orc_sources, orc_headers,
266 include_directories : [configinc, topinc],
267 c_args : [pa_c_args, server_c_args],
268 link_args : [nodelete_link_args],
270 install_rpath : privlibdir,
271 install_dir : privlibdir,
272 link_with : libpulsecore_simd_lib,
273 dependencies : [libm_dep, libpulsecommon_dep, ltdl_dep, shm_dep, sndfile_dep, database_dep, dbus_dep, libatomic_ops_dep, orc_dep, samplerate_dep, soxr_dep, speex_dep, x11_dep, libintl_dep, platform_dep, platform_socket_dep, cynara_client_dep, cynara_creds_socket_dep, cynara_session_dep],
274 implicit_include_directories : false)
276 libpulsecore_dep = declare_dependency(link_with: libpulsecore)
279 libpulsecore_headers,
280 install_dir : join_paths(includedir, 'pulsecore')
283 # Internal libraries for modules
284 # TODO: understand 'c_args' and 'dependencies' better, maybe we can remove some
286 libavahi_wrap = shared_library('avahi-wrap',
289 c_args : [pa_c_args, server_c_args, database_c_args],
290 link_args : [nodelete_link_args],
291 include_directories : [configinc, topinc],
292 dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, avahi_dep],
293 implicit_include_directories : false, # pulsecore/poll.h <vs> /usr/include/poll.h
295 install_rpath : privlibdir,
296 install_dir : modlibexecdir,
299 libcli = shared_library('cli',
302 c_args : [pa_c_args, server_c_args, database_c_args],
303 link_args : [nodelete_link_args],
304 include_directories : [configinc, topinc],
305 dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
307 install_rpath : privlibdir,
308 install_dir : modlibexecdir,
311 libcli_dep = declare_dependency(link_with: libcli)
313 # FIXME: meson doesn't support multiple RPATH arguments currently
314 rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir)
316 libprotocol_cli = shared_library('protocol-cli',
319 c_args : [pa_c_args, server_c_args, database_c_args],
320 link_args : [nodelete_link_args],
321 include_directories : [configinc, topinc],
322 dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libcli_dep],
324 install_rpath : rpath_dirs,
325 install_dir : modlibexecdir,
328 libprotocol_http = shared_library('protocol-http',
329 ['protocol-http.c', 'mime-type.c'],
330 ['protocol-http.h', 'mime-type.h'],
331 c_args : [pa_c_args, server_c_args, database_c_args],
332 link_args : [nodelete_link_args],
333 include_directories : [configinc, topinc],
334 dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
336 install_rpath : privlibdir,
337 install_dir : modlibexecdir,
340 libprotocol_native = shared_library('protocol-native',
342 ['protocol-native.h', 'native-common.h'],
343 c_args : [pa_c_args, server_c_args, database_c_args],
344 link_args : [nodelete_link_args],
345 include_directories : [configinc, topinc],
346 dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep],
348 install_rpath : privlibdir,
349 install_dir : modlibexecdir,
352 libprotocol_simple = shared_library('protocol-simple',
355 c_args : [pa_c_args, server_c_args, database_c_args],
356 link_args : [nodelete_link_args],
357 include_directories : [configinc, topinc],
358 dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
360 install_rpath : privlibdir,
361 install_dir : modlibexecdir,