build-sys: First pass at a meson-ified build system

This is a working implementation of a build with meson. The server,
utils, and most modules build with this, and it is possible to run from
a build tree and play/capture audio on ALSA devices.

There are a number of FIXMEs, of course, and a number of features that
need to be enabled (modules, dependencies, installation, etc.), but this
should provide everything we need to get there relatively quickly.

To use this, install meson (distro package, or mesonbuild.com) and run:

  $ cd <pulseaudio src dir>
  $ meson <builddir>
  $ ninja -C <builddir>
This commit is contained in:
Arun Raghavan 2017-07-31 12:37:36 +01:00
parent 04361ee0d2
commit 114cdfbdde
14 changed files with 948 additions and 2 deletions

View file

@ -157,7 +157,11 @@ pa_daemon_conf *pa_daemon_conf_new(void) {
#else
if (pa_run_from_build_tree()) {
pa_log_notice("Detected that we are run from the build tree, fixing search path.");
#ifdef MESON_BUILD
c->dl_search_path = pa_xstrdup(PA_BUILDDIR PA_PATH_SEP "src" PA_PATH_SEP "modules");
#else
c->dl_search_path = pa_xstrdup(PA_BUILDDIR);
#endif
} else
c->dl_search_path = pa_xstrdup(PA_DLSEARCHPATH);
#endif

View file

@ -98,6 +98,15 @@
#include "ltdl-bind-now.h"
#include "server-lookup.h"
#ifdef DISABLE_LIBTOOL_PRELOAD
/* FIXME: work around a libtool bug by making sure we have 2 elements. Bug has
* been reported: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=29576 */
const lt_dlsymlist lt_preloaded_symbols[] = {
{ "@PROGRAM@", NULL },
{ NULL, NULL }
};
#endif
#ifdef HAVE_LIBWRAP
/* Only one instance of these variables */
int allow_severity = LOG_INFO;

34
src/daemon/meson.build Normal file
View file

@ -0,0 +1,34 @@
pulseaudio_sources = [
'caps.c',
'cmdline.c',
'cpulimit.c',
'daemon-conf.c',
'dumpmodules.c',
'ltdl-bind-now.c',
'main.c',
]
pulseaudio_headers = [
'caps.h',
'cmdline.h',
'cpulimit.h',
'daemon-conf.h',
'dumpmodules.h',
'ltdl-bind-now.h',
]
if dbus_dep.found()
pulseaudio_sources += 'server-lookup.c'
pulseaudio_headers += 'server-lookup.h'
endif
# FIXME: man pages, dependencies
executable('pulseaudio',
pulseaudio_sources,
pulseaudio_headers,
install: true,
include_directories : [configinc, topinc],
link_with : [libpulsecore, libpulsecommon, libpulse],
dependencies : [ltdl_dep, cap_dep, dbus_dep],
c_args : pa_c_args,
)

194
src/meson.build Normal file
View file

@ -0,0 +1,194 @@
libpulsecommon_sources = [
'pulse/client-conf.c',
'pulse/fork-detect.c',
'pulse/format.c',
'pulse/json.c',
'pulse/xmalloc.c',
'pulse/proplist.c',
'pulse/utf8.c',
'pulse/channelmap.c',
'pulse/sample.c',
'pulse/util.c',
'pulse/timeval.c',
'pulse/rtclock.c',
'pulse/volume.c',
'pulsecore/authkey.c',
'pulsecore/conf-parser.c',
'pulsecore/core-error.c',
'pulsecore/core-format.c',
'pulsecore/core-rtclock.c',
'pulsecore/core-util.c',
'pulsecore/dynarray.c',
'pulsecore/fdsem.c',
'pulsecore/flist.c',
'pulsecore/g711.c',
'pulsecore/hashmap.c',
'pulsecore/i18n.c',
'pulsecore/idxset.c',
'pulsecore/arpa-inet.c',
'pulsecore/iochannel.c',
'pulsecore/ioline.c',
'pulsecore/ipacl.c',
'pulsecore/lock-autospawn.c',
'pulsecore/log.c',
'pulsecore/ratelimit.c',
'pulsecore/mcalign.c',
'pulsecore/memblock.c',
'pulsecore/memblockq.c',
'pulsecore/memchunk.c',
'pulsecore/mutex-posix.c',
'pulsecore/native-common.c',
'pulsecore/once.c',
'pulsecore/packet.c',
'pulsecore/parseaddr.c',
'pulsecore/pdispatch.c',
'pulsecore/pid.c',
'pulsecore/pipe.c',
'pulsecore/memtrap.c',
'pulsecore/aupdate.c',
'pulsecore/proplist-util.c',
'pulsecore/pstream-util.c',
'pulsecore/pstream.c',
'pulsecore/queue.c',
'pulsecore/random.c',
'pulsecore/srbchannel.c',
'pulsecore/sample-util.c',
'pulsecore/semaphore-posix.c',
'pulsecore/shm.c',
'pulsecore/bitset.c',
'pulsecore/socket-client.c',
'pulsecore/socket-server.c',
'pulsecore/socket-util.c',
'pulsecore/strbuf.c',
'pulsecore/strlist.c',
'pulsecore/svolume_c.c',
'pulsecore/svolume_mmx.c',
'pulsecore/tagstruct.c',
'pulsecore/thread-posix.c',
'pulsecore/time-smoother.c',
'pulsecore/tokenizer.c',
'pulsecore/usergroup.c',
'pulsecore/sndfile-util.c',
'pulsecore/svolume_arm.c',
]
libpulsecommon_headers = [
'pulse/client-conf.h',
'pulse/fork-detect.h',
'pulse/format.h',
'pulse/json.h',
'pulse/xmalloc.h',
'pulse/proplist.h',
'pulse/utf8.h',
'pulse/channelmap.h',
'pulse/sample.h',
'pulse/util.h',
'pulse/timeval.h',
'pulse/rtclock.h',
'pulse/volume.h',
'pulsecore/atomic.h',
'pulsecore/authkey.h',
'pulsecore/conf-parser.h',
'pulsecore/core-error.h',
'pulsecore/core-format.h',
'pulsecore/core-rtclock.h',
'pulsecore/core-util.h',
'pulsecore/creds.h',
'pulsecore/dynarray.h',
'pulsecore/endianmacros.h',
'pulsecore/fdsem.h',
'pulsecore/flist.h',
'pulsecore/g711.h',
'pulsecore/hashmap.h',
'pulsecore/i18n.h',
'pulsecore/idxset.h',
'pulsecore/arpa-inet.h',
'pulsecore/iochannel.h',
'pulsecore/ioline.h',
'pulsecore/ipacl.h',
'pulsecore/llist.h',
'pulsecore/lock-autospawn.h',
'pulsecore/log.h',
'pulsecore/ratelimit.h',
'pulsecore/macro.h',
'pulsecore/mcalign.h',
'pulsecore/mem.h',
'pulsecore/memblock.h',
'pulsecore/memblockq.h',
'pulsecore/memchunk.h',
'pulsecore/mutex.h',
'pulsecore/native-common.h',
'pulsecore/once.h',
'pulsecore/packet.h',
'pulsecore/parseaddr.h',
'pulsecore/pdispatch.h',
'pulsecore/pid.h',
'pulsecore/pipe.h',
'pulsecore/memtrap.h',
'pulsecore/aupdate.h',
'pulsecore/proplist-util.h',
'pulsecore/pstream-util.h',
'pulsecore/pstream.h',
'pulsecore/queue.h',
'pulsecore/random.h',
'pulsecore/refcnt.h',
'pulsecore/srbchannel.h',
'pulsecore/sample-util.h',
'pulsecore/semaphore.h',
'pulsecore/shm.h',
'pulsecore/bitset.h',
'pulsecore/socket-client.h',
'pulsecore/socket-server.h',
'pulsecore/socket-util.h',
'pulsecore/strbuf.h',
'pulsecore/strlist.h',
'pulsecore/tagstruct.h',
'pulsecore/thread.h',
'pulsecore/time-smoother.h',
'pulsecore/tokenizer.h',
'pulsecore/usergroup.h',
'pulsecore/sndfile-util.h',
'pulsecore/socket.h',
]
if dbus_dep.found()
libpulsecommon_sources += [
'pulsecore/dbus-util.c',
'pulsecore/rtkit.c',
]
libpulsecommon_headers += [
'pulsecore/dbus-util.h',
'pulsecore/rtkit.h',
]
endif
if x11_dep.found()
libpulsecommon_sources += [
'pulse/client-conf-x11.c',
'pulsecore/x11prop.c',
]
libpulsecommon_headers += [
'pulse/client-conf-x11.h',
'pulsecore/x11prop.h',
]
endif
# FIXME: Do non-POSIX thread things
# FIXME: Do SIMD things
libpulsecommon = shared_library('pulsecommon-' + pa_version_major_minor,
libpulsecommon_sources,
libpulsecommon_headers,
include_directories : [configinc, topinc],
c_args : [pa_c_args],
install : true,
dependencies : [libm_dep, thread_dep, shm_dep, sndfile_dep, dbus_dep, x11_dep],
implicit_include_directories : false)
libpulsecommon_dep = declare_dependency(link_with: libpulsecommon)
subdir('pulse')
subdir('pulsecore')
subdir('daemon')
subdir('modules')
subdir('utils')

View file

@ -0,0 +1,31 @@
libalsa_util_sources = [
'alsa-util.c',
'alsa-ucm.c',
'alsa-mixer.c',
'alsa-sink.c',
'alsa-source.c',
'../reserve-wrap.c',
]
libalsa_util_headers = [
'alsa-util.h',
'alsa-ucm.h',
'alsa-mixer.h',
'alsa-sink.h',
'alsa-source.h',
'../reserve-wrap.h',
]
if dbus_dep.found()
libalsa_util_sources += [ '../reserve.c', '../reserve-monitor.c' ]
libalsa_util_headers += [ '../reserve.h', '../reserve-monitor.h' ]
endif
libalsa_util = static_library('libalsa_util',
libalsa_util_sources,
libalsa_util_headers,
c_args : [pa_c_args, server_c_args],
include_directories : [configinc, topinc],
dependencies : [libpulse_dep, libpulsecore_dep, alsa_dep, dbus_dep],
install : false
)

127
src/modules/meson.build Normal file
View file

@ -0,0 +1,127 @@
# module name, sources, [headers, extra flags, extra deps, extra libs]
all_modules = [
[ 'module-allow-passthrough', 'module-allow-passthrough.c' ],
[ 'module-always-sink', 'module-always-sink.c' ],
[ 'module-always-source', 'module-always-source.c' ],
[ 'module-augment-properties', 'module-augment-properties.c' ],
[ 'module-bluetooth-discover', 'bluetooth/module-bluetooth-discover.c' ],
[ 'module-bluetooth-policy', 'bluetooth/module-bluetooth-policy.c' ],
# [ 'module-bluez4-device', 'bluetooth/module-bluez4-device.c' ],
# [ 'module-bluez4-discover', 'bluetooth/module-bluez4-discover.c' ],
# [ 'module-bluez5-device', 'bluetooth/module-bluez5-device.c' ],
# [ 'module-bluez5-discover', 'bluetooth/module-bluez5-discover.c' ],
# [ 'module-bonjour-publish', 'macosx/module-bonjour-publish.c' ],
[ 'module-card-restore', 'module-card-restore.c' ],
[ 'module-cli', 'module-cli.c' ],
[ 'module-cli-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_TCP_SOCKETS'] ],
[ 'module-cli-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_UNIX_SOCKETS'] ],
[ 'module-combine', 'module-combine.c' ],
[ 'module-combine-sink', 'module-combine-sink.c' ],
# [ 'module-console-kit', 'module-console-kit.c' ],
# [ 'module-coreaudio-detect', 'macosx/module-coreaudio-detect.c' ],
# [ 'module-coreaudio-device', 'macosx/module-coreaudio-device.c' ],
# [ 'module-dbus-protocol', 'module-dbus-protocol.c' ]
[ 'module-default-device-restore', 'module-default-device-restore.c', [], [], [], libprotocol_native ],
[ 'module-detect', 'module-detect.c' ],
[ 'module-device-manager', 'module-device-manager.c' ],
[ 'module-device-restore', 'module-device-restore.c', [], [], [dbus_dep], libprotocol_native ],
# [ 'module-echo-cancel', 'module-echo-cancel.c' ],
[ 'module-equalizer-sink', 'module-equalizer-sink.c', [], [], [dbus_dep] ],
[ 'module-esound-compat-spawnfd', 'module-esound-compat-spawnfd.c' ],
[ 'module-esound-compat-spawnpid', 'module-esound-compat-spawnpid.c' ],
# [ 'module-esound-protocol-tcp', 'module-protocol-stub.c' ],
# [ 'module-esound-protocol-unix', 'module-protocol-stub.c' ],
[ 'module-esound-sink', 'module-esound-sink.c' ],
[ 'module-filter-apply', 'module-filter-apply.c' ],
[ 'module-filter-heuristics', 'module-filter-heuristics.c' ],
# [ 'module-gconf', 'gconf/module-gconf.c' ],
[ 'module-hal-detect', 'module-hal-detect-compat.c' ],
[ 'module-http-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_TCP_SOCKETS'] ],
[ 'module-http-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_UNIX_SOCKETS'] ],
[ 'module-intended-roles', 'module-intended-roles.c' ],
# [ 'module-jackdbus-detect', 'jack/module-jackdbus-detect.c' ],
# [ 'module-jack-sink', 'jack/module-jack-sink.c' ],
# [ 'module-jack-source', 'jack/module-jack-source.c' ],
# [ 'module-ladspa-sink', 'module-ladspa-sink.c' ],
# [ 'module-lirc', 'module-lirc.c' ],
[ 'module-loopback', 'module-loopback.c' ],
[ 'module-match', 'module-match.c' ],
# [ 'module-mmkbd-evdev', 'module-mmkbd-evdev.c' ],
[ 'module-native-protocol-fd', 'module-native-protocol-fd.c' ],
[ 'module-native-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_NATIVE', '-DUSE_TCP_SOCKETS'], [], libprotocol_native ],
[ 'module-native-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_NATIVE', '-DUSE_UNIX_SOCKETS'], [], libprotocol_native ],
[ 'module-null-sink', 'module-null-sink.c' ],
[ 'module-null-source', 'module-null-source.c' ],
# [ 'module-oss', 'oss/module-oss.c' ],
[ 'module-pipe-sink', 'module-pipe-sink.c' ],
[ 'module-pipe-source', 'module-pipe-source.c' ],
[ 'module-position-event-sounds', 'module-position-event-sounds.c' ],
# [ 'module-raop-discover', 'raop/module-raop-discover.c' ],
# [ 'module-raop-sink', 'raop/module-raop-sink.c' ],
[ 'module-remap-sink', 'module-remap-sink.c' ],
[ 'module-remap-source', 'module-remap-source.c' ],
[ 'module-rescue-streams', 'module-rescue-streams.c' ],
[ 'module-role-cork', ['module-role-cork.c', 'stream-interaction.c'], 'stream-interaction.h' ],
[ 'module-role-ducking', ['module-role-ducking.c', 'stream-interaction.c'], 'stream-interaction.h' ],
[ 'module-rtp-recv', 'rtp/module-rtp-recv.c' ],
[ 'module-rtp-send', 'rtp/module-rtp-send.c' ],
[ 'module-rygel-media-server', 'module-rygel-media-server.c', [], [], [dbus_dep] ],
[ 'module-simple-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_TCP_SOCKETS'] ],
[ 'module-simple-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_UNIX_SOCKETS'] ],
[ 'module-sine', 'module-sine.c' ],
[ 'module-sine-source', 'module-sine-source.c' ],
# [ 'module-solaris', 'module-solaris.c' ],
[ 'module-stream-restore', 'module-stream-restore.c', [], [], [dbus_dep], libprotocol_native ],
[ 'module-suspend-on-idle', 'module-suspend-on-idle.c' ],
[ 'module-switch-on-connect', 'module-switch-on-connect.c' ],
[ 'module-switch-on-port-available', 'module-switch-on-port-available.c' ],
[ 'module-systemd-login', 'module-systemd-login.c' ],
[ 'module-tunnel-sink', 'module-tunnel.c' ],
[ 'module-tunnel-sink-new', 'module-tunnel-sink-new.c' ],
[ 'module-tunnel-source', 'module-tunnel.c' ],
[ 'module-tunnel-source-new', 'module-tunnel-source-new.c' ],
[ 'module-virtual-sink', 'module-virtual-sink.c' ],
[ 'module-virtual-source', 'module-virtual-source.c' ],
[ 'module-virtual-surround-sink', 'module-virtual-surround-sink.c' ],
[ 'module-volume-restore', 'module-volume-restore.c' ],
# [ 'module-waveout', 'module-waveout.c' ],
# [ 'module-x11-bell', 'x11/module-x11-bell.c' ],
# [ 'module-x11-cork-request', 'x11/module-x11-cork-request.c' ],
# [ 'module-x11-publish', 'x11/module-x11-publish.c' ],
# [ 'module-x11-xsmp', 'x11/module-x11-xsmp.c' ],
# [ 'module-zeroconf-discover', 'module-zeroconf-discover.c' ],
# [ 'module-zeroconf-publish', 'module-zeroconf-publish.c' ],
]
if alsa_dep.found()
subdir('alsa')
all_modules += [
[ 'module-alsa-card', 'alsa/module-alsa-card.c', [], [], [alsa_dep], libalsa_util ],
[ 'module-alsa-sink', 'alsa/module-alsa-sink.c', [], [], [alsa_dep], libalsa_util ],
[ 'module-alsa-source', 'alsa/module-alsa-source.c', [], [], [alsa_dep], libalsa_util ],
]
endif
if udev_dep.found()
all_modules += [ [ 'module-udev-detect', 'module-udev-detect.c', [], [], [udev_dep] ] ]
endif
foreach m : all_modules
name = m[0]
sources = m[1]
headers = m.get(2, [])
extra_flags = m.get(3, [])
extra_deps = m.get(4, [])
extra_libs = m.get(5, [])
mod = shared_module(name,
sources,
headers,
include_directories : [configinc, topinc],
c_args : [pa_c_args, server_c_args, '-DPA_MODULE_NAME=' + name.underscorify()] + extra_flags,
install : true,
dependencies : [thread_dep, libpulse_dep, libpulsecore_dep] + extra_deps,
link_with : extra_libs,
name_prefix : '',
implicit_include_directories : false)
endforeach

View file

@ -23,7 +23,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/core.h>
#include <stream-interaction.h>
#include "stream-interaction.h"
PA_MODULE_AUTHOR("Lennart Poettering");
PA_MODULE_DESCRIPTION("Mute & cork streams with certain roles while others exist");

View file

@ -23,7 +23,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/core.h>
#include <stream-interaction.h>
#include "stream-interaction.h"
PA_MODULE_AUTHOR("Flavio Ceolin <flavio.ceolin@profusion.mobi>");
PA_MODULE_DESCRIPTION("Apply a ducking effect based on streams roles");

73
src/pulse/meson.build Normal file
View file

@ -0,0 +1,73 @@
libpulse_sources = [
'channelmap.c',
'context.c',
'direction.c',
'error.c',
'ext-device-manager.c',
'ext-device-restore.c',
'ext-stream-restore.c',
'format.c',
'introspect.c',
'mainloop-api.c',
'mainloop-signal.c',
'mainloop.c',
'operation.c',
'proplist.c',
'rtclock.c',
'sample.c',
'scache.c',
'stream.c',
'subscribe.c',
'thread-mainloop.c',
'timeval.c',
'utf8.c',
'util.c',
'volume.c',
'xmalloc.c',
]
libpulse_headers = [
'cdecl.h',
'channelmap.h',
'context.h',
'def.h',
'direction.h',
'error.h',
'ext-device-manager.h',
'ext-device-restore.h',
'ext-stream-restore.h',
'format.h',
'gccmacro.h',
'internal.h',
'introspect.h',
'mainloop-api.h',
'mainloop-signal.h',
'mainloop.h',
'operation.h',
'proplist.h',
'pulseaudio.h',
'rtclock.h',
'sample.h',
'scache.h',
'stream.h',
'subscribe.h',
'thread-mainloop.h',
'timeval.h',
'utf8.h',
'util.h',
'volume.h',
'xmalloc.h',
]
libpulse = shared_library('pulse',
libpulse_sources,
libpulse_headers,
version : libversion,
include_directories : [configinc, topinc],
c_args : [pa_c_args],
soversion : soversion,
install : true,
dependencies : [libm_dep, thread_dep, libpulsecommon_dep, dbus_dep],
implicit_include_directories : false)
libpulse_dep = declare_dependency(link_with: libpulse)

170
src/pulsecore/meson.build Normal file
View file

@ -0,0 +1,170 @@
libpulsecore_sources = [
'asyncmsgq.c',
'asyncq.c',
'auth-cookie.c',
'card.c',
'cli-command.c',
'cli-text.c',
'client.c',
'core-scache.c',
'core-subscribe.c',
'core.c',
'cpu.c',
'cpu-arm.c',
'cpu-orc.c',
'cpu-x86.c',
'device-port.c',
'ffmpeg/resample2.c',
'filter/biquad.c',
'filter/crossover.c',
'filter/lfe-filter.c',
'hook-list.c',
'ltdl-helper.c',
'mix.c',
'modargs.c',
'modinfo.c',
'module.c',
'msgobject.c',
'namereg.c',
'object.c',
'play-memblockq.c',
'play-memchunk.c',
'remap.c',
'resampler.c',
'resampler/ffmpeg.c',
'resampler/peaks.c',
'resampler/trivial.c',
'rtpoll.c',
'sconv-s16be.c',
'sconv-s16le.c',
'sconv.c',
'shared.c',
'sink.c',
'sink-input.c',
'sioman.c',
'sound-file-stream.c',
'sound-file.c',
'source.c',
'source-output.c',
'start-child.c',
'stream-util.c',
'thread-mq.c',
]
libpulsecore_headers = [
'asyncmsgq.h',
'asyncq.h',
'auth-cookie.h',
'card.h',
'cli-command.h',
'cli-text.h',
'client.h',
'core.h',
'core-scache.h',
'core-subscribe.h',
'cpu.h',
'cpu-arm.h',
'cpu-orc.h',
'cpu-x86.h',
'database.h',
'device-port.h',
'ffmpeg/avcodec.h',
'ffmpeg/dsputil.h',
'filter/biquad.h',
'filter/crossover.h',
'filter/lfe-filter.h',
'hook-list.h',
'ltdl-helper.h',
'mix.h',
'modargs.h',
'modinfo.h',
'module.h',
'msgobject.h',
'namereg.h',
'object.h',
'play-memblockq.h',
'play-memchunk.h',
'remap.h',
'resampler.h',
'rtpoll.h',
'sconv.h',
'sconv-s16be.h',
'sconv-s16le.h',
'shared.h',
'sink-input.h',
'sink.h',
'sioman.h',
'sound-file-stream.h',
'sound-file.h',
'source-output.h',
'source.h',
'start-child.h',
'stream-util.h',
'thread-mq.h',
'typedefs.h',
]
if get_option('database') == 'tdb'
libpulsecore_sources += 'database-tdb.c'
database_c_args = '-DHAVE_TDB'
elif get_option('database') == 'gdbm'
libpulsecore_sources += 'database-gdbm.c'
database_c_args = '-DHAVE_GDBM'
else
libpulsecore_sources += 'database-simple.c'
database_c_args = '-DHAVE_SIMPLEDB'
endif
if dbus_dep.found()
libpulsecore_sources += [
'dbus-shared.c',
'protocol-dbus.c',
]
libpulsecore_headers += [
'dbus-shared.h',
'protocol-dbus.h',
]
endif
# FIXME: walk through dependencies and add files
# FIXME: SIMD support (ORC)
simd = import('unstable-simd')
libpulsecore_simd = simd.check('libpulsecore_simd',
mmx : ['remap_mmx.c', 'svolume_mmx.c'],
sse : ['remap_sse.c', 'sconv_sse.c', 'svolume_sse.c'],
neon : ['remap_neon.c', 'sconv_neon.c', 'svolume_neon.c'],
c_args : [pa_c_args],
include_directories : [configinc, topinc],
implicit_include_directories : false,
compiler : cc)
libpulsecore_simd_lib = libpulsecore_simd[0]
cdata.merge_from(libpulsecore_simd[1])
# FIXME: Implement Windows support
#'mutex-win32.c',
#'poll-win32.c',
#'semaphore-win32.c',
#'thread-win32.c',
libpulsecore = shared_library('pulsecore-' + pa_version_major_minor,
libpulsecore_sources,
libpulsecore_headers,
include_directories : [configinc, topinc],
c_args : [pa_c_args, server_c_args],
install : true,
link_with : libpulsecore_simd_lib,
dependencies : [libm_dep, libpulsecommon_dep, libpulse_dep, ltdl_dep, shm_dep, sndfile_dep, database_dep, dbus_dep, x11_dep],
implicit_include_directories : false)
libpulsecore_dep = declare_dependency(link_with: libpulsecore)
# For modules that need protocol native functionality
libprotocol_native = shared_library('protocol_native',
'protocol-native.c',
['protocol-native.h', 'native-common.h'],
c_args : [pa_c_args, server_c_args, database_c_args],
include_directories : [configinc, topinc],
dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep],
install : true
)

View file

@ -84,7 +84,11 @@ bool pa_module_exists(const char *name) {
state = NULL;
if (PA_UNLIKELY(pa_run_from_build_tree())) {
while ((p = pa_split(paths, ":", &state))) {
#ifdef MESON_BUILD
pathname = pa_sprintf_malloc("%s" PA_PATH_SEP "src" PA_PATH_SEP "modules" PA_PATH_SEP "%s" PA_SOEXT, p, n);
#else
pathname = pa_sprintf_malloc("%s" PA_PATH_SEP ".libs" PA_PATH_SEP "%s" PA_SOEXT, p, n);
#endif
result = access(pathname, F_OK) == 0 ? true : false;
pa_log_debug("Checking for existence of '%s': %s", pathname, result ? "success" : "failure");
pa_xfree(pathname);

67
src/utils/meson.build Normal file
View file

@ -0,0 +1,67 @@
pacat_sources = [
'pacat.c',
]
# FIXME: man pages
executable('pacat',
pacat_sources,
install: true,
include_directories : [configinc, topinc],
link_with : [libpulsecommon, libpulse],
dependencies : [sndfile_dep],
c_args : pa_c_args,
)
pactl_sources = [
'pactl.c',
]
# FIXME: man pages
executable('pactl',
pactl_sources,
install: true,
include_directories : [configinc, topinc],
link_with : [libpulsecommon, libpulse],
dependencies : [sndfile_dep],
c_args : pa_c_args,
)
pasuspender_sources = [
'pasuspender.c',
]
# FIXME: man pages
executable('pasuspender',
pasuspender_sources,
install: true,
include_directories : [configinc, topinc],
link_with : [libpulsecommon, libpulse],
c_args : pa_c_args,
)
pacmd_sources = [
'pacmd.c',
]
# FIXME: man pages
executable('pacmd',
pacmd_sources,
install: true,
include_directories : [configinc, topinc],
link_with : [libpulsecommon, libpulse],
c_args : pa_c_args,
)
pax11publish_sources = [
'pax11publish.c',
]
# FIXME: man pages
executable('pax11publish',
pax11publish_sources,
install: true,
include_directories : [configinc, topinc],
link_with : [libpulsecommon, libpulse],
dependencies : [x11_dep],
c_args : pa_c_args,
)