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