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