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