• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1libpulsecore_sources = [
2  'asyncmsgq.c',
3  'asyncq.c',
4  'auth-cookie.c',
5  'card.c',
6  'cli-command.c',
7  'cli-text.c',
8  'client.c',
9  'core-scache.c',
10  'core-subscribe.c',
11  'core.c',
12  'cpu.c',
13  'cpu-arm.c',
14  'cpu-orc.c',
15  'cpu-x86.c',
16  'device-port.c',
17  'database.c',
18  'ffmpeg/resample2.c',
19  'filter/biquad.c',
20  'filter/crossover.c',
21  'filter/lfe-filter.c',
22  'hook-list.c',
23  'ltdl-helper.c',
24  'message-handler.c',
25  'mix.c',
26  'modargs.c',
27  'modinfo.c',
28  'module.c',
29  'msgobject.c',
30  'namereg.c',
31  'object.c',
32  'play-memblockq.c',
33  'play-memchunk.c',
34  'remap.c',
35  'resampler.c',
36  'resampler/ffmpeg.c',
37  'resampler/peaks.c',
38  'resampler/trivial.c',
39  'rtpoll.c',
40  'sconv-s16be.c',
41  'sconv-s16le.c',
42  'sconv.c',
43  'shared.c',
44  'sink.c',
45  'sink-input.c',
46  'sioman.c',
47  'socket-server.c',
48  'sound-file-stream.c',
49  'sound-file.c',
50  'source.c',
51  'source-output.c',
52  'start-child.c',
53  'stream-util.c',
54  'svolume_arm.c',
55  'svolume_c.c',
56  'svolume_mmx.c',
57  'svolume_sse.c',
58  'thread-mq.c',
59]
60
61libpulsecore_headers = [
62  'asyncmsgq.h',
63  'asyncq.h',
64  'auth-cookie.h',
65  'card.h',
66  'cli-command.h',
67  'cli-text.h',
68  'client.h',
69  'core.h',
70  'core-scache.h',
71  'core-subscribe.h',
72  'cpu.h',
73  'cpu-arm.h',
74  'cpu-orc.h',
75  'cpu-x86.h',
76  'database.h',
77  'device-port.h',
78  'ffmpeg/avcodec.h',
79  'ffmpeg/dsputil.h',
80  'filter/biquad.h',
81  'filter/crossover.h',
82  'filter/lfe-filter.h',
83  'hook-list.h',
84  'ltdl-helper.h',
85  'message-handler.h',
86  'mix.h',
87  'modargs.h',
88  'modinfo.h',
89  'module.h',
90  'msgobject.h',
91  'namereg.h',
92  'object.h',
93  'play-memblockq.h',
94  'play-memchunk.h',
95  'remap.h',
96  'resampler.h',
97  'rtpoll.h',
98  'sconv.h',
99  'sconv-s16be.h',
100  'sconv-s16le.h',
101  'shared.h',
102  'sink-input.h',
103  'sink.h',
104  'sioman.h',
105  'socket-server.h',
106  'sound-file-stream.h',
107  'sound-file.h',
108  'source-output.h',
109  'source.h',
110  'start-child.h',
111  'stream-util.h',
112  'thread-mq.h',
113  'typedefs.h',
114]
115
116if get_option('database') == 'tdb'
117  libpulsecore_sources += 'database-tdb.c'
118  database_c_args = '-DHAVE_TDB'
119elif get_option('database') == 'gdbm'
120  libpulsecore_sources += 'database-gdbm.c'
121  database_c_args = '-DHAVE_GDBM'
122else
123  libpulsecore_sources += 'database-simple.c'
124  database_c_args = '-DHAVE_SIMPLEDB'
125endif
126
127if dbus_dep.found()
128  libpulsecore_sources += [
129    'dbus-shared.c',
130    'protocol-dbus.c',
131  ]
132  libpulsecore_headers += [
133    'dbus-shared.h',
134    'protocol-dbus.h',
135  ]
136endif
137
138if samplerate_dep.found()
139  libpulsecore_sources += ['resampler/libsamplerate.c']
140endif
141
142if soxr_dep.found()
143  libpulsecore_sources += ['resampler/soxr.c']
144endif
145
146if speex_dep.found()
147  libpulsecore_sources += ['resampler/speex.c']
148endif
149
150if x11_dep.found()
151  libpulsecore_sources += ['x11wrap.c']
152  libpulsecore_headers += ['x11wrap.h']
153endif
154
155orc_sources = []
156orc_headers = []
157if have_orcc
158  orcsrc = 'svolume'
159  orc_h = custom_target(orcsrc + '-orc-gen.h',
160    input : orcsrc + '.orc',
161    output : orcsrc + '-orc-gen.h',
162    command : orcc_args + ['--header', '-o', '@OUTPUT@', '@INPUT@']
163  )
164  orc_c = custom_target(orcsrc + '-orc-gen.c',
165    input : orcsrc + '.orc',
166    output : orcsrc + '-orc-gen.c',
167    command : orcc_args + ['--implementation', '-o', '@OUTPUT@', '@INPUT@']
168  )
169  orc_sources = [orc_c, 'svolume_orc.c']
170  orc_headers = [orc_h]
171endif
172
173# FIXME: walk through dependencies and add files
174
175# FIXME: SIMD support (ORC)
176simd = import('unstable-simd')
177simd_variants = [
178  { 'mmx' : ['remap_mmx.c', 'svolume_mmx.c'] },
179  { 'sse' : ['remap_sse.c', 'sconv_sse.c', 'svolume_sse.c'] },
180  { 'neon' : ['remap_neon.c', 'sconv_neon.c', 'mix_neon.c'] },
181]
182
183libpulsecore_simd_lib = []
184
185foreach simd_kwargs : simd_variants
186
187  if host_machine.cpu_family() == 'arm' and 'neon' in simd_kwargs
188    if not cc.compiles('''
189        #include <arm_neon.h>
190        int main() {
191            return sizeof(uint8x8_t) + sizeof(int32x4_t) + sizeof(float32x4_t);
192        }
193        ''', name : 'neon code')
194      continue
195    endif
196  endif
197
198  libpulsecore_simd = simd.check('libpulsecore_simd',
199    kwargs : simd_kwargs,
200    c_args : [pa_c_args],
201    include_directories : [configinc, topinc],
202    implicit_include_directories : false,
203    compiler : cc)
204
205  libpulsecore_simd_lib += libpulsecore_simd[0]
206  cdata.merge_from(libpulsecore_simd[1])
207endforeach
208
209if host_machine.system() == 'windows'
210  libpulsecore_sources += ['mutex-win32.c',
211    'poll-win32.c',
212    'semaphore-win32.c',
213    'thread-win32.c',
214  ]
215endif
216
217libpulsecore = shared_library('pulsecore-' + pa_version_major_minor,
218  libpulsecore_sources, libpulsecore_headers,
219  orc_sources, orc_headers,
220  include_directories : [configinc, topinc],
221  c_args : [pa_c_args, server_c_args],
222  link_args : [nodelete_link_args],
223  install : true,
224  install_rpath : privlibdir,
225  install_dir : privlibdir,
226  link_with : libpulsecore_simd_lib,
227  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, libsystemd_dep, libintl_dep, platform_dep, tcpwrap_dep, platform_socket_dep,],
228  implicit_include_directories : false)
229
230libpulsecore_dep = declare_dependency(link_with: libpulsecore)
231
232# Internal libraries for modules
233# TODO: understand 'c_args' and 'dependencies' better, maybe we can remove some
234
235libavahi_wrap = shared_library('avahi-wrap',
236  'avahi-wrap.c',
237  'avahi-wrap.h',
238  c_args : [pa_c_args, server_c_args, database_c_args],
239  link_args : [nodelete_link_args],
240  include_directories : [configinc, topinc],
241  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, avahi_dep],
242  implicit_include_directories : false, # pulsecore/poll.h <vs> /usr/include/poll.h
243  install : true,
244  install_rpath : privlibdir,
245  install_dir : modlibexecdir,
246)
247
248libcli = shared_library('cli',
249  'cli.c',
250  'cli.h',
251  c_args : [pa_c_args, server_c_args, database_c_args],
252  link_args : [nodelete_link_args],
253  include_directories : [configinc, topinc],
254  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
255  install : true,
256  install_rpath : privlibdir,
257  install_dir : modlibexecdir,
258)
259
260libcli_dep = declare_dependency(link_with: libcli)
261
262# FIXME: meson doesn't support multiple RPATH arguments currently
263rpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir)
264
265libprotocol_cli = shared_library('protocol-cli',
266  'protocol-cli.c',
267  'protocol-cli.h',
268  c_args : [pa_c_args, server_c_args, database_c_args],
269  link_args : [nodelete_link_args],
270  include_directories : [configinc, topinc],
271  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libcli_dep],
272  install : true,
273  install_rpath : rpath_dirs,
274  install_dir : modlibexecdir,
275)
276
277libprotocol_http = shared_library('protocol-http',
278  ['protocol-http.c', 'mime-type.c'],
279  ['protocol-http.h', 'mime-type.h'],
280  c_args : [pa_c_args, server_c_args, database_c_args],
281  link_args : [nodelete_link_args],
282  include_directories : [configinc, topinc],
283  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
284  install : true,
285  install_rpath : privlibdir,
286  install_dir : modlibexecdir,
287)
288
289libprotocol_native = shared_library('protocol-native',
290  'protocol-native.c',
291  ['protocol-native.h', 'native-common.h'],
292  c_args : [pa_c_args, server_c_args, database_c_args],
293  link_args : [nodelete_link_args],
294  include_directories : [configinc, topinc],
295  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep],
296  install : true,
297  install_rpath : privlibdir,
298  install_dir : modlibexecdir,
299)
300
301libprotocol_simple = shared_library('protocol-simple',
302  'protocol-simple.c',
303  'protocol-simple.h',
304  c_args : [pa_c_args, server_c_args, database_c_args],
305  link_args : [nodelete_link_args],
306  include_directories : [configinc, topinc],
307  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
308  install : true,
309  install_rpath : privlibdir,
310  install_dir : modlibexecdir,
311)
312