153a5a1b3Sopenharmony_cilibpulsecore_sources = [
253a5a1b3Sopenharmony_ci  'asyncmsgq.c',
353a5a1b3Sopenharmony_ci  'asyncq.c',
453a5a1b3Sopenharmony_ci  'auth-cookie.c',
553a5a1b3Sopenharmony_ci  'card.c',
653a5a1b3Sopenharmony_ci  'cli-command.c',
753a5a1b3Sopenharmony_ci  'cli-text.c',
853a5a1b3Sopenharmony_ci  'client.c',
953a5a1b3Sopenharmony_ci  'core-scache.c',
1053a5a1b3Sopenharmony_ci  'core-subscribe.c',
1153a5a1b3Sopenharmony_ci  'core.c',
1253a5a1b3Sopenharmony_ci  'cpu.c',
1353a5a1b3Sopenharmony_ci  'cpu-arm.c',
1453a5a1b3Sopenharmony_ci  'cpu-orc.c',
1553a5a1b3Sopenharmony_ci  'cpu-x86.c',
1653a5a1b3Sopenharmony_ci  'device-port.c',
1753a5a1b3Sopenharmony_ci  'database.c',
1853a5a1b3Sopenharmony_ci  'downmix.c',
1953a5a1b3Sopenharmony_ci  'ffmpeg/resample2.c',
2053a5a1b3Sopenharmony_ci  'filter/biquad.c',
2153a5a1b3Sopenharmony_ci  'filter/crossover.c',
2253a5a1b3Sopenharmony_ci  'filter/lfe-filter.c',
2353a5a1b3Sopenharmony_ci  'hook-list.c',
2453a5a1b3Sopenharmony_ci  'ltdl-helper.c',
2553a5a1b3Sopenharmony_ci  'message-handler.c',
2653a5a1b3Sopenharmony_ci  'mix.c',
2753a5a1b3Sopenharmony_ci  'modargs.c',
2853a5a1b3Sopenharmony_ci  'modinfo.c',
2953a5a1b3Sopenharmony_ci  'module.c',
3053a5a1b3Sopenharmony_ci  'msgobject.c',
3153a5a1b3Sopenharmony_ci  'namereg.c',
3253a5a1b3Sopenharmony_ci  'object.c',
3353a5a1b3Sopenharmony_ci  'play-memblockq.c',
3453a5a1b3Sopenharmony_ci  'play-memchunk.c',
3553a5a1b3Sopenharmony_ci  'remap.c',
3653a5a1b3Sopenharmony_ci  'resampler.c',
3753a5a1b3Sopenharmony_ci  'resampler/ffmpeg.c',
3853a5a1b3Sopenharmony_ci  'resampler/peaks.c',
3953a5a1b3Sopenharmony_ci  'resampler/trivial.c',
4053a5a1b3Sopenharmony_ci  'rtpoll.c',
4153a5a1b3Sopenharmony_ci  'sconv-s16be.c',
4253a5a1b3Sopenharmony_ci  'sconv-s16le.c',
4353a5a1b3Sopenharmony_ci  'sconv.c',
4453a5a1b3Sopenharmony_ci  'shared.c',
4553a5a1b3Sopenharmony_ci  'sink.c',
4653a5a1b3Sopenharmony_ci  'sink-input.c',
4753a5a1b3Sopenharmony_ci  'sioman.c',
4853a5a1b3Sopenharmony_ci  'socket-server.c',
4953a5a1b3Sopenharmony_ci  'sound-file-stream.c',
5053a5a1b3Sopenharmony_ci  'sound-file.c',
5153a5a1b3Sopenharmony_ci  'source.c',
5253a5a1b3Sopenharmony_ci  'source-output.c',
5353a5a1b3Sopenharmony_ci  'start-child.c',
5453a5a1b3Sopenharmony_ci  'stream-util.c',
5553a5a1b3Sopenharmony_ci  'svolume_arm.c',
5653a5a1b3Sopenharmony_ci  'svolume_c.c',
5753a5a1b3Sopenharmony_ci  'svolume_mmx.c',
5853a5a1b3Sopenharmony_ci  'svolume_sse.c',
5953a5a1b3Sopenharmony_ci  'thread-mq.c',
6053a5a1b3Sopenharmony_ci]
6153a5a1b3Sopenharmony_ci
6253a5a1b3Sopenharmony_cilibpulsecore_headers = [
6353a5a1b3Sopenharmony_ci  'asyncmsgq.h',
6453a5a1b3Sopenharmony_ci  'asyncq.h',
6553a5a1b3Sopenharmony_ci  'auth-cookie.h',
6653a5a1b3Sopenharmony_ci  'card.h',
6753a5a1b3Sopenharmony_ci  'cli-command.h',
6853a5a1b3Sopenharmony_ci  'cli-text.h',
6953a5a1b3Sopenharmony_ci  'client.h',
7053a5a1b3Sopenharmony_ci  'core.h',
7153a5a1b3Sopenharmony_ci  'core-scache.h',
7253a5a1b3Sopenharmony_ci  'core-subscribe.h',
7353a5a1b3Sopenharmony_ci  'cpu.h',
7453a5a1b3Sopenharmony_ci  'cpu-arm.h',
7553a5a1b3Sopenharmony_ci  'cpu-orc.h',
7653a5a1b3Sopenharmony_ci  'cpu-x86.h',
7753a5a1b3Sopenharmony_ci  'database.h',
7853a5a1b3Sopenharmony_ci  'device-port.h',
7953a5a1b3Sopenharmony_ci  'downmix.h',
8053a5a1b3Sopenharmony_ci  'ffmpeg/avcodec.h',
8153a5a1b3Sopenharmony_ci  'ffmpeg/dsputil.h',
8253a5a1b3Sopenharmony_ci  'filter/biquad.h',
8353a5a1b3Sopenharmony_ci  'filter/crossover.h',
8453a5a1b3Sopenharmony_ci  'filter/lfe-filter.h',
8553a5a1b3Sopenharmony_ci  'hook-list.h',
8653a5a1b3Sopenharmony_ci  'ltdl-helper.h',
8753a5a1b3Sopenharmony_ci  'message-handler.h',
8853a5a1b3Sopenharmony_ci  'mix.h',
8953a5a1b3Sopenharmony_ci  'modargs.h',
9053a5a1b3Sopenharmony_ci  'modinfo.h',
9153a5a1b3Sopenharmony_ci  'module.h',
9253a5a1b3Sopenharmony_ci  'msgobject.h',
9353a5a1b3Sopenharmony_ci  'namereg.h',
9453a5a1b3Sopenharmony_ci  'object.h',
9553a5a1b3Sopenharmony_ci  'play-memblockq.h',
9653a5a1b3Sopenharmony_ci  'play-memchunk.h',
9753a5a1b3Sopenharmony_ci  'remap.h',
9853a5a1b3Sopenharmony_ci  'resampler.h',
9953a5a1b3Sopenharmony_ci  'rtpoll.h',
10053a5a1b3Sopenharmony_ci  'sconv.h',
10153a5a1b3Sopenharmony_ci  'sconv-s16be.h',
10253a5a1b3Sopenharmony_ci  'sconv-s16le.h',
10353a5a1b3Sopenharmony_ci  'shared.h',
10453a5a1b3Sopenharmony_ci  'sink-input.h',
10553a5a1b3Sopenharmony_ci  'sink.h',
10653a5a1b3Sopenharmony_ci  'sioman.h',
10753a5a1b3Sopenharmony_ci  'socket-server.h',
10853a5a1b3Sopenharmony_ci  'sound-file-stream.h',
10953a5a1b3Sopenharmony_ci  'sound-file.h',
11053a5a1b3Sopenharmony_ci  'source-output.h',
11153a5a1b3Sopenharmony_ci  'source.h',
11253a5a1b3Sopenharmony_ci  'start-child.h',
11353a5a1b3Sopenharmony_ci  'stream-util.h',
11453a5a1b3Sopenharmony_ci  'thread-mq.h',
11553a5a1b3Sopenharmony_ci  'typedefs.h',
11653a5a1b3Sopenharmony_ci]
11753a5a1b3Sopenharmony_ci
11853a5a1b3Sopenharmony_ciif get_option('database') == 'tdb'
11953a5a1b3Sopenharmony_ci  libpulsecore_sources += 'database-tdb.c'
12053a5a1b3Sopenharmony_ci  database_c_args = '-DHAVE_TDB'
12153a5a1b3Sopenharmony_cielif get_option('database') == 'gdbm'
12253a5a1b3Sopenharmony_ci  libpulsecore_sources += 'database-gdbm.c'
12353a5a1b3Sopenharmony_ci  database_c_args = '-DHAVE_GDBM'
12453a5a1b3Sopenharmony_cielse
12553a5a1b3Sopenharmony_ci  libpulsecore_sources += 'database-simple.c'
12653a5a1b3Sopenharmony_ci  database_c_args = '-DHAVE_SIMPLEDB'
12753a5a1b3Sopenharmony_ciendif
12853a5a1b3Sopenharmony_ci
12953a5a1b3Sopenharmony_ciif dbus_dep.found()
13053a5a1b3Sopenharmony_ci  libpulsecore_sources += [
13153a5a1b3Sopenharmony_ci    'dbus-shared.c',
13253a5a1b3Sopenharmony_ci    'protocol-dbus.c',
13353a5a1b3Sopenharmony_ci  ]
13453a5a1b3Sopenharmony_ci  libpulsecore_headers += [
13553a5a1b3Sopenharmony_ci    'dbus-shared.h',
13653a5a1b3Sopenharmony_ci    'protocol-dbus.h',
13753a5a1b3Sopenharmony_ci  ]
13853a5a1b3Sopenharmony_ciendif
13953a5a1b3Sopenharmony_ci
14053a5a1b3Sopenharmony_ciif samplerate_dep.found()
14153a5a1b3Sopenharmony_ci  libpulsecore_sources += ['resampler/libsamplerate.c']
14253a5a1b3Sopenharmony_ciendif
14353a5a1b3Sopenharmony_ci
14453a5a1b3Sopenharmony_ciif soxr_dep.found()
14553a5a1b3Sopenharmony_ci  libpulsecore_sources += ['resampler/soxr.c']
14653a5a1b3Sopenharmony_ciendif
14753a5a1b3Sopenharmony_ci
14853a5a1b3Sopenharmony_ciif speex_dep.found()
14953a5a1b3Sopenharmony_ci  libpulsecore_sources += ['resampler/speex.c']
15053a5a1b3Sopenharmony_ciendif
15153a5a1b3Sopenharmony_ci
15253a5a1b3Sopenharmony_ciif x11_dep.found()
15353a5a1b3Sopenharmony_ci  libpulsecore_sources += ['x11wrap.c']
15453a5a1b3Sopenharmony_ci  libpulsecore_headers += ['x11wrap.h']
15553a5a1b3Sopenharmony_ciendif
15653a5a1b3Sopenharmony_ci
15753a5a1b3Sopenharmony_ciorc_sources = []
15853a5a1b3Sopenharmony_ciorc_headers = []
15953a5a1b3Sopenharmony_ciif have_orcc
16053a5a1b3Sopenharmony_ci  orcsrc = 'svolume'
16153a5a1b3Sopenharmony_ci  orc_h = custom_target(orcsrc + '-orc-gen.h',
16253a5a1b3Sopenharmony_ci    input : orcsrc + '.orc',
16353a5a1b3Sopenharmony_ci    output : orcsrc + '-orc-gen.h',
16453a5a1b3Sopenharmony_ci    command : orcc_args + ['--header', '-o', '@OUTPUT@', '@INPUT@']
16553a5a1b3Sopenharmony_ci  )
16653a5a1b3Sopenharmony_ci  orc_c = custom_target(orcsrc + '-orc-gen.c',
16753a5a1b3Sopenharmony_ci    input : orcsrc + '.orc',
16853a5a1b3Sopenharmony_ci    output : orcsrc + '-orc-gen.c',
16953a5a1b3Sopenharmony_ci    command : orcc_args + ['--implementation', '-o', '@OUTPUT@', '@INPUT@']
17053a5a1b3Sopenharmony_ci  )
17153a5a1b3Sopenharmony_ci  orc_sources = [orc_c, 'svolume_orc.c']
17253a5a1b3Sopenharmony_ci  orc_headers = [orc_h]
17353a5a1b3Sopenharmony_ciendif
17453a5a1b3Sopenharmony_ci
17553a5a1b3Sopenharmony_ci# FIXME: walk through dependencies and add files
17653a5a1b3Sopenharmony_ci
17753a5a1b3Sopenharmony_ci# FIXME: SIMD support (ORC)
17853a5a1b3Sopenharmony_cisimd = import('unstable-simd')
17953a5a1b3Sopenharmony_cisimd_variants = [
18053a5a1b3Sopenharmony_ci  { 'mmx' : ['remap_mmx.c', 'svolume_mmx.c'] },
18153a5a1b3Sopenharmony_ci  { 'sse' : ['remap_sse.c', 'sconv_sse.c', 'svolume_sse.c'] },
18253a5a1b3Sopenharmony_ci  { 'neon' : ['remap_neon.c', 'sconv_neon.c', 'mix_neon.c'] },
18353a5a1b3Sopenharmony_ci]
18453a5a1b3Sopenharmony_ci
18553a5a1b3Sopenharmony_cilibpulsecore_simd_lib = []
18653a5a1b3Sopenharmony_ci
18753a5a1b3Sopenharmony_ciforeach simd_kwargs : simd_variants
18853a5a1b3Sopenharmony_ci
18953a5a1b3Sopenharmony_ci  if host_machine.cpu_family() == 'arm' and 'neon' in simd_kwargs
19053a5a1b3Sopenharmony_ci    if not cc.compiles('''
19153a5a1b3Sopenharmony_ci        #include <arm_neon.h>
19253a5a1b3Sopenharmony_ci        int main() {
19353a5a1b3Sopenharmony_ci            return sizeof(uint8x8_t) + sizeof(int32x4_t) + sizeof(float32x4_t);
19453a5a1b3Sopenharmony_ci        }
19553a5a1b3Sopenharmony_ci        ''', name : 'neon code')
19653a5a1b3Sopenharmony_ci      continue
19753a5a1b3Sopenharmony_ci    endif
19853a5a1b3Sopenharmony_ci  endif
19953a5a1b3Sopenharmony_ci
20053a5a1b3Sopenharmony_ci  libpulsecore_simd = simd.check('libpulsecore_simd',
20153a5a1b3Sopenharmony_ci    kwargs : simd_kwargs,
20253a5a1b3Sopenharmony_ci    c_args : [pa_c_args],
20353a5a1b3Sopenharmony_ci    include_directories : [configinc, topinc],
20453a5a1b3Sopenharmony_ci    implicit_include_directories : false,
20553a5a1b3Sopenharmony_ci    compiler : cc)
20653a5a1b3Sopenharmony_ci
20753a5a1b3Sopenharmony_ci  libpulsecore_simd_lib += libpulsecore_simd[0]
20853a5a1b3Sopenharmony_ci  cdata.merge_from(libpulsecore_simd[1])
20953a5a1b3Sopenharmony_ciendforeach
21053a5a1b3Sopenharmony_ci
21153a5a1b3Sopenharmony_ciif host_machine.system() == 'windows'
21253a5a1b3Sopenharmony_ci  libpulsecore_sources += ['mutex-win32.c',
21353a5a1b3Sopenharmony_ci    'poll-win32.c',
21453a5a1b3Sopenharmony_ci    'semaphore-win32.c',
21553a5a1b3Sopenharmony_ci    'thread-win32.c',
21653a5a1b3Sopenharmony_ci  ]
21753a5a1b3Sopenharmony_ciendif
21853a5a1b3Sopenharmony_ci
21953a5a1b3Sopenharmony_cilibpulsecore = shared_library('pulsecore-' + pa_version_major_minor,
22053a5a1b3Sopenharmony_ci  libpulsecore_sources, libpulsecore_headers,
22153a5a1b3Sopenharmony_ci  orc_sources, orc_headers,
22253a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
22353a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args],
22453a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
22553a5a1b3Sopenharmony_ci  install : true,
22653a5a1b3Sopenharmony_ci  install_rpath : privlibdir,
22753a5a1b3Sopenharmony_ci  install_dir : privlibdir,
22853a5a1b3Sopenharmony_ci  link_with : libpulsecore_simd_lib,
22953a5a1b3Sopenharmony_ci  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,],
23053a5a1b3Sopenharmony_ci  implicit_include_directories : false)
23153a5a1b3Sopenharmony_ci
23253a5a1b3Sopenharmony_cilibpulsecore_dep = declare_dependency(link_with: libpulsecore)
23353a5a1b3Sopenharmony_ci
23453a5a1b3Sopenharmony_ci# Internal libraries for modules
23553a5a1b3Sopenharmony_ci# TODO: understand 'c_args' and 'dependencies' better, maybe we can remove some
23653a5a1b3Sopenharmony_ci
23753a5a1b3Sopenharmony_cilibavahi_wrap = shared_library('avahi-wrap',
23853a5a1b3Sopenharmony_ci  'avahi-wrap.c',
23953a5a1b3Sopenharmony_ci  'avahi-wrap.h',
24053a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args, database_c_args],
24153a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
24253a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
24353a5a1b3Sopenharmony_ci  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, avahi_dep],
24453a5a1b3Sopenharmony_ci  implicit_include_directories : false, # pulsecore/poll.h <vs> /usr/include/poll.h
24553a5a1b3Sopenharmony_ci  install : true,
24653a5a1b3Sopenharmony_ci  install_rpath : privlibdir,
24753a5a1b3Sopenharmony_ci  install_dir : modlibexecdir,
24853a5a1b3Sopenharmony_ci)
24953a5a1b3Sopenharmony_ci
25053a5a1b3Sopenharmony_cilibcli = shared_library('cli',
25153a5a1b3Sopenharmony_ci  'cli.c',
25253a5a1b3Sopenharmony_ci  'cli.h',
25353a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args, database_c_args],
25453a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
25553a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
25653a5a1b3Sopenharmony_ci  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
25753a5a1b3Sopenharmony_ci  install : true,
25853a5a1b3Sopenharmony_ci  install_rpath : privlibdir,
25953a5a1b3Sopenharmony_ci  install_dir : modlibexecdir,
26053a5a1b3Sopenharmony_ci)
26153a5a1b3Sopenharmony_ci
26253a5a1b3Sopenharmony_cilibcli_dep = declare_dependency(link_with: libcli)
26353a5a1b3Sopenharmony_ci
26453a5a1b3Sopenharmony_ci# FIXME: meson doesn't support multiple RPATH arguments currently
26553a5a1b3Sopenharmony_cirpath_dirs = join_paths(privlibdir) + ':' + join_paths(modlibexecdir)
26653a5a1b3Sopenharmony_ci
26753a5a1b3Sopenharmony_cilibprotocol_cli = shared_library('protocol-cli',
26853a5a1b3Sopenharmony_ci  'protocol-cli.c',
26953a5a1b3Sopenharmony_ci  'protocol-cli.h',
27053a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args, database_c_args],
27153a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
27253a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
27353a5a1b3Sopenharmony_ci  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libcli_dep],
27453a5a1b3Sopenharmony_ci  install : true,
27553a5a1b3Sopenharmony_ci  install_rpath : rpath_dirs,
27653a5a1b3Sopenharmony_ci  install_dir : modlibexecdir,
27753a5a1b3Sopenharmony_ci)
27853a5a1b3Sopenharmony_ci
27953a5a1b3Sopenharmony_cilibprotocol_http = shared_library('protocol-http',
28053a5a1b3Sopenharmony_ci  ['protocol-http.c', 'mime-type.c'],
28153a5a1b3Sopenharmony_ci  ['protocol-http.h', 'mime-type.h'],
28253a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args, database_c_args],
28353a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
28453a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
28553a5a1b3Sopenharmony_ci  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
28653a5a1b3Sopenharmony_ci  install : true,
28753a5a1b3Sopenharmony_ci  install_rpath : privlibdir,
28853a5a1b3Sopenharmony_ci  install_dir : modlibexecdir,
28953a5a1b3Sopenharmony_ci)
29053a5a1b3Sopenharmony_ci
29153a5a1b3Sopenharmony_cilibprotocol_native = shared_library('protocol-native',
29253a5a1b3Sopenharmony_ci  'protocol-native.c',
29353a5a1b3Sopenharmony_ci  ['protocol-native.h', 'native-common.h'],
29453a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args, database_c_args],
29553a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
29653a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
29753a5a1b3Sopenharmony_ci  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep],
29853a5a1b3Sopenharmony_ci  install : true,
29953a5a1b3Sopenharmony_ci  install_rpath : privlibdir,
30053a5a1b3Sopenharmony_ci  install_dir : modlibexecdir,
30153a5a1b3Sopenharmony_ci)
30253a5a1b3Sopenharmony_ci
30353a5a1b3Sopenharmony_cilibprotocol_simple = shared_library('protocol-simple',
30453a5a1b3Sopenharmony_ci  'protocol-simple.c',
30553a5a1b3Sopenharmony_ci  'protocol-simple.h',
30653a5a1b3Sopenharmony_ci  c_args : [pa_c_args, server_c_args, database_c_args],
30753a5a1b3Sopenharmony_ci  link_args : [nodelete_link_args],
30853a5a1b3Sopenharmony_ci  include_directories : [configinc, topinc],
30953a5a1b3Sopenharmony_ci  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
31053a5a1b3Sopenharmony_ci  install : true,
31153a5a1b3Sopenharmony_ci  install_rpath : privlibdir,
31253a5a1b3Sopenharmony_ci  install_dir : modlibexecdir,
31353a5a1b3Sopenharmony_ci)
314