diff --git a/.gitignore b/.gitignore index 9ec236705..331d4888d 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ cscope.in.out cscope.po.out pulse-daemon.log depcomp +install/ install-sh libltdl libtool @@ -36,3 +37,4 @@ stamp-* .dirstamp *.orig *.rej +subprojects/*/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 96b661045..964bfe2a4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,13 +2,22 @@ # container and push it to the project's container registry on fd.o GitLab. # This step is only run when the tag for the container changes, else it is # effectively a no-op. All of this infrastructure is inherited from the -# wayland/ci-templates repository which is the recommended way to set up CI +# freedesktop/ci-templates repository which is the recommended way to set up CI # infrastructure on fd.o GitLab. # # Once the container stage is done, we move on to the 'build' stage where we -# run an autotools and meson build in parallel. Currently, tests are also run -# as part of the build stage as there doesn't seem to be significant value to -# splitting the stages at the moment. +# run meson build. Currently, tests are also run as part of the build stage as +# there doesn't seem to be significant value to splitting the stages at the +# moment. + +# Create merge request pipelines for open merge requests, branch pipelines +# otherwise. This allows MRs for new users to run CI. +workflow: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS + when: never + - if: $CI_COMMIT_BRANCH stages: - container @@ -19,22 +28,21 @@ variables: # CI runs, for example when adding new packages to FDO_DISTRIBUTION_PACKAGES. # The tag is an arbitrary string that identifies the exact container # contents. - FDO_DISTRIBUTION_TAG: '2020-03-07-01' - FDO_DISTRIBUTION_VERSION: '18.04' + FDO_DISTRIBUTION_TAG: '2023-08-13-00' + FDO_DISTRIBUTION_VERSION: '20.04' FDO_UPSTREAM_REPO: 'pulseaudio/pulseaudio' - UBUNTU_IMAGE: "$CI_REGISTRY_IMAGE/ubuntu/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG" include: # We pull templates from master to avoid the overhead of periodically # scanning for changes upstream. This does means builds might occasionally # break due to upstream changing things, so if you see unexpected build # failures, this might be one cause. - - project: 'wayland/ci-templates' + - project: 'freedesktop/ci-templates' ref: 'master' file: '/templates/ubuntu.yml' build-container: - extends: .fdo.container-ifnot-exists@ubuntu + extends: .fdo.container-build@ubuntu stage: container variables: GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image @@ -43,13 +51,12 @@ build-container: # Otherwise the changes won't have effect since an old container image will # be used. FDO_DISTRIBUTION_PACKAGES: >- - autoconf - automake autopoint bash-completion check curl dbus-x11 + doxygen g++ gcc gettext @@ -74,7 +81,6 @@ build-container: libssl-dev libsystemd-dev libtdb-dev - libtool libudev-dev libwebrtc-audio-processing-dev libwrap0-dev @@ -83,47 +89,33 @@ build-container: libxml-parser-perl libxml2-utils libxtst-dev - make + m4 ninja-build pkg-config python3-setuptools systemd wget -build-autotools: - stage: build - image: $UBUNTU_IMAGE - script: - - export MAKEFLAGS="-j$(nproc)" - - NOCONFIGURE=1 ./bootstrap.sh - - mkdir build - - cd build - - ../configure --localstatedir=/var - - make - - make check - - make check-daemon - - ulimit -c 0 # don't dump core files on tests that are supposed to assert - - make distcheck - artifacts: - paths: - - build/ - build-meson: + extends: .fdo.distribution-image@ubuntu stage: build - image: $UBUNTU_IMAGE script: - # Install meson - - wget -q https://github.com/mesonbuild/meson/releases/download/0.50.0/meson-0.50.0.tar.gz - - tar -xf meson-0.50.0.tar.gz - - cd meson-0.50.0 + # Install meson (higher than our min version to support our wrap file) + - wget -q https://github.com/mesonbuild/meson/releases/download/0.63.2/meson-0.63.2.tar.gz + - tar -xf meson-0.63.2.tar.gz + - cd meson-0.63.2 - python3 setup.py install - cd .. + # needed to generate a version + - git fetch https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git --tags # Do the actual build - - meson build + - meson build -Dwebrtc-aec=enabled - cd build - ninja + - ulimit -c 0 # don't dump core files on tests that are supposed to assert - ninja test - ninja test-daemon + - ninja dist artifacts: paths: - build/ diff --git a/.gitlab/merge_request_templates/Guidelines.md b/.gitlab/merge_request_templates/Guidelines.md new file mode 100644 index 000000000..2fb9a626b --- /dev/null +++ b/.gitlab/merge_request_templates/Guidelines.md @@ -0,0 +1,67 @@ +# Contribution Guidelines + +## A note for contributors + +Thank you for your contribution! + +Please make sure you tick the box labelled `Allow commits from members who can +merge to the target branch`. This allows us to make minor edits ourselves, and +then automatically rebase and merge your changes. + +PulseAudio is currently maintained by three volunteer developers in their free +time (probably amounting to less than one full time developer), which is not +really enough, given the project size and scope. For this reason bug reports +and patch submissions are sometimes handled very slowly. + +For non-trivial patches, we meet biweekly on IRC to discuss and prioritise +outstanding MRs. If you haven't heard from us a few days after you create the +MR, please take a look at [the patch status +page](https://www.freedesktop.org/wiki/Software/PulseAudio/PatchStatus/). + +If you don't see your MR in that list either, please don't hesitate to drop a +comment pinging us, and we'll try to at least respond and make sure your +request is tracked on that list. + +## Coding Style + +Please take a look at the [coding style +documentation](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/CodingStyle/) +on our wiki. + +## Commit messagse + +We follow the standard git commit message format of a summary on the first line +(<=50 characterss for preference, <=72 characters otherwise), followed by a new +line, followed by a detailed commit message. An additional line at the end may +link to an issue being fixed by this MR. + +The first line is usually a short description of "what" your commit does, and +the rest of the message describes the "why", along with any additional +information that readers might need to understand the rationale for the change. +If in doubt, more verbose is better than less. + +If you need to describe the "how" of the commit, that is usually best +documented along with the code itself. + +Commit messages are prefixed with the subsystem being affected. Your best bet +to figure out what is appropriate is to look at previous commit messages. An +example: + +``` +sink: Reduce chat sink priority + +Some gaming sound cards have custom profiles with analog-game and +analog-chat mappings that exist simultaneously. The game sink should +have higher priority than the chat sink, but currently there's no way to +affect the sink priorities from the profile-set configuration (the +mapping priority is not propagated to the sink priority). + +I first thought about adding the mapping priority to the sink priority, +but that could mess up the prioritization system in +pa_device_init_priority(). I ended up checking for the intended roles +property to reduce the chat sink priority. I also reduced the iec958 +priority so that the chat and iec958 sinks don't end up with the same +priority. + +Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/818 +``` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..82f7b1976 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,67 @@ +# Contribution Guidelines + +## A note for contributors + +Thank you for your contribution! + +Please make sure you tick the box labelled `Allow commits from members who can +merge to the target branch`. This allows us to make minor edits ourselves, and +then automatically rebase and merge your changes. + +PulseAudio is currently maintained by three volunteer developers in their free +time (probably amounting to less than one full time developer), which is not +really enough, given the project size and scope. For this reason bug reports +and patch submissions are sometimes handled very slowly. + +For non-trivial patches, we meet biweekly on IRC to discuss and prioritise +outstanding MRs. If you haven't heard from us a few days after you create the +MR, please take a look at [the patch status +page](https://www.freedesktop.org/wiki/Software/PulseAudio/PatchStatus/). + +If you don't see your MR in that list either, please don't hesitate to drop a +comment pinging us, and we'll try to at least respond and make sure your +request is tracked on that list. + +## Coding Style + +Please take a look at the [coding style +documentation](https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/CodingStyle/) +on our wiki. + +## Commit messages + +We follow the standard git commit message format of a summary on the first line +(<=50 characters for preference, <=72 characters otherwise), followed by a new +line, followed by a detailed commit message. An additional line at the end may +link to an issue being fixed by this MR. + +The first line is usually a short description of "what" your commit does, and +the rest of the message describes the "why", along with any additional +information that readers might need to understand the rationale for the change. +If in doubt, more verbose is better than less. + +If you need to describe the "how" of the commit, that is usually best +documented along with the code itself. + +Commit messages are prefixed with the subsystem being affected. Your best bet +to figure out what is appropriate is to look at previous commit messages. An +example: + +``` +sink: Reduce chat sink priority + +Some gaming sound cards have custom profiles with analog-game and +analog-chat mappings that exist simultaneously. The game sink should +have higher priority than the chat sink, but currently there's no way to +affect the sink priorities from the profile-set configuration (the +mapping priority is not propagated to the sink priority). + +I first thought about adding the mapping priority to the sink priority, +but that could mess up the prioritization system in +pa_device_init_priority(). I ended up checking for the intended roles +property to reduce the chat sink priority. I also reduced the iec958 +priority so that the chat and iec958 sinks don't end up with the same +priority. + +Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/818 +``` diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index c1ddb32cc..000000000 --- a/Makefile.am +++ /dev/null @@ -1,149 +0,0 @@ -# This file is part of PulseAudio. -# -# PulseAudio is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -ACLOCAL_AMFLAGS = -I m4 - -EXTRA_DIST = \ - bootstrap.sh \ - coverity/model.c \ - .gitlab-ci.yml \ - .gitlab/issue_templates/Bug.md \ - git-version-gen \ - LICENSE \ - pulseaudio.supp \ - GPL \ - LGPL \ - doxygen/Makefile.am \ - doxygen/Makefile.in \ - doxygen/doxygen.conf.in \ - PROTOCOL \ - README \ - CODE_OF_CONDUCT.md \ - scripts/benchmark_memory_usage.sh \ - scripts/plot_memory_usage.gp \ - scripts/benchmarks/README \ - todo \ - .gitignore \ - doxygen/.gitignore \ - m4/.gitignore \ - man/.gitignore \ - po/.gitignore \ - scripts/benchmarks/.gitignore \ - src/.gitignore \ - src/daemon/.gitignore \ - src/pulse/.gitignore \ - meson.build \ - meson_options.txt \ - doxygen/meson.build \ - man/meson.build \ - po/meson.build \ - shell-completion/bash/meson.build \ - shell-completion/zsh/meson.build \ - src/daemon/meson.build \ - src/meson.build \ - src/modules/alsa/meson.build \ - src/modules/alsa/mixer/meson.build \ - src/modules/bluetooth/meson.build \ - src/modules/echo-cancel/meson.build \ - src/modules/gsettings/meson.build \ - src/modules/gsettings/meson_post_install.py \ - src/modules/meson.build \ - src/modules/oss/meson.build \ - src/modules/raop/meson.build \ - src/modules/rtp/meson.build \ - src/pulsecore/meson.build \ - src/pulse/meson.build \ - src/tests/meson.build \ - src/tests/test-daemon.meson.sh \ - src/utils/meson.build \ - vala/meson.build - -SUBDIRS = src doxygen man po - -MAINTAINERCLEANFILES = -noinst_DATA = - -vapidir = $(datadir)/vala/vapi -dist_vapi_DATA = \ - vala/libpulse.deps vala/libpulse.vapi \ - vala/libpulse-mainloop-glib.deps vala/libpulse-mainloop-glib.vapi \ - vala/libpulse-simple.deps vala/libpulse-simple.vapi - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libpulse.pc libpulse-simple.pc - -if HAVE_GLIB20 -pkgconfig_DATA += \ - libpulse-mainloop-glib.pc -endif - -cmakedir = $(libdir)/cmake/PulseAudio -cmake_DATA = PulseAudioConfig.cmake PulseAudioConfigVersion.cmake - -bashcompletiondir=@bashcompletiondir@ -dist_bashcompletion_DATA = shell-completion/bash/pulseaudio - -install-bashcompletion-aliases: - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio pactl - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio pacmd - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio pasuspender - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio padsp - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio pacat - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio paplay - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio parec - cd $(DESTDIR)$(bashcompletiondir) && $(LN_S) -f pulseaudio parecord - -install-data-hook: install-bashcompletion-aliases - -zshcompletiondir=@zshcompletiondir@ -dist_zshcompletion_DATA = shell-completion/zsh/_pulseaudio - -homepage: all dist doxygen - test -d $$HOME/homepage/private - mkdir -p $$HOME/homepage/private/projects/pulseaudio $$HOME/homepage/private/projects/pulseaudio/doxygen - cp pulseaudio-@PACKAGE_VERSION@.tar.gz $$HOME/homepage/private/projects/pulseaudio - cp pulseaudio-@PACKAGE_VERSION@.tar.gz $$HOME/git.fedora/pulseaudio - cp -a doxygen/html/* $$HOME/homepage/private/projects/pulseaudio/doxygen - -doxygen: - $(MAKE) -C doxygen doxygen - -eolspace: - find \( -name '*.c' -o -name '*.h' -o -name 'Makefile.am' \) -exec perl -i -pe 's/\s+\n$$/\1\n/;' \{\} \; - -untabify: - find \( -name '*.c' -o -name '*.h' \) -exec perl -i -pe 's/\t/ /g;' \{\} \; - -fedora-snapshot: dist - cp $(distdir).tar.gz $$HOME/git.fedora/pulseaudio/$(distdir).tar.gz - -dist-hook: - echo $(VERSION) > $(distdir)/.tarball-version - echo $(VERSION) > $(distdir)/.version - -check-daemon: - $(MAKE) -C src check-daemon - -check-daemon-long: - $(MAKE) -C src check-daemon-long - -.PHONY: homepage distcleancheck doxygen - -# see git-version-gen -BUILT_SOURCES = $(top_srcdir)/.version -$(top_srcdir)/.version: - echo $(VERSION) > $@-t && mv $@-t $@ - -DISTCHECK_CONFIGURE_FLAGS = --with-udev-rules-dir="$$dc_install_base/lib/udev/rules.d" --with-systemduserunitdir="$$dc_install_base/lib/systemd/user" --with-bash-completion-dir="$$dc_install_base/share/bash-completion/completions" diff --git a/NEWS b/NEWS index 782a612e1..a7a5dbd90 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,454 @@ +PulseAudio 17.0 + +Changes at a glance: + * Notes for end users + * Updates to ALSA UCM-based setups + * Battery level indication to Bluetooth devices + * Support for the Bluetooth FastStream codec + * webrtc-audio-processing dependency updated + * Trigger role groups added to module-role-cork + * XDG base directory spec for profile-set loading + * Notes for application developers + * PA_RATE_MAX increased + * Notes for packagers + * webrtc-audio-processing dependency updated + +Contributors + +Alistair Leslie-Hughes +Alper Nebi Yasak +Arun Raghavan +Asier Sarasua Garmendia +Ataberk Özen +Balázs Meskó +Biswapriyo Nath +Dylan Van Assche +Eero Nurkkala +Ettore Atalan +Fabrice Fontaine +Fran Diéguez +Georg Chini +Gioele Barabucci +Gogo Gogsi +Hector Martin +Hugo Carvalho +Hui Wang +Igor V. Kovalenko +Jaechul Lee +Jan Kuparinen +Jan Palus +Jaroslav Kysela +Jiri Grönroos +Joachim Philipp +Jordi Mas +Marijn Suijten +Mart Raudsepp +Nicolas Cavallari +Peter Meerwald-Stadler +Philip Goto +Rosen Penev +Rudi Heitbaum +Sabri Ünal +Sean Greenslade +Seong-ho Cho +Shunsuke Shimizu +SimonP +Takashi Sakamoto +Tanu Kaskinen +Temuri Doghonadze +Toni Estevez +Weijia Wang +Wim Taymans +Yureka +acheronfail +flyingOwl +grimst +hashitaku +mooo +peijiankang +redfast00 +wael +김인수 + + +PulseAudio 16.1 + +A bug fix release. + + * Fix parsing of percentage volumes with decimal points in pactl + * Fix crash with the "pacmd play-file" command when reads from the disk aren't frame-aligned + * Fix module-rtp-recv sometimes thinking it's receiving an Opus stream when it's not + * Fix frequent crashing in module-combine-sink, regression in 16.0 + * Fix crashing on 32-bit architectures when using the GStreamer codecs for LDAC and AptX + +Contributors + +Georg Chini +Igor V. Kovalenko +Jaechul Lee +Jan Palus +Sean Greenslade + + +PulseAudio 16.0 + +Changes at a glance: + * Notes for end users + * Opus support in RTP modules + * Improved hardware support + * EPOS/Sennheiser GSP 670 USB/wireless headset + * SteelSeries GameDAC + * Behringer UMC22 generalized to Texas Instruments PCM2902 to support more products + * NI Komplete Audio 6 MK2 profiles + * Tunnel latency is now configurable + * Bluetooth device battery level reporting added + * Tunnel and combine-sunk latency fixes + * patcl can show information in JSON format + * Channel remixing can be disabled for module-combine-sink + * A lot of fixes to ALSA, bluetooth, and other components. + * Notes for application developers + * Stream latency reports now include resampler delay + * Module installation location changed, remember to upgrade paprefs to the latest version! + * Notes for packagers + * Opus support in the RTP modules requires enabling GStreamer + * Bluetooth battery level reporting via BlueZ requires enabling experimentals features in BlueZ + * New time smoother implementation + * Change Meson option 'daemon-only' to 'client' + * glib and fftw are now common dependencies, not only for the client. + * Enable GStreamer-based RTP by default when available + +Detailed change log: + + https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/16.0/ + +Contributors + +Alexey Rubtsov +Anders Jonsson +Andika Triwidada +Arun Raghavan +Biswapriyo Nath +BtbN +Chengyi Zhao +Chupligin Sergey +Craig Howard +Daniel Dantur +Daniel Hernandez +Diederik de Haas +Dylan Van Assche +Emilio Herrera +Ettore Atalan +Fran Diéguez +Georg Chini +Gogo Gogsi +Göran Uddeborg +Hela Basa +Hui Wang +Igor V. Kovalenko +Jan Kuparinen +Jaroslav Kysela +Josef Haider +João Paulo Rechi Vita +Juho Hämäläinen +Karl Ove Hufthammer +Laurent Bigonville +Luna Jernberg +Lv Genggeng +Marijn Suijten +Mart Raudsepp +Mathy Vanvoorden +Olivier Gayot +Ovari +Oğuz Ersen +Piotr Drąg +Rafael Fontenelle +Rico Tzschichholz +Sanchayan Maity +Sebastian Reichel +Sergey A +Sibo Dong +Sungjoon Moon +Takashi Sakamoto +Takuro Onoue +Tanu Kaskinen +Temuri Doghonadze +Will Thompson +Yuri Chornoivan +acheronfail +baek inchan +guest271314 +liaohanqin +simmon +simple +tensorknower69 +김인수 + + +PulseAudio 15.0 + +Changes at a glance: + + * Notes for end users + * Support for LDAC and AptX bluetooth codecs, plus "SBC XQ" (SBC with higher-quality parameters) + * Support for HFP bluetooth profiles + * Support for Bluetooth A2DP AVRCP Absolute Volume + * ALSA path configuration files can now be placed in user home directory + * module-virtual-surround-sink rewritten + * More options for module-jackdbus-detect + * Improved hardware support + * SteelSeries Arctis 9 + * HP Thunderbolt Dock 120W G2 + * Behringer U-Phoria UMC22 + * OnePlus Type-C Bullets + * Sennheiser GSX 1000/1200 PRO + * New udev variable: PULSE_MODARGS + * max_latency_msec argument added to module-null-source + * module-filter-apply can take filter parameters from device properties + * module-match can now be loaded multiple times + * Improvements to FreeBSD support + * Windows support added to Meson + * Additional commands for pactl + * Card profiles can be set to sticky + * Notes for application developers + * New API for sending messages from clients to PulseAudio objects + * New mechanism for applications to disable shared memory on their connection to PulseAudio + * Notes for packagers + * Autotools build system have been dropped + * The startup script can now read additional configuration from the /etc/pulse/default.pa.d/ directory + * Option to build client library and utilities only + * Avoid loading X11 modules on Wayland (GNOME-only for now) + * OSS support is now configurable in Meson + * Valgrind support is now configurable in Meson + +Detailed change log: + + https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/15.0/ + +Contributors + +Alexey Rubtsov +Alper Nebi Yasak +Anders Jonsson +Arun Raghavan +Ben Buchwald +Benjamin Valentin +Carlos Garnacho +Carmen Bianca Bakker +Christopher Arndt +Christopher Snowhill +David +Dusan Kazik +Edward Lee +Emilio Herrera +Evan Miller +Fabian Affolter +Faidon Liambotis +Felipe Sateler +Frédéric Danis +Georg Chini +Greg V +Göran Uddeborg +Hela Basa +Henri Chain +Hui Wang +Igor V. Kovalenko +Ilja van Sprundel +Jaechul Lee +James Bottomley +Jan Alexander Steffens (heftig) +Jan Kuparinen +Jaroslav Kysela +Jason Nader +Johannes Wolf +Julien Humbert +Kai-Heng Feng +Karl Ove Hufthammer +Klaas van Schelven +Laurent Bigonville +Laurențiu Nicola +Lyndon Brown +Marijn Suijten +Martin Wilck +Mattias Jernberg +Milo Casagrande +Nazar Mokrynskyi +Oğuz Ersen +Patrick Gaskin +Patrick McLean +Paul Seyfert +Pierre Ossman +Piotr Drąg +Pjotr Vertaalt +Ricky Tigg +Robin Lahtinen +Samuel Thibault +Sanchayan Maity +Scott Worley +Sebastian Krzyszkowiak +SimonP +Takashi Sakamoto +Tanu Kaskinen +Tobias Weise +Toni Estevez +Yaron Shahrabani +Yuri Chornoivan +morrishoresh +pseyfert +scootergrisen +simmon + + +PulseAudio 14.2 + +A bug fix release. + + * Fix port switching when unplugging headphones + +Contributors + + Tanu Kaskinen + + +PulseAudio 14.1 + +A bug fix release. + + * Support upto 8 mixer channels on ALSA devices + * Handle ALSA jacks with the same name but different index values + * Switch to plugged-in headset when mic availability is unknown + * Fix a potential segfault in the Bluetooth oFono HFP backend + * Fix a problem with module-ladspa-sink when avoid-resampling=true + * Fix database names containing canonical host for meson builds + +Contributors + + Arun Raghavan + Hui Wang + Igor V. Kovalenko + Jaroslav Kysela + Kai-Heng Feng + Patrick Gaskin + Tanu Kaskinen + morrishoresh + + +PulseAudio 14.0 + +Changes at a glance: + + * Notes for end users + * Significant routing changes to default sinks/sources + * Changing the default sink moves streams from the old default sink to the new + * Moving a stream to the default sink removes the "manually routed" status of the stream + * If a sink changes status to available, streams that prefer that sink move there automatically + * The same changes have been applied to the source stream routing + * Workaround for GNOME Sound Settings' stream routing behaviour + * module-rescue-streams is deprecated, functionality moved to the core + * New rescue-streams option in daemon.conf + * Automatic switching to HDMI is now disabled by default + * Better support for some USB gaming headsets + * Flat volumes are now disabled by default + * The RAOP sink can be configured to automatically reconnect on connection failures + * Separate sink_channels and source_channels for module-jackdbus-detect + * Improved support for ALSA UCM + * Support for ALSA mixer controls with non-zero index + * It's now possible to set intended roles for devices in the ALSA profile configuration + * Ports now have a type associated with them + * Mappings have a new "description-key" option in the ALSA profile configuration + * New xauthority argument for X11 modules + * module-null-sink's compressed format support can now be configured at run-time + * The enable-lfe-remixing option in daemon.conf was split into remixing-produce-lfe and remixing-consume-lfe + * New channel_map argument for module-raop-sink + * Notes for application developers + * pa_mainloop_prepare interprets the timeout argument as microseconds again + * New availability_group and type fields in the port info structs + * New macros: PA_LIKELY(), PA_UNLIKELY(), PA_CLAMP() and PA_CLAMP_UNLIKELY() + * Notes for packagers + * New GStreamer-based RTP implementation + * qpaeq switched from Python 2 to Python 3 + * Compile-time option to forget pre-14.0 stream routing + * The install path of the ALSA configuration files is now configurable + * GNU gettext minimum version requirement bumped from 0.19.3 to 0.19.8 + * Heads-up: dropping autotools build system + * Heads-up: dropping EsounD support is considered, tell us if you still need it + * Heads-up: dropping GConf support + +Detailed change log: + + https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/14.0/ + +Contributors + + Alexander E. Patrakov + Arun Raghavan + Balázs Meskó + Baurzhan Muftakhidinov + Ben Buchwald + Daniil Kovalev + Dave Chiluk + David Heidelberg + Dusan Kazik + Eero Nurkkala + Emanuil Novachev + Emilio Herrera + Felipe Sateler + Felix Yan + Geert Warrink + Georg Chini + Göran Uddeborg + Hugo Osvaldo Barrera + Hui Wang + Igor V. Kovalenko + Jan Alexander Steffens + Jarno Suni + Jaroslav Kysela + Jaska Uimonen + Jean-Baptiste Holcroft + Josh + Juliano de Souza Camargo + Kai-Heng Feng + Karl Ove Hufthammer + Khem Raj + Krzysztof Stasiowski + Laurent Bigonville + Libin Yang + Marc Ranolfi + Michael Pivonka + Milo Casagrande + Milo Ivir + Nick Moriarty + Oğuz Ersen + Pali Rohár + Peter Levine + Peter Meerwald + Philip Withnall + Piotr Drąg + RODRIGUEZ Christophe + Rafael Fontenelle + Ralph Seichter + Rasmus Thomsen + Rickie Schroeder + Rosen Penev + Ryszard Knop + Sanchayan Maity + Sebastian Dröge + Sebastien + StefanBruens + Taahir Ahmed + Tanu Kaskinen + Timo Gurr + Tom Yan + Tomasz Kontusz + Vasilis Tsiligiannis + Wim Taymans + Yi-Jyun Pan + Yuri Chornoivan + itsthem + muzena + roshal + zhaochengyi + + PulseAudio 13.0 Changes at a glance: diff --git a/PROTOCOL b/PROTOCOL index 4307898c2..72d3af3c0 100644 --- a/PROTOCOL +++ b/PROTOCOL @@ -435,6 +435,23 @@ sink, source and card ports): string availability_group uint32 type +## v35, implemented by >= 15.0 + +Added new command for communication with objects. + +PA_COMMAND_SEND_OBJECT_MESSAGE: +sends a message to an object identified by an object path + +parameters: + string object_path - unique path identifying the object + string message - message name + string message_parameters - additional parameters if required (may be + NULL, which should be treated the same as an + empty string) + +The command returns a string, which may be empty or NULL (NULL should be +treated the same as an empty string). + #### If you just changed the protocol, read this ## module-tunnel depends on the sink/source/sink-input/source-input protocol ## internals, so if you changed these, you might have broken module-tunnel. diff --git a/README b/README index 1668fd670..7a05705aa 100644 --- a/README +++ b/README @@ -19,7 +19,7 @@ TRAC/BUGZILLA TICKET CHANGES MAILING LIST: http://lists.freedesktop.org/mailman/listinfo/pulseaudio-bugs IRC: - #pulseaudio on irc.freenode.org + https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Community/#ircandmatrix FRESHMEAT: http://freshmeat.net/projects/pulseaudio/ @@ -31,13 +31,10 @@ AUTHORS: Several HACKING: - In order to run pulseaudio from the build dir __OPTIMIZE__ should be - disabled (look at src/pulsecore/core-util.h::pa_run_from_build_tree()), - this can be done by passing "CFLAGS=-O0" to the configure script: - ./autogen.sh - CFLAGS="-ggdb3 -O0" LDFLAGS="-ggdb3" ./configure - make - ./src/pulseaudio -n -F src/default.pa -p $(pwd)/src/ + In order to run pulseaudio from the build dir: + meson build + meson compile -C build + build/src/daemon/pulseaudio -n -F build/src/daemon/default.pa -p $(pwd)/build/src/modules/ SPELLING: PulseAudio diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index f89eace8b..000000000 --- a/autogen.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# This file is part of PulseAudio. -# -# PulseAudio is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -# Only there to make jhbuild happy - -NOCONFIGURE=1 ./bootstrap.sh - -exec ./configure "$@" diff --git a/bootstrap.sh b/bootstrap.sh deleted file mode 100755 index 5045466c0..000000000 --- a/bootstrap.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -# This file is part of PulseAudio. -# -# PulseAudio is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -if [ -f .git/hooks/pre-commit.sample -a ! -f .git/hooks/pre-commit ] ; then - cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit && \ - chmod +x .git/hooks/pre-commit && \ - echo "Activated pre-commit hook." -fi - -if [ -f .tarball-version ]; then - echo "Marking tarball version as modified." - echo -n `cat .tarball-version | sed 's/-rebootstrapped$//'`-rebootstrapped >.tarball-version -fi - -# We check for this here, because if pkg-config is not found in the -# system, it's likely that the pkg.m4 macro file is also not present, -# which will make PKG_PROG_PKG_CONFIG be undefined and the generated -# configure file faulty. -if ! pkg-config --version &>/dev/null; then - echo "pkg-config is required to bootstrap this program" - exit 1 -fi -# Other necessary programs -if ! autopoint --version &>/dev/null ; then - echo "autopoint is required to bootstrap this program" - exit 1 -fi - -autoreconf --force --install --verbose - -if test "x$NOCONFIGURE" = "x"; then - CFLAGS="$CFLAGS -g -O0" ./configure --enable-force-preopen "$@" && \ - make clean -fi diff --git a/configure.ac b/configure.ac deleted file mode 100644 index a519e63d7..000000000 --- a/configure.ac +++ /dev/null @@ -1,1778 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -# This file is part of PulseAudio. -# -# Copyright 2004-2008 Lennart Poettering -# Copyright 2006-2007 Pierre Ossman for Cendio AB -# -# PulseAudio is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -AC_PREREQ(2.63) - -AC_INIT([pulseaudio],[m4_esyscmd(./git-version-gen .tarball-version)],[pulseaudio-discuss (at) lists (dot) freedesktop (dot) org],[pulseaudio],[http://pulseaudio.org/]) -AC_CONFIG_SRCDIR([src/daemon/main.c]) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_AUX_DIR([build-aux]) -AM_INIT_AUTOMAKE([foreign 1.11 -Wall -Wno-portability subdir-objects silent-rules color-tests dist-xz tar-ustar]) - -AM_MAINTAINER_MODE([enable]) - -AS_IF([! test -n "$VERSION"], [ - AC_MSG_ERROR([git-version-gen failed]) -]) - -m4_define(pa_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`) -m4_define(pa_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`) - -AC_SUBST(PA_MAJOR, pa_major) -AC_SUBST(PA_MINOR, pa_minor) -AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor) - -AC_SUBST(PA_API_VERSION, 12) -AC_SUBST(PA_PROTOCOL_VERSION, 34) - -# The stable ABI for client applications, for the version info x:y:z -# always will hold x=z -AC_SUBST(LIBPULSE_VERSION_INFO, [23:0:23]) - -# A simplified, synchronous, ABI-stable interface for client -# applications, for the version info x:y:z always will hold x=z -AC_SUBST(LIBPULSE_SIMPLE_VERSION_INFO, [1:1:1]) - -# The ABI-stable GLib adapter for client applications, for the version -# info x:y:z always will hold x=z -AC_SUBST(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO, [0:6:0]) - -AC_CANONICAL_HOST -AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.]) - -AC_CHECK_PROG([STOW], [stow], [yes], [no]) - -AS_IF([test "x$STOW" = "xyes" && test -d /usr/local/stow], [ - AC_MSG_NOTICE([*** Found /usr/local/stow: default install prefix set to /usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION} ***]) - ac_default_prefix="/usr/local/stow/${PACKAGE_NAME}-${PACKAGE_VERSION}" -]) - -AM_SILENT_RULES([yes]) - - -#### Checks for programs. #### - -# mkdir -p - -AC_PROG_MKDIR_P - -# ln -s - -AC_PROG_LN_S - -# CC - -AC_PROG_CC -AM_PROG_CC_C_O -# Only required if you want the WebRTC canceller -- no runtime dep on -# libstdc++ otherwise -AC_PROG_CXX -AC_PROG_GCC_TRADITIONAL -AC_USE_SYSTEM_EXTENSIONS -AX_CXX_COMPILE_STDCXX_11([ext],[optional]) - -# M4 - -AC_CHECK_PROGS([M4], gm4 m4, no) -AS_IF([test "x$M4" = "xno"], AC_MSG_ERROR([m4 missing])) - -# pkg-config - -PKG_PROG_PKG_CONFIG - -# gettext - -AM_GNU_GETTEXT_VERSION([0.19.8]) -AM_GNU_GETTEXT([external]) - -GETTEXT_PACKAGE=pulseaudio -AC_SUBST([GETTEXT_PACKAGE]) -AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package]) - - -#### Determine host OS #### - -# if the host has the possibility of sys/capability.h for dropping privileges -# used to determine if we should error out if it is not found -host_has_caps=0 - -os_is_linux=0 -os_is_win32=0 -os_is_darwin=0 - -AC_MSG_CHECKING([host operating system]) -case "$host_os" in - linux*) - AC_MSG_RESULT([linux]) - host_has_caps=1 - os_is_linux=1 - ;; - freebsd*) - AC_MSG_RESULT([freebsd]) - host_has_caps=1 - ;; - netbsd*) - AC_MSG_RESULT([netbsd]) - ;; - darwin*) - AC_MSG_RESULT([darwin]) - os_is_darwin=1 - AC_DEFINE([OS_IS_DARWIN], 1, [Build target is Darwin.]) - ;; - mingw*) - AC_MSG_RESULT([win32]) - os_is_win32=1 - AC_DEFINE([OS_IS_WIN32], 1, [Build target is Windows.]) - ;; - *) - AC_MSG_RESULT([unknown]) - ;; -esac - -AM_CONDITIONAL(OS_IS_DARWIN, test "x$os_is_darwin" = "x1") -AM_CONDITIONAL(OS_IS_WIN32, test "x$os_is_win32" = "x1") -AC_SUBST([OS_IS_WIN32], [$os_is_win32]) - -# Platform specific hacks -case "$host_os" in - darwin* ) - AC_DEFINE([_DARWIN_C_SOURCE], [200112L], [Needed to get NSIG on Mac OS X]) - ;; - mingw* ) - AC_DEFINE([WIN32_LEAN_AND_MEAN], 1, [Needed to avoid including unnecessary headers on Windows]) - ;; - solaris* ) - AC_DEFINE(_XOPEN_SOURCE, 600, [Needed to get declarations for msg_control and msg_controllen on Solaris]) - AC_DEFINE(__EXTENSIONS__, 1, [Needed to get declarations for msg_control and msg_controllen on Solaris]) - ;; -esac - - -#### Compiler flags #### - -AX_CHECK_COMPILE_FLAG([-std=gnu11], - [], - [AC_MSG_ERROR([*** Compiler does not support -std=gnu11])], - [-pedantic -Werror]) - -AX_APPEND_COMPILE_FLAGS( - [-Wall -W -Wextra -pipe -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -fno-common -fdiagnostics-show-option -fdiagnostics-color=auto], - [], [-pedantic -Werror]) - -AS_CASE([" $CFLAGS "], [*" -O0 "*], [], [ - # Don't append the flag if it already exists. - # Only enable fastpath asserts when doing a debug build, e.g. from bootstrap.sh. - AX_APPEND_FLAG([-DFASTPATH], [CPPFLAGS]) - - # Cannot use AX_APPEND_FLAG here, as it assumes no space inside the added flags. - # Cannot append flags with AX_APPEND_FLAG one by one, as this would destroy all fortifications - # if CPPFLAGS already contain -D_FORTIFY_SOURCE=2. - - # Warnings to be aware of that appear with -D_FORTIFY_SOURCE=2 but without -U_FORTIFY_SOURCE: - # On Fedora 20 with -O0: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp] - # On Gentoo with -O2: "_FORTIFY_SOURCE" redefined [enabled by default] - AS_VAR_APPEND([CPPFLAGS],[" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2"]) -]) - -#### Linker flags #### - -# Check whether the linker supports the -version-script option. -# The Make variable $(srcdir) needs to be in the LDFLAGS in that form, -# so that it is expanded the right way in every subdir. -AX_CHECK_LINK_FLAG(["-Wl,-version-script=${srcdir}/src/map-file"], - [VERSIONING_LDFLAGS='-Wl,-version-script=$(abs_top_srcdir)/src/map-file']) -AC_SUBST([VERSIONING_LDFLAGS]) - -# Use immediate (now) bindings; avoids the funky re-call in itself. -# The -z now syntax is lifted from Sun's linker and works with GNU's too, other linkers might be added later. -AX_APPEND_LINK_FLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS]) -AC_SUBST([IMMEDIATE_LDFLAGS]) -AS_CASE([$IMMEDIATE_LDFLAGS],[*-z,now*], - [AC_DEFINE([HAVE_BIND_NOW],[1], - [Define to 1 if immediate binding is available])]) - -# On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly, -# so we request the nodelete flag to be enabled. -# On other systems, we don't really know how to do that, but it's welcome if somebody can tell. -AX_APPEND_LINK_FLAGS([-Wl,-z,nodelete], [NODELETE_LDFLAGS], [-shared]) -AC_SUBST([NODELETE_LDFLAGS]) - -# Check for the proper way to build libraries that have no undefined symbols -case $host in - # FreeBSD (et al.) does not complete linking for shared objects when pthreads - # are requested, as different implementations are present. - *-freebsd* | *-openbsd*) ;; - *) - for possible_flag in "-Wl,--no-undefined" "-Wl,-z,defs"; do - AX_CHECK_LINK_FLAG([$possible_flag], [NOUNDEFINED_LDFLAGS="$possible_flag"; break]) - done - ;; -esac -AC_SUBST([NOUNDEFINED_LDFLAGS]) - - -#### Atomic operations #### - -# Native atomic operation support -AC_ARG_ENABLE([atomic-arm-linux-helpers], - AS_HELP_STRING([--disable-atomic-arm-linux-helpers],[use inline asm or libatomic_ops instead])) - -AC_ARG_ENABLE([atomic-arm-memory-barrier], - AS_HELP_STRING([--enable-atomic-arm-memory-barrier],[only really needed in SMP arm systems])) - -if test "x$enable_atomic_arm_memory_barrier" = "xyes"; then - AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers]) -fi - -# If everything else fails use libatomic_ops -need_libatomic_ops=yes - -AC_CACHE_CHECK([whether $CC knows __atomic_store_n()], - pulseaudio_cv_atomic_store_n, [ - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([], [[int c = 0; __atomic_store_n(&c, 4, __ATOMIC_SEQ_CST);]])], - [pulseaudio_cv_atomic_store_n=yes], - [pulseaudio_cv_atomic_store_n=no]) - ]) - - -AC_CACHE_CHECK([whether $CC knows __sync_bool_compare_and_swap()], - pulseaudio_cv_sync_bool_compare_and_swap, [ - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([], [[int a = 4; __sync_bool_compare_and_swap(&a, 4, 5);]])], - [pulseaudio_cv_sync_bool_compare_and_swap=yes], - [pulseaudio_cv_sync_bool_compare_and_swap=no]) - ]) - -if test "$pulseaudio_cv_sync_bool_compare_and_swap" = "yes" ; then - AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.]) - if test "$pulseaudio_cv_atomic_store_n" = "yes" ; then - AC_DEFINE([HAVE_ATOMIC_BUILTINS_MEMORY_MODEL], 1, [Have __atomic_store_n() and friends.]) - fi - need_libatomic_ops=no -else - # HW specific atomic ops stuff - AC_MSG_CHECKING([architecture for native atomic operations]) - case $host in - *-netbsd*) - AC_MSG_RESULT([yes]) - need_libatomic_ops=no - ;; - arm*) - AC_MSG_RESULT([arm]) - AC_MSG_CHECKING([whether we can use Linux kernel helpers]) - # The Linux kernel helper functions have been there since 2.6.16. However - # compile time checking for kernel version in cross compile environment - # (which is usually the case for arm cpu) is tricky (or impossible). - if test "x$os_is_linux" = "x1" && test "x$enable_atomic_arm_linux_helpers" != "xno"; then - AC_MSG_RESULT([yes]) - AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation]) - need_libatomic_ops=no - else - AC_MSG_RESULT([no]) - AC_CACHE_CHECK([compiler support for arm inline asm atomic operations], - pulseaudio_cv_support_arm_atomic_ops, [ - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([], [[ - volatile int a=0; - int o=0, n=1, r; - asm volatile ("ldrex %0, [%1]\n" - "subs %0, %0, %2\n" - "strexeq %0, %3, [%1]\n" - : "=&r" (r) - : "r" (&a), "Ir" (o), "r" (n) - : "cc"); - return (a==1 ? 0 : -1); - ]])], - [pulseaudio_cv_support_arm_atomic_ops=yes], - [pulseaudio_cv_support_arm_atomic_ops=no]) - ]) - AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [ - AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.]) - need_libatomic_ops=no - ]) - fi - ;; - *-freebsd*) - AC_MSG_RESULT([yes]) - need_libatomic_ops=no - ;; - *) - AC_MSG_RESULT([unknown]) - ;; - esac -fi - -# If we're on ARM, check for the ARMV6 instructions we need */ -case $host in - arm*) - AC_CACHE_CHECK([support for required armv6 instructions], - pulseaudio_cv_support_armv6, - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([], - [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd; - asm volatile ("ldr r0, %2 \n" - "ldr r2, %3 \n" - "ldr r3, %4 \n" - "ssat r1, #8, r0 \n" - "str r1, %0 \n" - "pkhbt r1, r3, r2, LSL #8 \n" - "str r1, %1 \n" - : "=m" (a), "=m" (b) - : "m" (a), "m" (b), "m" (c) - : "r0", "r1", "r2", "r3", "cc"); - return (a == -128 && b == 0xaabbdddd) ? 0 : -1; - ]])], - [pulseaudio_cv_support_armv6=yes], - [pulseaudio_cv_support_armv6=no]) - ]) - AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [ - AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.]) - ]) - ;; - *) - ;; -esac - -#### NEON optimisations #### -AC_ARG_ENABLE([neon-opt], - AS_HELP_STRING([--enable-neon-opt], [Enable NEON optimisations on ARM CPUs that support it])) - -AS_IF([test "x$enable_neon_opt" != "xno"], - [save_CFLAGS="$CFLAGS"; CFLAGS="-mfpu=neon $CFLAGS" - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[#include ]], [])], - [ - HAVE_NEON=1 - NEON_CFLAGS="-mfpu=neon" - ], - [ - HAVE_NEON=0 - NEON_CFLAGS= - ]) - CFLAGS="$save_CFLAGS" - ], - [HAVE_NEON=0]) - -AS_IF([test "x$enable_neon_opt" = "xyes" && test "x$HAVE_NEON" = "x0"], - [AC_MSG_ERROR([*** Compiler does not support -mfpu=neon or CFLAGS override -mfpu])]) - -AC_SUBST(HAVE_NEON) -AC_SUBST(NEON_CFLAGS) -AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = x1]) -AS_IF([test "x$HAVE_NEON" = "x1"], AC_DEFINE([HAVE_NEON], 1, [Have NEON support?])) - - -#### libtool stuff #### - -LT_PREREQ(2.4) -LT_INIT([dlopen win32-dll disable-static]) - -dnl As an extra safety device, check for lt_dladvise_init() which is -dnl only implemented in libtool 2.x, and refine as we go if we have -dnl refined requirements. -dnl -dnl Check the header files first since the system may have a -dnl libltdl.so for runtime, but no headers, and we want to bail out as -dnl soon as possible. -dnl -dnl We don't need any special variable for this though, since the user -dnl can give the proper place to find libltdl through the standard -dnl variables like LDFLAGS and CPPFLAGS. - -AC_CHECK_HEADER([ltdl.h], - [AC_CHECK_LIB([ltdl], [lt_dladvise_init], [LIBLTDL=-lltdl], [LIBLTDL=])], - [LIBLTDL=]) - -AS_IF([test "x$LIBLTDL" = "x"], - [AC_MSG_ERROR([Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed.])]) -AC_SUBST([LIBLTDL]) - - -################################### -# Basic environment checks # -################################### - -#### Checks for header files. #### - -# ISO -AC_HEADER_STDC - -# POSIX -AC_CHECK_HEADERS_ONCE([arpa/inet.h cpuid.h glob.h grp.h netdb.h netinet/in.h \ - netinet/in_systm.h netinet/tcp.h poll.h pwd.h sched.h \ - sys/mman.h sys/select.h sys/socket.h sys/wait.h \ - sys/uio.h syslog.h sys/dl.h dlfcn.h linux/sockios.h]) -AC_CHECK_HEADERS([netinet/ip.h], [], [], - [#include - #if HAVE_NETINET_IN_H - # include - #endif - #if HAVE_NETINET_IN_SYSTM_H - # include - #endif - ]) -AC_CHECK_HEADERS([sys/resource.h], [HAVE_SYS_RESOURCE_H=1], [HAVE_SYS_RESOURCE_H=0]) -AC_SUBST(HAVE_SYS_RESOURCE_H) -AC_CHECK_HEADERS([sys/un.h], [HAVE_AF_UNIX=1], [HAVE_AF_UNIX=0]) -AM_CONDITIONAL(HAVE_AF_UNIX, test "x$HAVE_AF_UNIX" = "x1") -AC_SUBST(HAVE_AF_UNIX) - -# Linux -AC_CHECK_HEADERS([linux/input.h], [HAVE_EVDEV=1], [HAVE_EVDEV=0]) -AM_CONDITIONAL([HAVE_EVDEV], [test "x$HAVE_EVDEV" = "x1"]) - -AC_CHECK_HEADERS_ONCE([sys/prctl.h]) - -# Solaris -AC_CHECK_HEADERS_ONCE([sys/conf.h sys/filio.h]) - -# Windows -AC_CHECK_HEADERS_ONCE([windows.h winsock2.h ws2tcpip.h]) - -# NetBSD -AC_CHECK_HEADERS_ONCE([sys/atomic.h]) - -# Other -AC_CHECK_HEADERS_ONCE([sys/ioctl.h]) -AC_CHECK_HEADERS_ONCE([byteswap.h]) -AC_CHECK_HEADERS_ONCE([sys/syscall.h]) -AC_CHECK_HEADERS_ONCE([sys/eventfd.h]) -AC_CHECK_HEADERS_ONCE([execinfo.h]) -AC_CHECK_HEADERS_ONCE([langinfo.h]) -AC_CHECK_HEADERS_ONCE([regex.h pcreposix.h]) -AC_CHECK_HEADERS_ONCE([locale.h xlocale.h]) - -AM_CONDITIONAL(HAVE_SYS_EVENTFD_H, test "x$ac_cv_header_sys_eventfd_h" = "xyes") - -#### Typdefs, structures, etc. #### - -AC_C_CONST -AC_C_BIGENDIAN -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_CHECK_TYPES(ssize_t, , AC_DEFINE([ssize_t], [signed long], [Define ssize_t if it is not done by the standard libs.])) -AC_TYPE_OFF_T - -AC_TYPE_UID_T -AC_CHECK_DECLS(environ) - -AC_CHECK_SIZEOF(void*) - -fast_64bit_operations="no" -# This check covers x32-ABI -AC_CHECK_DECL([__x86_64__], [fast_64bit_operations="yes"], [], []) -if test "x$fast_64bit_operations" = "xno"; then - AS_IF([test $ac_cv_sizeof_voidp -ge 8], [fast_64bit_operations="yes"]) -fi - -AS_IF([test "x$fast_64bit_operations" = "xyes"], AC_DEFINE([HAVE_FAST_64BIT_OPERATIONS], 1, [Have CPU with fast 64-bit operations?])) - -# SIGXCPU -AX_CHECK_DEFINE([signal.h], [SIGXCPU], [HAVE_SIGXCPU=1], [HAVE_SIGXCPU=0]) -AS_IF([test "x$HAVE_SIGXCPU" = "x1"], AC_DEFINE([HAVE_SIGXCPU], 1, [Have SIGXCPU?])) -AM_CONDITIONAL(HAVE_SIGXCPU, test "x$HAVE_SIGXCPU" = "x1") - -# INADDR_NONE, Solaris lacks this -AX_CHECK_DEFINE([netinet/in.h], [INADDR_NONE], [], - [AX_CHECK_DEFINE([winsock2.h], [INADDR_NONE], [], - [AC_DEFINE([INADDR_NONE], [0xffffffff], [Define INADDR_NONE if not found in ])])]) - - -# _Bool -AC_CACHE_CHECK([whether $CC knows _Bool], - pulseaudio_cv__Bool, - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([], [[_Bool b;]])], - [pulseaudio_cv__Bool=yes], - [pulseaudio_cv__Bool=no]) - ]) - -AS_IF([test "$pulseaudio_cv__Bool" = "yes"], AC_DEFINE([HAVE_STD_BOOL], 1, [Have _Bool.])) - - -#### Check for libs #### - -# ISO -AC_SEARCH_LIBS([pow], [m]) - -# POSIX -AC_SEARCH_LIBS([sched_setscheduler], [rt]) -AC_SEARCH_LIBS([dlopen], [dl]) -AC_SEARCH_LIBS([shm_open], [rt]) -AC_SEARCH_LIBS([inet_ntop], [nsl]) -AC_SEARCH_LIBS([timer_create], [rt]) -AC_SEARCH_LIBS([pthread_setaffinity_np], [pthread]) -AC_SEARCH_LIBS([pthread_getname_np], [pthread]) -AC_SEARCH_LIBS([pthread_setname_np], [pthread]) - -# BSD -AC_SEARCH_LIBS([connect], [socket]) -AC_SEARCH_LIBS([backtrace], [execinfo ubacktrace]) - -# Darwin/OS X -if test "x$os_is_darwin" = "x1" ; then - AC_MSG_CHECKING([looking for Apple CoreService Framework]) - AC_CHECK_HEADER([CoreServices/CoreServices.h], - [LIBS="$LIBS -framework CoreServices"], - [AC_MSG_ERROR([CoreServices.h header file not found])] - ) - - AC_MSG_RESULT([ok]) - AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Using clock_gettime() replacement]) - HAVE_BONJOUR=1 -fi - -AM_CONDITIONAL([HAVE_BONJOUR], [test "x$HAVE_BONJOUR" = x1]) - -# Windows -AC_SEARCH_LIBS([regexec], [pcreposix]) -# This magic is needed so we do not needlessly add static libs to the win32 build, disabling its ability to make dlls. -AC_CHECK_FUNCS([getopt_long], [], [AC_CHECK_LIB([iberty], [getopt_long])]) - - -#### Check for functions #### - -# ISO -AC_CHECK_FUNCS_ONCE([lrintf strtof]) - -# POSIX -AC_FUNC_FORK -AC_FUNC_GETGROUPS -AC_CHECK_FUNCS_ONCE([chmod chown fstat fchown fchmod clock_gettime getaddrinfo getgrgid_r getgrnam_r \ - getpwnam_r getpwuid_r gettimeofday getuid mlock nanosleep \ - pipe posix_fadvise posix_madvise posix_memalign setpgid setsid shm_open \ - sigaction sleep symlink sysconf uname pthread_getname_np pthread_setname_np]) -AC_CHECK_FUNCS([mkfifo], [HAVE_MKFIFO=1], [HAVE_MKFIFO=0]) -AC_SUBST(HAVE_MKFIFO) -AM_CONDITIONAL(HAVE_MKFIFO, test "x$HAVE_MKFIFO" = "x1") -AC_CHECK_FUNCS([pthread_setaffinity_np], [HAVE_PTHREAD_SETAFFINITY_NP=1], [HAVE_PTHREAD_SETAFFINITY_NP=0]) -AM_CONDITIONAL(HAVE_PTHREAD_SETAFFINITY_NP, test "x$HAVE_PTHREAD_SETAFFINITY_NP" = "x1") - -# X/OPEN -AC_CHECK_FUNCS_ONCE([readlink]) - -# SUSv2 -AC_CHECK_FUNCS_ONCE([ctime_r usleep]) - -# SUSv3 -AC_CHECK_FUNCS_ONCE([strerror_r]) - -# BSD -AC_CHECK_FUNCS_ONCE([lstat paccept]) - -# Non-standard -AC_CHECK_FUNCS_ONCE([setresuid setresgid setreuid setregid seteuid setegid ppoll strsignal sig2str strtod_l pipe2 accept4]) - -AC_FUNC_ALLOCA - -AC_CHECK_FUNCS([regexec], [HAVE_REGEX=1], [HAVE_REGEX=0]) -AM_CONDITIONAL(HAVE_REGEX, [test "x$HAVE_REGEX" = "x1"]) - -# Large File-Support (LFS) -AC_SYS_LARGEFILE -# Check for open64 to know if the current system does have open64() and similar functions -AC_CHECK_FUNCS_ONCE([open64]) - -AC_SEARCH_LIBS([dladdr], [dl], [HAVE_DLADDR=1], [HAVE_DLADDR=0]) -AC_DEFINE(HAVE_DLADDR, [1], [Have dladdr?]) - -################################### -# External libraries # -################################### - -#### [lib]iconv #### - -AM_ICONV - -#### Linux memfd_create(2) SHM support #### - -AC_ARG_ENABLE([memfd], - AS_HELP_STRING([--disable-memfd], [Disable Linux memfd shared memory])) - -AS_IF([test "x$enable_memfd" != "xno"], - AC_CHECK_DECL(SYS_memfd_create, [HAVE_MEMFD=1], [HAVE_MEMFD=0], [#include ]), - [HAVE_MEMFD=0]) - -AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"], - [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory. - *** Use linux v3.17 or higher for such a feature.])]) - -AS_IF([test "x$HAVE_MEMFD" = "x1"], - AC_CHECK_FUNCS([memfd_create])) - -AC_SUBST(HAVE_MEMFD) -AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1]) -AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.])) - -#### X11 (optional) #### - -AC_ARG_ENABLE([x11], - AS_HELP_STRING([--disable-x11],[Disable optional X11 support])) - -AS_IF([test "x$enable_x11" != "xno"], - [PKG_CHECK_MODULES(X11, [ x11-xcb xcb >= 1.6 ice sm xtst ], HAVE_X11=1, HAVE_X11=0)], - HAVE_X11=0) - -AS_IF([test "x$enable_x11" = "xyes" && test "x$HAVE_X11" = "x0"], - [AC_MSG_ERROR([*** X11 not found])]) - -AC_SUBST(HAVE_X11) -AM_CONDITIONAL([HAVE_X11], [test "x$HAVE_X11" = x1]) -AS_IF([test "x$HAVE_X11" = "x1"], AC_DEFINE([HAVE_X11], 1, [Have X11?])) - -#### Capabilities (optional) #### - -CAP_LIBS='' - -AC_ARG_WITH([caps], - AS_HELP_STRING([--without-caps],[Omit support for dropping capabilities.])) - -if test "x${with_caps}" != "xno"; then - AC_SEARCH_LIBS([cap_init], [cap], [], []) - - # Only give an error on hosts that we know could support capabilities - AC_CHECK_HEADERS([sys/capability.h], [], [ - if test "${host_has_caps}" = "1"; then - AC_MSG_ERROR([*** sys/capability.h not found. Use --without-caps to disable capabilities support.]) - fi]) -fi - -#### Valgrind (optional) #### - -AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h]) - -#### check unit tests #### - -AC_ARG_ENABLE([tests], - AS_HELP_STRING([--disable-tests],[Disable unit tests])) - -AS_IF([test "x$enable_tests" != "xno"], - [PKG_CHECK_MODULES(LIBCHECK, [ check >= 0.9.10 ], HAVE_LIBCHECK=1, HAVE_LIBCHECK=0)], - HAVE_LIBCHECK=0) - -AS_IF([test "x$enable_tests" = "xyes" && test "x$HAVE_LIBCHECK" = "x0"], - [AC_MSG_ERROR([*** check library not found or too old])]) - -AM_CONDITIONAL([HAVE_TESTS], [test "x$HAVE_LIBCHECK" = x1]) - -#### Sound file #### - -PKG_CHECK_MODULES(LIBSNDFILE, [ sndfile >= 1.0.20 ]) - -#### atomic-ops #### - -AC_MSG_CHECKING([whether we need libatomic_ops]) -if test "x$need_libatomic_ops" = "xyes"; then - AC_MSG_RESULT([yes]) - AC_CHECK_HEADERS([atomic_ops.h], - [CFLAGS="$CFLAGS -DAO_REQUIRE_CAS"], - [AC_MSG_ERROR([*** libatomic-ops headers not found])]) - - # Win32 does not need the lib and breaks horribly if we try to include it - AS_IF([test "x$os_is_win32" != "x1"], [LIBS="$LIBS -latomic_ops"]) -else - AC_MSG_RESULT([no]) -fi - -#### Libsamplerate support (optional) #### - -AC_ARG_ENABLE([samplerate], - AS_HELP_STRING([--enable-samplerate],[Enable optional libsamplerate support (DEPRECATED)])) - -AS_IF([test "x$enable_samplerate" = "xyes"], - [PKG_CHECK_MODULES(LIBSAMPLERATE, [ samplerate >= 0.1.0 ], HAVE_LIBSAMPLERATE=1, HAVE_LIBSAMPLERATE=0)], - HAVE_LIBSAMPLERATE=0) - -AS_IF([test "x$enable_samplerate" = "xyes" && test "x$HAVE_LIBSAMPLERATE" = "x0"], - [AC_MSG_ERROR([*** Libsamplerate not found])]) - -AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1]) -AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], AC_DEFINE([HAVE_LIBSAMPLERATE], 1, [Have libsamplerate?])) - -AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], AC_MSG_WARN([Support for libsamplerate is DEPRECATED])) - -#### Database support #### - -AC_ARG_WITH([database], - AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto]) - - -AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xtdb"], - [PKG_CHECK_MODULES(TDB, [ tdb ], HAVE_TDB=1, HAVE_TDB=0)], - HAVE_TDB=0) -AS_IF([test "x$HAVE_TDB" = "x1"], with_database=tdb) - -AS_IF([test "x$with_database" = "xtdb" && test "x$HAVE_TDB" = "x0"], - [AC_MSG_ERROR([*** tdb not found])]) - - -AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xgdbm"], - [ - HAVE_GDBM=1 - AC_CHECK_LIB(gdbm, gdbm_open, [], HAVE_GDBM=0) - AC_CHECK_HEADERS(gdbm.h, [], HAVE_GDBM=0) - ], - HAVE_GDBM=0) -AS_IF([test "x$HAVE_GDBM" = "x1"], - [ - with_database=gdbm - GDBM_CFLAGS= - GDBM_LIBS=-lgdbm - ]) - -AS_IF([test "x$with_database" = "xgdbm" && test "x$HAVE_GDBM" = "x0"], - [AC_MSG_ERROR([*** gdbm not found])]) - - -AS_IF([test "x$with_database" = "xauto" -o "x$with_database" = "xsimple"], - HAVE_SIMPLEDB=1, - HAVE_SIMPLEDB=0) -AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], with_database=simple) - -AS_IF([test "x$HAVE_TDB" != x1 -a "x$HAVE_GDBM" != x1 -a "x$HAVE_SIMPLEDB" != x1], - AC_MSG_ERROR([*** missing database backend])) - - -AM_CONDITIONAL([HAVE_TDB], [test "x$HAVE_TDB" = x1]) -AS_IF([test "x$HAVE_TDB" = "x1"], AC_DEFINE([HAVE_TDB], 1, [Have tdb?])) - -AC_SUBST(GDBM_CFLAGS) -AC_SUBST(GDBM_LIBS) -AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1]) -AS_IF([test "x$HAVE_GDBM" = "x1"], AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])) - -AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1]) -AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?])) - -#### OSS support (optional) #### - -AC_ARG_ENABLE([oss-output], - AS_HELP_STRING([--disable-oss-output],[Disable optional OSS output support])) - -AC_ARG_ENABLE([oss-wrapper], - AS_HELP_STRING([--disable-oss-wrapper],[Disable optional OSS wrapper support])) - -AC_ARG_WITH([pulsedsp-location], - AS_HELP_STRING([--with-pulsedsp-location],[Specify location where OSS wrapper will be installed])) - -AS_IF([test "x$enable_oss_output" != "xno" -o "x$enable_oss_wrapper" != "xno"], - [AC_CHECK_HEADERS([sys/soundcard.h], HAVE_OSS=1, HAVE_OSS=0)], - HAVE_OSS=0) - -AS_IF([test "x$enable_oss_output" = "xyes" -o "x$enable_oss_wrapper" = "xyes" && test "x$HAVE_OSS" = "x0"], - [AC_MSG_ERROR([*** OSS support not found])]) - -AS_IF([test "x$enable_oss_output" != "xno"], - [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_OUTPUT=1, HAVE_OSS_OUTPUT=0)], - HAVE_OSS_OUTPUT=0) - -AS_IF([test "x$enable_oss_wrapper" != "xno"], - [AS_IF([test "x$HAVE_OSS" = "x1"], HAVE_OSS_WRAPPER=1, HAVE_OSS_WRAPPER=0)], - HAVE_OSS_WRAPPER=0) - -AS_IF([test "x$with_pulsedsp_location" != "x"], - [PULSEDSP_LOCATION="$with_pulsedsp_location"], - [PULSEDSP_LOCATION="\$(pkglibdir)"]) - -AC_SUBST(HAVE_OSS_OUTPUT) -AC_SUBST(PULSEDSP_LOCATION) -AM_CONDITIONAL([HAVE_OSS_OUTPUT], [test "x$HAVE_OSS_OUTPUT" = "x1"]) -AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS_WRAPPER" = "x1"]) -AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])) -AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?])) - -# Some platforms like SunOS (Illumos) may ship without SOUND_PCM_* functionality -if test "x$HAVE_OSS" = "x1"; then - AC_CHECK_DECLS([SOUND_PCM_READ_RATE], [], [], [[#include ]]) - AC_CHECK_DECLS([SOUND_PCM_READ_CHANNELS], [], [], [[#include ]]) - AC_CHECK_DECLS([SOUND_PCM_READ_BITS], [], [], [[#include ]]) -fi - -#### CoreAudio support (optional) #### - -AC_ARG_ENABLE([coreaudio-output], - AS_HELP_STRING([--disable-coreaudio-output],[Disable optional CoreAudio output support])) - -AS_IF([test "x$enable_coreaudio_output" != "xno"], - [AC_CHECK_HEADERS([CoreAudio/CoreAudio.h], HAVE_COREAUDIO=1, HAVE_COREAUDIO=0)], - HAVE_COREAUDIO=0) - -AS_IF([test "x$enable_coreaudio_output" = "xyes" && test "x$HAVE_COREAUDIO" = "x0"], - [AC_MSG_ERROR([*** CoreAudio output support not found])]) - -AC_SUBST(HAVE_COREAUDIO) -AM_CONDITIONAL([HAVE_COREAUDIO], [test "x$HAVE_COREAUDIO" = "x1" && test "x$enable_coreaudio_output" != "xno"]) - -AS_IF([test "x$HAVE_COREAUDIO" = "x1"], AC_DEFINE([HAVE_COREAUDIO], 1, [Have CoreAudio?])) - -#### ALSA support (optional) #### - -AC_ARG_ENABLE([alsa], - AS_HELP_STRING([--disable-alsa],[Disable optional ALSA support])) - -AS_IF([test "x$enable_alsa" != "xno"], - [PKG_CHECK_MODULES(ASOUNDLIB, [ alsa >= 1.0.19 ], HAVE_ALSA=1, HAVE_ALSA=0)], - HAVE_ALSA=0) - -AS_IF([test "x$enable_alsa" = "xyes" && test "x$HAVE_ALSA" = "x0"], - [AC_MSG_ERROR([*** Needed alsa >= 1.0.19 support not found])]) - -AS_IF([test "x$HAVE_ALSA" = "x1"], - [ - save_CPPFLAGS="$CPPFLAGS"; CPPFLAGS="$CPPFLAGS $ASOUNDLIB_CFLAGS" - AC_CHECK_HEADERS([alsa/use-case.h], HAVE_ALSA_UCM=1, HAVE_ALSA_UCM=0) - CPPFLAGS="$save_CPPFLAGS" - ], - HAVE_ALSA_UCM=0) - -AC_SUBST(HAVE_ALSA) -AM_CONDITIONAL([HAVE_ALSA], [test "x$HAVE_ALSA" = x1]) -AS_IF([test "x$HAVE_ALSA" = "x1"], AC_DEFINE([HAVE_ALSA], 1, [Have ALSA?])) -AS_IF([test "x$HAVE_ALSA_UCM" = "x1"], AC_DEFINE([HAVE_ALSA_UCM], 1, [Have ALSA UCM?])) - -#### EsounD support (optional) #### - -AC_ARG_ENABLE([esound], - AS_HELP_STRING([--disable-esound],[Disable optional EsounD support])) -AM_CONDITIONAL([HAVE_ESOUND], [test "x$enable_esound" != "xno"]) -AS_IF([test "x$enable_esound" != "xno"], [HAVE_ESOUND=1]) - -#### Solaris audio support (optional) #### - -AC_ARG_ENABLE([solaris], - AS_HELP_STRING([--disable-solaris],[Disable optional Solaris audio support])) - -AS_IF([test "x$enable_solaris" != "xno"], - [AC_CHECK_HEADERS([sys/audio.h], HAVE_SOLARIS=1, HAVE_SOLARIS=0)], - HAVE_SOLARIS=0) - -AS_IF([test "x$enable_solaris" = "xyes" && test "x$HAVE_SOLARIS" = "x0"], - [AC_MSG_ERROR([*** Solaris audio support not found])]) - -AM_CONDITIONAL([HAVE_SOLARIS], [test "x$HAVE_SOLARIS" = x1]) -AS_IF([test "x$HAVE_SOLARIS" = "x1"], AC_DEFINE([HAVE_SOLARIS], 1, [Have Solaris audio?])) - -#### WaveOut audio support (optional) #### - -AC_ARG_ENABLE([waveout], - AS_HELP_STRING([--disable-waveout],[Disable optional WaveOut audio support])) - -AS_IF([test "x$enable_waveout" != "xno"], - [AC_CHECK_HEADERS([mmsystem.h], HAVE_WAVEOUT=1, HAVE_WAVEOUT=0, [#include ])], - HAVE_WAVEOUT=0) - -AS_IF([test "x$enable_waveout" = "xyes" && test "x$HAVE_WAVEOUT" = "x0"], - [AC_MSG_ERROR([*** WaveOut audio support not found])]) - -AC_SUBST(HAVE_WAVEOUT) -AM_CONDITIONAL([HAVE_WAVEOUT], [test "x$HAVE_WAVEOUT" = x1]) -AS_IF([test "x$HAVE_WAVEOUT" = "x1"], AC_DEFINE([HAVE_WAVEOUT], 1, [Have WaveOut audio?])) - -#### GLib 2 support (optional) #### - -AC_ARG_ENABLE([glib2], - AS_HELP_STRING([--disable-glib2],[Disable optional GLib 2 support])) - -AS_IF([test "x$enable_glib2" != "xno"], - [PKG_CHECK_MODULES(GLIB20, [ glib-2.0 >= 2.4.0 ], HAVE_GLIB20=1, HAVE_GLIB20=0)], - HAVE_GLIB20=0) - -AS_IF([test "x$enable_glib2" = "xyes" && test "x$HAVE_GLIB20" = "x0"], - [AC_MSG_ERROR([*** GLib 2 support not found])]) - -AC_SUBST(HAVE_GLIB20) -AM_CONDITIONAL([HAVE_GLIB20], [test "x$HAVE_GLIB20" = x1]) -AS_IF([test "x$HAVE_GLIB20" = "x1"], AC_DEFINE([HAVE_GLIB], 1, [Have GLIB?])) - -#### GTK3 support (optional) #### - -AC_ARG_ENABLE([gtk3], - AS_HELP_STRING([--disable-gtk3],[Disable optional Gtk+ 3 support])) - -AS_IF([test "x$enable_gtk3" != "xno"], - [PKG_CHECK_MODULES(GTK30, [ gtk+-3.0 ], HAVE_GTK30=1, HAVE_GTK30=0)], - HAVE_GTK30=0) - -AS_IF([test "x$enable_gtk3" = "xyes" && test "x$HAVE_GTK30" = "x0"], - [AC_MSG_ERROR([*** Gtk+ 3 support not found])]) - -AM_CONDITIONAL([HAVE_GTK30], [test "x$HAVE_GTK30" = x1]) -AS_IF([test "x$HAVE_GTK30" = "x1"], AC_DEFINE([HAVE_GTK], 1, [Have GTK?])) - -#### GSettings and GConf support (optional) #### - -AC_ARG_ENABLE([gsettings], - AS_HELP_STRING([--disable-gsettings],[Disable optional GSettings support])) - -AC_ARG_ENABLE([gconf], - AS_HELP_STRING([--disable-gconf],[Disable optional GConf support])) - -AS_IF([test "x$enable_gsettings" != "xno"], - [PKG_CHECK_MODULES(GSETTINGS, [ gio-2.0 >= 2.26.0 ], [HAVE_GSETTINGS=1], [HAVE_GSETTINGS=0])], - HAVE_GSETTINGS=0) - -AS_IF([test "x$enable_gsettings" = "xyes" && test "x$HAVE_GSETTINGS" = "x0"], - [AC_MSG_ERROR([*** GSettings support not found])]) - -AS_IF([test "x$enable_gconf" != "xno"], - [PKG_CHECK_MODULES(GCONF, [ gconf-2.0 >= 2.4.0 gobject-2.0 ], HAVE_GCONF=1, HAVE_GCONF=0)], - HAVE_GCONF=0) - -AS_IF([test "x$enable_gconf" = "xyes" && test "x$HAVE_GCONF" = "x0"], - [AC_MSG_ERROR([*** GConf support not found])]) - -# Enable only one of GSettings and GConf, unless both were explicitly -# requested. If neither was explicitly requested and both are available, prefer -# GSettings. This is done, because if module-gsettings and module-gconf are -# both loaded, they can cause conflicting or at least confusing configuration. -# Distributions may want to enable both modules when building PulseAudio, if -# they ensure that both modules are never installed at the same time. -AS_IF([test "x$HAVE_GSETTINGS" = "x1" && test "x$enable_gconf" != "xyes"], - [HAVE_GCONF=0]) -AS_IF([test "x$HAVE_GCONF" = "x1" && test "x$enable_gsettings" != "xyes"], - [HAVE_GSETTINGS=0]) - -AM_CONDITIONAL([HAVE_GSETTINGS], [test "x$HAVE_GSETTINGS" = "x1"]) -AC_SUBST([HAVE_GSETTINGS]) -AM_CONDITIONAL([HAVE_GCONF], [test "x$HAVE_GCONF" = "x1"]) -AC_SUBST([HAVE_GCONF]) - -if test "x$HAVE_GSETTINGS" = "x1" ; then - GLIB_GSETTINGS -fi - -#### Avahi support (optional) #### - -AC_ARG_ENABLE([avahi], - AS_HELP_STRING([--disable-avahi],[Disable optional Avahi support])) - -AS_IF([test "x$enable_avahi" != "xno"], - [PKG_CHECK_MODULES(AVAHI, [ avahi-client >= 0.6.0 ], HAVE_AVAHI=1, HAVE_AVAHI=0)], - HAVE_AVAHI=0) - -AS_IF([test "x$enable_avahi" = "xyes" && test "x$HAVE_AVAHI" = "x0"], - [AC_MSG_ERROR([*** Avahi support not found])]) - -AC_SUBST(HAVE_AVAHI) -AM_CONDITIONAL([HAVE_AVAHI], [test "x$HAVE_AVAHI" = x1]) - -#### JACK (optional) #### - -AC_ARG_ENABLE([jack], - AS_HELP_STRING([--disable-jack],[Disable optional JACK support])) - -AS_IF([test "x$enable_jack" != "xno"], - [PKG_CHECK_MODULES(JACK, [ jack >= 0.117.0 ], HAVE_JACK=1, HAVE_JACK=0)], - HAVE_JACK=0) - -AS_IF([test "x$enable_jack" = "xyes" && test "x$HAVE_JACK" = "x0"], - [AC_MSG_ERROR([*** JACK support not found])]) - -AM_CONDITIONAL([HAVE_JACK], [test "x$HAVE_JACK" = x1]) - -#### Async DNS support (optional) #### - -AC_ARG_ENABLE([asyncns], - AS_HELP_STRING([--disable-asyncns],[Disable optional Async DNS support])) - -AS_IF([test "x$enable_asyncns" != "xno"], - [PKG_CHECK_MODULES(LIBASYNCNS, [ libasyncns >= 0.1 ], HAVE_LIBASYNCNS=1, HAVE_LIBASYNCNS=0)], - HAVE_LIBASYNCNS=0) - -AS_IF([test "x$enable_asyncns" = "xyes" && test "x$HAVE_LIBASYNCNS" = "x0"], - [AC_MSG_ERROR([*** Async DNS support not found])]) - -AM_CONDITIONAL([HAVE_LIBASYNCNS], [test "x$HAVE_LIBASYNCNS" = x1]) -AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], AC_DEFINE([HAVE_LIBASYNCNS], 1, [Have libasyncns?])) - -#### Running from build tree (optional) #### - -AC_ARG_ENABLE([running-from-build-tree], - AS_HELP_STRING([--disable-running-from-build-tree],[Disable running from build tree])) - -AS_IF([test "x$enable_running_from_build_tree" != "xno"], - AC_DEFINE([HAVE_RUNNING_FROM_BUILD_TREE], 1, [Have running from build tree])) - -AC_SUBST(HAVE_RUNNING_FROM_BUILD_TREE) - -#### TCP wrappers (optional) #### - -AC_ARG_ENABLE([tcpwrap], - AS_HELP_STRING([--disable-tcpwrap],[Disable optional TCP wrappers support])) - -AS_IF([test "x$enable_tcpwrap" != "xno"], - [ - ACX_LIBWRAP - AS_IF([test "x$LIBWRAP_LIBS" != "x"], HAVE_TCPWRAP=1, HAVE_TCPWRAP=0) - ], - HAVE_TCPWRAP=0) - -AS_IF([test "x$enable_tcpwrap" = "xyes" && test "x$HAVE_TCPWRAP" = "x0"], - [AC_MSG_ERROR([*** TCP wrappers support not found])]) - -AC_SUBST(LIBWRAP_LIBS) - -#### LIRC support (optional) #### - -AC_ARG_ENABLE([lirc], - AS_HELP_STRING([--disable-lirc],[Disable optional LIRC support])) - -LIRC_CFLAGS= -LIRC_LIBS= - -AS_IF([test "x$enable_lirc" != "xno"], - [ - HAVE_LIRC=1 - AC_CHECK_HEADER(lirc/lirc_client.h, [], [HAVE_LIRC=0]) - AC_CHECK_LIB(lirc_client, lirc_init, [LIRC_LIBS=-llirc_client], [HAVE_LIRC=0]) - ], - HAVE_LIRC=0) - -AS_IF([test "x$enable_lirc" = "xyes" && test "x$HAVE_LIRC" = "x0"], - [AC_MSG_ERROR([*** LIRC support not found])]) - -AC_SUBST(LIRC_CFLAGS) -AC_SUBST(LIRC_LIBS) -AM_CONDITIONAL([HAVE_LIRC], [test "x$HAVE_LIRC" = x1]) - -#### D-Bus support (optional) #### - -AC_ARG_ENABLE([dbus], - AS_HELP_STRING([--disable-dbus],[Disable optional D-Bus support])) - -AS_IF([test "x$enable_dbus" != "xno"], - [PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.4.12 ], HAVE_DBUS=1, HAVE_DBUS=0)], - HAVE_DBUS=0) - -AS_IF([test "x$enable_dbus" = "xyes" && test "x$HAVE_DBUS" = "x0"], - [AC_MSG_ERROR([*** D-Bus not available or too old version])]) - -AC_SUBST(HAVE_DBUS) -AM_CONDITIONAL([HAVE_DBUS], [test "x$HAVE_DBUS" = x1]) -AS_IF([test "x$HAVE_DBUS" = "x1"], AC_DEFINE([HAVE_DBUS], 1, [Have D-Bus.])) - -PA_MACHINE_ID="${sysconfdir}/machine-id" -AX_DEFINE_DIR(PA_MACHINE_ID, PA_MACHINE_ID, [D-Bus machine-id file]) -PA_MACHINE_ID_FALLBACK="${localstatedir}/lib/dbus/machine-id" -AX_DEFINE_DIR(PA_MACHINE_ID_FALLBACK, PA_MACHINE_ID_FALLBACK, - [Fallback machine-id file]) - -#### BlueZ support (optional, dependent on D-Bus and SBC) #### - -AC_ARG_ENABLE([bluez5], - AS_HELP_STRING([--disable-bluez5],[Disable optional BlueZ 5 support])) - -## SBC ## -AS_IF([test "x$enable_bluez5" != "xno"], - [PKG_CHECK_MODULES(SBC, [ sbc >= 1.0 ], HAVE_SBC=1, HAVE_SBC=0)], - HAVE_SBC=0) - -## BlueZ 5 ## -AS_IF([test "x$enable_bluez5" != "xno" && test "x$HAVE_DBUS" = "x1" && test "x$HAVE_SBC" = "x1"], HAVE_BLUEZ_5=1, - HAVE_BLUEZ_5=0) -AS_IF([test "x$enable_bluez5" = "xyes" && test "x$HAVE_BLUEZ_5" != "x1"], - [AC_MSG_ERROR([*** BLUEZ 5 support not found (requires sbc and D-Bus)])]) -AC_SUBST(HAVE_BLUEZ_5) -AM_CONDITIONAL([HAVE_BLUEZ_5], [test "x$HAVE_BLUEZ_5" = x1]) - -AS_IF([test "x$HAVE_BLUEZ_5" = "x1"], HAVE_BLUEZ=1, HAVE_BLUEZ=0) -AC_SUBST(HAVE_BLUEZ) -AM_CONDITIONAL([HAVE_BLUEZ], [test "x$HAVE_BLUEZ" = x1]) - -## Bluetooth Headset profiles backend ## - -AC_ARG_ENABLE([bluez5-ofono-headset], - AS_HELP_STRING([--disable-bluez5-ofono-headset],[Disable optional ofono headset backend support (Bluez 5)])) -AS_IF([test "x$HAVE_BLUEZ_5" = "x1" && test "x$enable_bluez5_ofono_headset" != "xno"], HAVE_BLUEZ_5_OFONO_HEADSET=1, - HAVE_BLUEZ_5_OFONO_HEADSET=0) -AC_SUBST(HAVE_BLUEZ_5_OFONO_HEADSET) -AM_CONDITIONAL([HAVE_BLUEZ_5_OFONO_HEADSET], [test "x$HAVE_BLUEZ_5_OFONO_HEADSET" = x1]) -AS_IF([test "x$HAVE_BLUEZ_5_OFONO_HEADSET" = "x1"], AC_DEFINE([HAVE_BLUEZ_5_OFONO_HEADSET], 1, [Bluez 5 ofono headset backend enabled])) - -AC_ARG_ENABLE([bluez5-native-headset], - AS_HELP_STRING([--disable-bluez5-native-headset],[Disable optional native headset backend support (Bluez 5)])) -AS_IF([test "x$HAVE_BLUEZ_5" = "x1" && test "x$enable_bluez5_native_headset" != "xno"], - [PKG_CHECK_MODULES(BLUEZ, [ bluez >= 4.101 ], HAVE_BLUEZ_5_NATIVE_HEADSET=1, HAVE_BLUEZ_5_NATIVE_HEADSET=0)], - HAVE_BLUEZ_5_NATIVE_HEADSET=0) -AS_IF([test "x$enable_bluez5_native_headset" = "xyes" && test "x$HAVE_BLUEZ_5_NATIVE_HEADSET" = "x0"], - [AC_MSG_ERROR([*** BlueZ 5 native headset backend support not available (requires the libbluetooth headers)])]) -AC_SUBST(HAVE_BLUEZ_5_NATIVE_HEADSET) -AM_CONDITIONAL([HAVE_BLUEZ_5_NATIVE_HEADSET], [test "x$HAVE_BLUEZ_5_NATIVE_HEADSET" = x1]) -AS_IF([test "x$HAVE_BLUEZ_5_NATIVE_HEADSET" = "x1"], AC_DEFINE([HAVE_BLUEZ_5_NATIVE_HEADSET], 1, [Bluez 5 native headset backend enabled])) - -#### UDEV support (optional) #### - -AC_ARG_ENABLE([udev], - AS_HELP_STRING([--disable-udev],[Disable optional UDEV support])) - -AS_IF([test "x$enable_udev" != "xno" -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \)], - [PKG_CHECK_MODULES(UDEV, [ libudev >= 143 ], HAVE_UDEV=1, HAVE_UDEV=0)], - HAVE_UDEV=0) - -AS_IF([test "x$enable_udev" = "xyes" && test "x$HAVE_UDEV" = "x0"], - [AC_MSG_ERROR([*** UDEV support not found])]) - -AC_SUBST(HAVE_UDEV) -AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1]) -AS_IF([test "x$HAVE_UDEV" = "x1"], AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])) - -#### HAL compat support (optional, dependent on UDEV) #### - -AC_ARG_ENABLE([hal-compat], - AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support])) - -AS_IF([test "x$enable_hal_compat" != "xno"], - [AS_IF([test "x$HAVE_UDEV" = "x1"], HAVE_HAL_COMPAT=1, HAVE_HAL_COMPAT=0)], - HAVE_HAL_COMPAT=0) - -AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1]) -AS_IF([test "x$HAVE_HAL_COMPAT" = "x1"], AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.])) - -#### IPv6 connection support (optional) #### - -AC_ARG_ENABLE([ipv6], - AS_HELP_STRING([--disable-ipv6],[Disable optional IPv6 support])) - -AS_IF([test "x$enable_ipv6" != "xno"], [HAVE_IPV6=1], [HAVE_IPV6=0]) - -AS_IF([test "x$HAVE_IPV6" = "x1"], AC_DEFINE([HAVE_IPV6], 1, [Define this to enable IPv6 connection support])) - -#### OpenSSL support (optional) #### - -AC_ARG_ENABLE([openssl], - AS_HELP_STRING([--disable-openssl],[Disable OpenSSL support (used for Airtunes/RAOP)])) - -AS_IF([test "x$enable_openssl" != "xno"], - [PKG_CHECK_MODULES(OPENSSL, [ openssl > 0.9 ], HAVE_OPENSSL=1, HAVE_OPENSSL=0)], - HAVE_OPENSSL=0) - -AS_IF([test "x$enable_openssl" = "xyes" && test "x$HAVE_OPENSSL" = "x0"], - [AC_MSG_ERROR([*** OpenSSL support not found])]) - -AM_CONDITIONAL([HAVE_OPENSSL], [test "x$HAVE_OPENSSL" = x1]) -AS_IF([test "x$HAVE_OPENSSL" = "x1"], AC_DEFINE([HAVE_OPENSSL], 1, [Have OpenSSL])) - -#### FFTW (optional) #### - -AC_ARG_WITH([fftw], - AS_HELP_STRING([--without-fftw],[Omit FFTW-using modules (equalizer)])) - -AS_IF([test "x$with_fftw" != "xno"], - [PKG_CHECK_MODULES(FFTW, [ fftw3f ], HAVE_FFTW=1, HAVE_FFTW=0)], - HAVE_FFTW=0) - -AS_IF([test "x$with_fftw" = "xyes" && test "x$HAVE_FFTW" = "x0"], - [AC_MSG_ERROR([*** FFTW support not found])]) - -AM_CONDITIONAL([HAVE_FFTW], [test "x$HAVE_FFTW" = "x1"]) - -#### speex (optional) #### - -AC_ARG_WITH([speex], - AS_HELP_STRING([--without-speex],[Omit speex (resampling, AEC)])) - -AS_IF([test "x$with_speex" != "xno"], - [PKG_CHECK_MODULES(LIBSPEEX, [ speexdsp >= 1.2 ], HAVE_SPEEX=1, HAVE_SPEEX=0)], - HAVE_SPEEX=0) - -AS_IF([test "x$with_speex" = "xyes" && test "x$HAVE_SPEEX" = "x0"], - [AC_MSG_ERROR([*** speex support not found])]) - -AM_CONDITIONAL([HAVE_SPEEX], [test "x$HAVE_SPEEX" = "x1"]) -AS_IF([test "x$HAVE_SPEEX" = "x1"], AC_DEFINE([HAVE_SPEEX], 1, [Have speex])) - -#### soxr (optional) #### - -AC_ARG_WITH([soxr], - AS_HELP_STRING([--without-soxr],[Omit soxr (resampling)])) - -AS_IF([test "x$with_soxr" != "xno"], - [PKG_CHECK_MODULES(LIBSOXR, [ soxr >= 0.1.1 ], HAVE_SOXR=1, HAVE_SOXR=0)], - HAVE_SOXR=0) - -AS_IF([test "x$with_soxr" = "xyes" && test "x$HAVE_SOXR" = "x0"], - [AC_MSG_ERROR([*** soxr support not found])]) - -AM_CONDITIONAL([HAVE_SOXR], [test "x$HAVE_SOXR" = "x1"]) -AS_IF([test "x$HAVE_SOXR" = "x1"], AC_DEFINE([HAVE_SOXR], 1, [Have soxr])) - - -#### gcov support (optional) ##### - -AC_ARG_ENABLE([gcov], - AS_HELP_STRING([--enable-gcov],[Enable optional gcov coverage analysis])) - -GCOV_CFLAGS= -GCOV_LIBS=" -lgcov" - -AS_IF([test "x$enable_gcov" = "xyes"], - [ - HAVE_GCOV=1 - GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs -ftest-coverage" - GCOV_LIBS="$GCOV_LIBS -fprofile-arcs" - ], - HAVE_GCOV=0) - -AC_SUBST(GCOV_CFLAGS) -AC_SUBST(GCOV_LIBS) -AM_CONDITIONAL([HAVE_GCOV], [test "x$HAVE_GCOV" = x1]) - -#### ORC (optional) #### - -ORC_CHECK([0.4.11]) - -#### systemd support (optional) #### - -AC_ARG_ENABLE([systemd-daemon], - AS_HELP_STRING([--disable-systemd-daemon],[Disable optional systemd daemon (socket activation) support])) - -AC_ARG_ENABLE([systemd-login], - AS_HELP_STRING([--disable-systemd-login],[Disable optional systemd login support])) - -AC_ARG_ENABLE([systemd-journal], - AS_HELP_STRING([--disable-systemd-journal],[Disable optional systemd journal support])) - -# Newer systemd's combine their subcomponent libraries into one -# If it exists, we should use it for the further checks - -AS_IF([test "x$enable_systemd_daemon" != "xno" || test "x$enable_systemd_login" != "xno" || test "x$enable_systemd_journal" != "xno"], - [PKG_CHECK_MODULES(SYSTEMD, [ libsystemd ], HAVE_SYSTEMD=1, HAVE_SYSTEMD=0)], - HAVE_SYSTEMD=0) - -AS_IF([test "x$HAVE_SYSTEMD" = "x1"], - [ - HAVE_SYSTEMD_DAEMON=1 - HAVE_SYSTEMD_LOGIN=1 - HAVE_SYSTEMD_JOURNAL=1 - ]) - -AC_ARG_WITH([systemduserunitdir], - AS_HELP_STRING([--with-systemduserunitdir=DIR], [Directory for systemd user service files]), - [], [with_systemduserunitdir=$($PKG_CONFIG --variable=systemduserunitdir systemd)]) -if test "x$with_systemduserunitdir" != xno; then - AC_SUBST([systemduserunitdir], [$with_systemduserunitdir]) -fi - -#### systemd daemon support (optional) #### - -AS_IF([test "x$enable_systemd_daemon" != "xno"], - [AS_IF([test "x$HAVE_SYSTEMD_DAEMON" != "x1"], [PKG_CHECK_MODULES(SYSTEMDDAEMON, [ libsystemd-daemon ], HAVE_SYSTEMD_DAEMON=1, HAVE_SYSTEMD_DAEMON=0)])], - HAVE_SYSTEMD_DAEMON=0) - -AS_IF([test "x$enable_systemd_daemon" = "xyes" && test "x$HAVE_SYSTEMD_DAEMON" = "x0"], - [AC_MSG_ERROR([*** Needed systemd daemon support not found])]) - -AC_SUBST(HAVE_SYSTEMD_DAEMON) -AM_CONDITIONAL([HAVE_SYSTEMD_DAEMON], [test "x$HAVE_SYSTEMD_DAEMON" = x1]) -AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], AC_DEFINE([HAVE_SYSTEMD_DAEMON], 1, [Have SYSTEMDDAEMON?])) - -#### systemd login support (optional) #### - -AS_IF([test "x$enable_systemd_login" != "xno"], - [AS_IF([test "x$HAVE_SYSTEMD_LOGIN" != "x1"], [PKG_CHECK_MODULES(SYSTEMDLOGIN, [ libsystemd-login ], HAVE_SYSTEMD_LOGIN=1, HAVE_SYSTEMD_LOGIN=0)])], - HAVE_SYSTEMD_LOGIN=0) - -AS_IF([test "x$enable_systemd_login" = "xyes" && test "x$HAVE_SYSTEMD_LOGIN" = "x0"], - [AC_MSG_ERROR([*** Needed systemd login support not found])]) - -AC_SUBST(HAVE_SYSTEMD_LOGIN) -AM_CONDITIONAL([HAVE_SYSTEMD_LOGIN], [test "x$HAVE_SYSTEMD_LOGIN" = x1]) -AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], AC_DEFINE([HAVE_SYSTEMD_LOGIN], 1, [Have SYSTEMDLOGIN?])) - -#### systemd journal support (optional) #### - -AS_IF([test "x$enable_systemd_journal" != "xno"], - [AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" != "x1"], [PKG_CHECK_MODULES(SYSTEMDJOURNAL, [ libsystemd-journal ], HAVE_SYSTEMD_JOURNAL=1, HAVE_SYSTEMD_JOURNAL=0)])], - HAVE_SYSTEMD_JOURNAL=0) - -AS_IF([test "x$enable_systemd_journal" = "xyes" && test "x$HAVE_SYSTEMD_JOURNAL" = "x0"], - [AC_MSG_ERROR([*** Needed systemd journal support not found])]) - -AC_SUBST(HAVE_SYSTEMD_JOURNAL) -AM_CONDITIONAL([HAVE_SYSTEMD_JOURNAL], [test "x$HAVE_SYSTEMD_JOURNAL" = x1]) -AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], AC_DEFINE([HAVE_SYSTEMD_JOURNAL], 1, [Have SYSTEMDJOURNAL?])) - -#### GStreamer-based RTP support (optional) #### - -AC_ARG_ENABLE([gstreamer], - AS_HELP_STRING([--enable-gstreamer],[Enable optional GStreamer-based RTP support])) - -AS_IF([test "x$enable_gstreamer" = "xyes"], - [PKG_CHECK_MODULES(GSTREAMER, [ gstreamer-1.0 >= 1.14 gstreamer-app-1.0 gstreamer-rtp-1.0 gio-2.0 ], - HAVE_GSTREAMER=1, HAVE_GSTREAMER=0)], - HAVE_GSTREAMER=0) - -AS_IF([test "x$enable_gstreamer" = "xyes" && test "x$HAVE_GSTREAMER" = "x0"], - [AC_MSG_ERROR([*** GStreamer 1.0 support not found])]) - -AM_CONDITIONAL([HAVE_GSTREAMER], [test "x$HAVE_GSTREAMER" = x1]) -AS_IF([test "x$HAVE_GSTREAMER" = "x1"], AC_DEFINE([HAVE_GSTREAMER], 1, [Have GStreamer?])) - -#### Build and Install man pages #### - -AC_ARG_ENABLE([manpages], - AS_HELP_STRING([--disable-manpages],[Disable building and installation of man pages])) - -AM_CONDITIONAL([BUILD_MANPAGES], [test "x$enable_manpages" != "xno"]) - -#### PulseAudio system group & user ##### - -AC_ARG_WITH(system_user, AS_HELP_STRING([--with-system-user=],[User for running the PulseAudio daemon as a system-wide instance (pulse)])) -if test -z "$with_system_user" ; then - PA_SYSTEM_USER=pulse -else - PA_SYSTEM_USER=$with_system_user -fi -AC_SUBST(PA_SYSTEM_USER) -AC_DEFINE_UNQUOTED(PA_SYSTEM_USER,"$PA_SYSTEM_USER", [User for running the PulseAudio system daemon]) - -AC_ARG_WITH(system_group,AS_HELP_STRING([--with-system-group=],[Group for running the PulseAudio daemon as a system-wide instance (pulse)])) -if test -z "$with_system_group" ; then - PA_SYSTEM_GROUP=pulse -else - PA_SYSTEM_GROUP=$with_system_group -fi -AC_SUBST(PA_SYSTEM_GROUP) -AC_DEFINE_UNQUOTED(PA_SYSTEM_GROUP,"$PA_SYSTEM_GROUP", [Group for the PulseAudio system daemon]) - -AC_ARG_WITH(access_group,AS_HELP_STRING([--with-access-group=],[Group which is allowed access to a system-wide PulseAudio daemon (pulse-access)])) -if test -z "$with_access_group" ; then - PA_ACCESS_GROUP=pulse-access -else - PA_ACCESS_GROUP=$with_access_group -fi -AC_SUBST(PA_ACCESS_GROUP) -AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group]) - -AC_ARG_ENABLE([per-user-esound-socket], - AS_HELP_STRING([--disable-per-user-esound-socket],[Use global esound socket directory /tmp/.esd/socket.])) - -if test "x$enable_per_user_esound_socket" != "xno"; then - USE_PER_USER_ESOUND_SOCKET=1 - AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories]) -else - USE_PER_USER_ESOUND_SOCKET=0 -fi - -#### PulseAudio system runtime dir #### - -PA_SYSTEM_RUNTIME_PATH="${localstatedir}/run/pulse" -AX_DEFINE_DIR(PA_SYSTEM_RUNTIME_PATH, PA_SYSTEM_RUNTIME_PATH, [System runtime dir]) -PA_SYSTEM_CONFIG_PATH="${localstatedir}/lib/pulse" -AX_DEFINE_DIR(PA_SYSTEM_CONFIG_PATH, PA_SYSTEM_CONFIG_PATH, [System config dir]) -PA_SYSTEM_STATE_PATH="${localstatedir}/lib/pulse" -AX_DEFINE_DIR(PA_SYSTEM_STATE_PATH, PA_SYSTEM_STATE_PATH, [System state dir]) - -PA_BINARY=${bindir}/pulseaudio${EXEEXT} -AX_DEFINE_DIR(PA_BINARY, PA_BINARY, [Location of pulseaudio binary]) - -PACTL_BINARY=${bindir}/pactl${EXEEXT} -AX_DEFINE_DIR(PACTL_BINARY, PACTL_BINARY, [Location of pactl binary]) - -AC_SUBST(PA_SOEXT, [.so]) -AC_DEFINE(PA_SOEXT, [".so"], [Shared object extension]) - -AC_SUBST(pulseconfdir, ["${sysconfdir}/pulse"]) -AX_DEFINE_DIR(PA_DEFAULT_CONFIG_DIR, pulseconfdir, [Location of configuration files]) - -#### Mac OSX specific stuff ##### - -AC_ARG_ENABLE(mac-universal, - AS_HELP_STRING([--enable-mac-universal], [Build Mac universal binaries]), - enable_mac_universal=$enableval, enable_mac_universal="no") - -AC_ARG_WITH(mac-version-min, - AS_HELP_STRING([--with-mac-version-min=], [Defines the earliest version of MacOS X that the executables will run on.]), - mac_version_min=$withval, mac_version_min="10.5") - -AC_ARG_WITH(mac-sysroot, - AS_HELP_STRING([--with-mac-sysroot=], [SDK basedir to use as the logical root directory for headers and libraries.]), - mac_sysroot=$withval) - -if test "x$os_is_darwin" = "x1" ; then - LDFLAGS="$LDFLAGS -mmacosx-version-min=$mac_version_min" - CFLAGS="$CFLAGS -mmacosx-version-min=$mac_version_min" - - if test "x$mac_sysroot" != "x" ; then - LDFLAGS="$LDFLAGS -isysroot $mac_sysroot" - CFLAGS="$CFLAGS -isysroot $mac_sysroot" - fi - - if test "x$enable_mac_universal" = "xyes" ; then - mac_arches="-arch i386 -arch x86_64" - LDFLAGS="$LDFLAGS $mac_arches" - CFLAGS="$CFLAGS $mac_arches" - fi -fi - -AC_ARG_ENABLE([webrtc-aec], - AS_HELP_STRING([--enable-webrtc-aec], [Enable the optional WebRTC-based echo canceller])) - -AS_IF([test "x$enable_webrtc_aec" = "xyes" && test "$HAVE_CXX11" = "0"], - [AC_MSG_ERROR([*** webrtc-audio-processing needs C++11 support])]) - -AS_IF([test "x$enable_webrtc_aec" != "xno"], - [PKG_CHECK_MODULES(WEBRTC, [ webrtc-audio-processing >= 0.2 ], [HAVE_WEBRTC=1], [HAVE_WEBRTC=0])], - [HAVE_WEBRTC=0]) - -AS_IF([test "x$enable_webrtc_aec" = "xyes" && test "x$HAVE_WEBRTC" = "x0"], - [AC_MSG_ERROR([*** webrtc-audio-processing library not found])]) - -AM_CONDITIONAL([HAVE_WEBRTC], [test "x$HAVE_WEBRTC" = "x1"]) - -AC_ARG_ENABLE([adrian-aec], - AS_HELP_STRING([--enable-adrian-aec], [Enable Adrian's optional echo canceller])) -AS_IF([test "x$enable_adrian_aec" != "xno"], - [HAVE_ADRIAN_EC=1]) -AM_CONDITIONAL([HAVE_ADRIAN_EC], [test "x$HAVE_ADRIAN_EC" = "x1"]) - - -#### Thread support #### - -AX_TLS -AS_IF([test "$ac_cv_tls" = "__thread"], - AC_DEFINE([SUPPORT_TLS___THREAD], 1, [Define this if the compiler supports __thread for Thread-Local Storage])) - -# Win32 build breaks with win32 pthread installed -AS_IF([test "x$os_is_win32" != "x1"], - [AX_PTHREAD]) - -AS_IF([test "x$ax_pthread_ok" = "xyes"], - AC_DEFINE([_POSIX_PTHREAD_SEMANTICS], 1, [Needed on Solaris])) - - - -################################### -# Output # -################################### - -AC_DEFINE_UNQUOTED(PA_CFLAGS, "$CFLAGS", [The CFLAGS used during compilation]) - -# Check whether to build tests by default (as compile-test) or not -AC_ARG_ENABLE([default-build-tests], - AS_HELP_STRING([--disable-default-build-tests], [Build test programs only during make check])) -AM_CONDITIONAL([BUILD_TESTS_DEFAULT], [test "x$enable_default_build_tests" != "xno"]) - -AC_ARG_ENABLE([legacy-database-entry-format], - AS_HELP_STRING([--disable-legacy-database-entry-format], [Try to load legacy (< 1.0) database files (card, device and volume restore).])) -if test "x$enable_legacy_database_entry_format" != "xno" ; then - AC_DEFINE(ENABLE_LEGACY_DATABASE_ENTRY_FORMAT, [1], [Legacy database entry format]) -fi - -AC_ARG_ENABLE([stream-restore-clear-old-devices], - AS_HELP_STRING([--enable-stream-restore-clear-old-devices], [Forget per-stream routing settings that have been set before version 14.0. Recommended when using GNOME. See https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/832])) -if test "x$enable_stream_restore_clear_old_devices" == "xyes" ; then - AC_DEFINE(STREAM_RESTORE_CLEAR_OLD_DEVICES, [1], [module-stream-restore: Clear old devices]) -fi - -AC_ARG_ENABLE([static-bins], - AS_HELP_STRING([--enable-static-bins],[Statically link executables.])) -AM_CONDITIONAL([STATIC_BINS], [test "x$enable_static_bins" = "xyes"]) - -AC_ARG_WITH( - [preopen-mods], - AS_HELP_STRING([--with-preopen-mods],[Modules to preopen in daemon (default: all).]), - [PREOPEN_MODS=$withval], [PREOPEN_MODS="all"]) -AM_CONDITIONAL([PREOPEN_MODS], [test "x$PREOPEN_MODS" != "xall"]) -if test "x$PREOPEN_MODS" != "xall" ; then - tmpLIBS="" - for mod in $PREOPEN_MODS; do - tmpLIBS="$tmpLIBS module-$mod.la" - done - PREOPEN_MODS="$tmpLIBS" - AC_SUBST(PREOPEN_MODS) -fi - -AC_ARG_WITH( - [module-dir], - AS_HELP_STRING([--with-module-dir],[Directory where to install the modules to (defaults to ${libdir}/pulse-${PA_MAJORMINOR}/modules]), - [modlibexecdir=$withval], [modlibexecdir="${libdir}/pulse-${PA_MAJORMINOR}/modules"]) - -AC_SUBST(modlibexecdir) -AX_DEFINE_DIR(PA_DLSEARCHPATH, modlibexecdir, [Modules dir]) - -AC_ARG_WITH( - [alsa-data-dir], - AS_HELP_STRING([--with-alsa-data-dir],[Directory for ALSA card profiles (defaults to ${datadir}/pulseaudio/alsa-mixer)]), - [alsadatadir=$withval], [alsadatadir="${datadir}/pulseaudio/alsa-mixer"]) - -AC_SUBST(alsadatadir) - -AC_ARG_WITH( - [udev-rules-dir], - AS_HELP_STRING([--with-udev-rules-dir],[Directory where to install udev rules to (defaults to /lib/udev/rules.d)]), - [udevrulesdir=$withval], [udevrulesdir="/lib/udev/rules.d"]) - -AC_SUBST(udevrulesdir) - -AC_ARG_WITH([bash-completion-dir], - AS_HELP_STRING([--with-bash-completion-dir=DIR], [Directory for bash completion files]), - [bashcompletiondir=$withval], [bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)]) -if test "x$bashcompletionsdir" = "x"; then - bashcompletiondir="${datadir}/bash-completion/completions" -fi - -AC_SUBST(bashcompletiondir) - -AC_ARG_WITH( - [zsh-completion-dir], - AS_HELP_STRING([--with-zsh-completion-dir], [Zsh completions directory (defaults to ${datadir}/zsh/site-functions)]), - [zshcompletiondir=$withval], [zshcompletiondir="${datadir}/zsh/site-functions"]) - -AC_SUBST(zshcompletiondir) - -AC_ARG_ENABLE([force-preopen], - AS_HELP_STRING([--enable-force-preopen],[Preopen modules, even when dlopen() is supported.])) - -if test "x$enable_force_preopen" = "xyes"; then - FORCE_PREOPEN=yes -else - FORCE_PREOPEN=no -fi - -AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"]) - -# Substitute the variable with an empty string. This makes the output go to the -# directory where doxygen is run (which is the doxygen directory under the -# build directory). Substituting a variable with a constant value wouldn't -# otherwise make sense, but the substitution variable needs to exist, because -# we substitute a different value when using Meson. -AC_SUBST([DOXYGEN_OUTPUT_DIRECTORY], []) - -AC_CONFIG_FILES([ -Makefile -src/Makefile -man/Makefile -libpulse.pc -libpulse-simple.pc -libpulse-mainloop-glib.pc -doxygen/Makefile -doxygen/doxygen.conf -src/pulse/version.h -po/Makefile.in -man/pulseaudio.1.xml -man/pax11publish.1.xml -man/pacat.1.xml -man/pacmd.1.xml -man/pactl.1.xml -man/pasuspender.1.xml -man/padsp.1.xml -man/pulse-daemon.conf.5.xml -man/pulse-client.conf.5.xml -man/default.pa.5.xml -man/pulse-cli-syntax.5.xml -man/start-pulseaudio-x11.1.xml -]) - -AS_IF([test "x$HAVE_ESOUND" = "x1"], - [ - AC_CONFIG_FILES([man/esdcompat.1.xml]) - AC_CONFIG_FILES([src/esdcompat:src/daemon/esdcompat.in], [chmod +x src/esdcompat]) - ]) - -AC_CONFIG_FILES([src/start-pulseaudio-x11:src/daemon/start-pulseaudio-x11.in], [chmod +x src/start-pulseaudio-x11]) -AC_CONFIG_FILES([src/client.conf:src/pulse/client.conf.in]) -AC_CONFIG_FILES([src/daemon.conf:src/daemon/daemon.conf.in], - [m4 src/daemon.conf > src/daemon.conf.gen && mv src/daemon.conf.gen src/daemon.conf]) -AC_CONFIG_FILES([src/default.pa:src/daemon/default.pa.in], - [m4 src/default.pa > src/default.pa.gen && mv src/default.pa.gen src/default.pa]) -AC_CONFIG_FILES([src/system.pa:src/daemon/system.pa.in], - [m4 src/system.pa > src/system.pa.gen && mv src/system.pa.gen src/system.pa]) -AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], - [ - AC_CONFIG_FILES([src/pulseaudio.service:src/daemon/systemd/user/pulseaudio.service.in]) - ]) - -# CMake related ProjectConfig files -PA_LIBDIR="$libdir" -AX_DEFINE_DIR(PA_LIBDIR, PA_LIBDIR, [PulseAudio library dir]) -PA_INCDIR="$includedir" -AX_DEFINE_DIR(PA_INCDIR, PA_INCDIR, [PulseAudio include dir]) - -AC_CONFIG_FILES([PulseAudioConfig.cmake:PulseAudioConfig.cmake.in], - [m4 PulseAudioConfig.cmake > PulseAudioConfig.cmake.gen && mv PulseAudioConfig.cmake.gen PulseAudioConfig.cmake]) -AC_CONFIG_FILES([PulseAudioConfigVersion.cmake]) - -AC_OUTPUT - -# ========================================================================== - -AS_IF([test "x$HAVE_MEMFD" = "x1"], ENABLE_MEMFD=yes, ENABLE_MEMFD=no) -AS_IF([test "x$HAVE_X11" = "x1"], ENABLE_X11=yes, ENABLE_X11=no) -AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], ENABLE_OSS_OUTPUT=yes, ENABLE_OSS_OUTPUT=no) -AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], ENABLE_OSS_WRAPPER=yes, ENABLE_OSS_WRAPPER=no) -AS_IF([test "x$HAVE_ALSA" = "x1"], ENABLE_ALSA=yes, ENABLE_ALSA=no) -AS_IF([test "x$HAVE_COREAUDIO" = "x1"], ENABLE_COREAUDIO=yes, ENABLE_COREAUDIO=no) -AS_IF([test "x$HAVE_SOLARIS" = "x1"], ENABLE_SOLARIS=yes, ENABLE_SOLARIS=no) -AS_IF([test "x$HAVE_WAVEOUT" = "x1"], ENABLE_WAVEOUT=yes, ENABLE_WAVEOUT=no) -AS_IF([test "x$HAVE_GLIB20" = "x1"], ENABLE_GLIB20=yes, ENABLE_GLIB20=no) -AS_IF([test "x$HAVE_GTK30" = "x1"], ENABLE_GTK30=yes, ENABLE_GTK30=no) -AS_IF([test "x$HAVE_GCONF" = "x1"], ENABLE_GCONF=yes, ENABLE_GCONF=no) -AS_IF([test "x$HAVE_GSETTINGS" = "x1"], ENABLE_GSETTINGS=yes, ENABLE_GSETTINGS=no) -AS_IF([test "x$HAVE_AVAHI" = "x1"], ENABLE_AVAHI=yes, ENABLE_AVAHI=no) -AS_IF([test "x$HAVE_JACK" = "x1"], ENABLE_JACK=yes, ENABLE_JACK=no) -AS_IF([test "x$HAVE_LIBASYNCNS" = "x1"], ENABLE_LIBASYNCNS=yes, ENABLE_LIBASYNCNS=no) -AS_IF([test "x$HAVE_LIRC" = "x1"], ENABLE_LIRC=yes, ENABLE_LIRC=no) -AS_IF([test "x$HAVE_DBUS" = "x1"], ENABLE_DBUS=yes, ENABLE_DBUS=no) -AS_IF([test "x$HAVE_UDEV" = "x1"], ENABLE_UDEV=yes, ENABLE_UDEV=no) -AS_IF([test "x$HAVE_SYSTEMD_DAEMON" = "x1"], ENABLE_SYSTEMD_DAEMON=yes, ENABLE_SYSTEMD_DAEMON=no) -AS_IF([test "x$HAVE_SYSTEMD_LOGIN" = "x1"], ENABLE_SYSTEMD_LOGIN=yes, ENABLE_SYSTEMD_LOGIN=no) -AS_IF([test "x$HAVE_SYSTEMD_JOURNAL" = "x1"], ENABLE_SYSTEMD_JOURNAL=yes, ENABLE_SYSTEMD_JOURNAL=no) -AS_IF([test "x$HAVE_BLUEZ_5" = "x1"], ENABLE_BLUEZ_5=yes, ENABLE_BLUEZ_5=no) -AS_IF([test "x$HAVE_BLUEZ_5_OFONO_HEADSET" = "x1"], ENABLE_BLUEZ_5_OFONO_HEADSET=yes, ENABLE_BLUEZ_5_OFONO_HEADSET=no) -AS_IF([test "x$HAVE_BLUEZ_5_NATIVE_HEADSET" = "x1"], ENABLE_BLUEZ_5_NATIVE_HEADSET=yes, ENABLE_BLUEZ_5_NATIVE_HEADSET=no) -AS_IF([test "x$HAVE_HAL_COMPAT" = "x1"], ENABLE_HAL_COMPAT=yes, ENABLE_HAL_COMPAT=no) -AS_IF([test "x$HAVE_TCPWRAP" = "x1"], ENABLE_TCPWRAP=yes, ENABLE_TCPWRAP=no) -AS_IF([test "x$HAVE_LIBSAMPLERATE" = "x1"], ENABLE_LIBSAMPLERATE="yes (DEPRECATED)", ENABLE_LIBSAMPLERATE=no) -AS_IF([test "x$HAVE_IPV6" = "x1"], ENABLE_IPV6=yes, ENABLE_IPV6=no) -AS_IF([test "x$HAVE_OPENSSL" = "x1"], ENABLE_OPENSSL=yes, ENABLE_OPENSSL=no) -AS_IF([test "x$HAVE_FFTW" = "x1"], ENABLE_FFTW=yes, ENABLE_FFTW=no) -AS_IF([test "x$HAVE_ORC" = "xyes"], ENABLE_ORC=yes, ENABLE_ORC=no) -AS_IF([test "x$HAVE_ADRIAN_EC" = "x1"], ENABLE_ADRIAN_EC=yes, ENABLE_ADRIAN_EC=no) -AS_IF([test "x$HAVE_SPEEX" = "x1"], ENABLE_SPEEX=yes, ENABLE_SPEEX=no) -AS_IF([test "x$HAVE_SOXR" = "x1"], ENABLE_SOXR=yes, ENABLE_SOXR=no) -AS_IF([test "x$HAVE_WEBRTC" = "x1"], ENABLE_WEBRTC=yes, ENABLE_WEBRTC=no) -AS_IF([test "x$HAVE_GSTREAMER" = "x1"], ENABLE_GSTREAMER=yes, ENABLE_GSTREAMER=no) -AS_IF([test "x$HAVE_TDB" = "x1"], ENABLE_TDB=yes, ENABLE_TDB=no) -AS_IF([test "x$HAVE_GDBM" = "x1"], ENABLE_GDBM=yes, ENABLE_GDBM=no) -AS_IF([test "x$HAVE_SIMPLEDB" = "x1"], ENABLE_SIMPLEDB=yes, ENABLE_SIMPLEDB=no) -AS_IF([test "x$HAVE_ESOUND" = "x1"], ENABLE_ESOUND=yes, ENABLE_ESOUND=no) -AS_IF([test "x$HAVE_ESOUND" = "x1" -a "x$USE_PER_USER_ESOUND_SOCKET" = "x1"], ENABLE_PER_USER_ESOUND_SOCKET=yes, ENABLE_PER_USER_ESOUND_SOCKET=no) -AS_IF([test "x$HAVE_GCOV" = "x1"], ENABLE_GCOV=yes, ENABLE_GCOV=no) -AS_IF([test "x$HAVE_LIBCHECK" = "x1"], ENABLE_TESTS=yes, ENABLE_TESTS=no) -AS_IF([test "x$enable_legacy_database_entry_format" != "xno"], ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=yes, ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=no) -AS_IF([test "x$enable_stream_restore_clear_old_devices" == "xyes"], ENABLE_STREAM_RESTORE_CLEAR_OLD_DEVICES=yes, ENABLE_STREAM_RESTORE_CLEAR_OLD_DEVICES=no) - -echo " - ---{ $PACKAGE_NAME $VERSION }--- - - prefix: ${prefix} - sysconfdir: ${sysconfdir} - localstatedir: ${localstatedir} - modlibexecdir: ${modlibexecdir} - alsadatadir: ${alsadatadir} - System Runtime Path: ${PA_SYSTEM_RUNTIME_PATH} - System State Path: ${PA_SYSTEM_STATE_PATH} - System Config Path: ${PA_SYSTEM_CONFIG_PATH} - Zsh completions directory: ${zshcompletiondir} - Bash completions directory: ${bashcompletiondir} - Compiler: ${CC} - CFLAGS: ${CFLAGS} - CPPFLAGS: ${CPPFLAGS} - LIBS: ${LIBS} - - Enable memfd shared memory: ${ENABLE_MEMFD} - Enable X11: ${ENABLE_X11} - Enable OSS Output: ${ENABLE_OSS_OUTPUT} - Enable OSS Wrapper: ${ENABLE_OSS_WRAPPER} - Enable EsounD: ${ENABLE_ESOUND} - Enable Alsa: ${ENABLE_ALSA} - Enable CoreAudio: ${ENABLE_COREAUDIO} - Enable Solaris: ${ENABLE_SOLARIS} - Enable WaveOut: ${ENABLE_WAVEOUT} - Enable GLib 2.0: ${ENABLE_GLIB20} - Enable Gtk+ 3.0: ${ENABLE_GTK30} - Enable GConf: ${ENABLE_GCONF} - Enable GSettings: ${ENABLE_GSETTINGS} - Enable Avahi: ${ENABLE_AVAHI} - Enable Jack: ${ENABLE_JACK} - Enable Async DNS: ${ENABLE_LIBASYNCNS} - Enable LIRC: ${ENABLE_LIRC} - Enable D-Bus: ${ENABLE_DBUS} - Enable BlueZ 5: ${ENABLE_BLUEZ_5} - Enable ofono headsets: ${ENABLE_BLUEZ_5_OFONO_HEADSET} - Enable native headsets: ${ENABLE_BLUEZ_5_NATIVE_HEADSET} - Enable udev: ${ENABLE_UDEV} - Enable HAL->udev compat: ${ENABLE_HAL_COMPAT} - Enable systemd - Daemon (Socket Activation): ${ENABLE_SYSTEMD_DAEMON} - Login (Session Tracking): ${ENABLE_SYSTEMD_LOGIN} - Journal (Logging): ${ENABLE_SYSTEMD_JOURNAL} - Enable TCP Wrappers: ${ENABLE_TCPWRAP} - Enable libsamplerate: ${ENABLE_LIBSAMPLERATE} - Enable IPv6: ${ENABLE_IPV6} - Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL} - Enable fftw: ${ENABLE_FFTW} - Enable orc: ${ENABLE_ORC} - Enable Adrian echo canceller: ${ENABLE_ADRIAN_EC} - Enable speex (resampler, AEC): ${ENABLE_SPEEX} - Enable soxr (resampler): ${ENABLE_SOXR} - Enable WebRTC echo canceller: ${ENABLE_WEBRTC} - Enable GStreamer-based RTP: ${ENABLE_GSTREAMER} - Enable gcov coverage: ${ENABLE_GCOV} - Enable unit tests: ${ENABLE_TESTS} - Database - tdb: ${ENABLE_TDB} - gdbm: ${ENABLE_GDBM} - simple database: ${ENABLE_SIMPLEDB} - - System User: ${PA_SYSTEM_USER} - System Group: ${PA_SYSTEM_GROUP} - Access Group: ${PA_ACCESS_GROUP} - Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET} - Force preopen: ${FORCE_PREOPEN} - Preopened modules: ${PREOPEN_MODS} - - Legacy Database Entry Support: ${ENABLE_LEGACY_DATABASE_ENTRY_FORMAT} - module-stream-restore: - Clear old devices: ${ENABLE_STREAM_RESTORE_CLEAR_OLD_DEVICES} -" - -if test "${ENABLE_SPEEX}" = "no" && test "${ENABLE_WEBRTC}" = "no" && test "${ENABLE_ADRIAN_EC}" = "no" ; then -AC_MSG_ERROR([At least one echo canceller implementation must be available.]) -fi - -if test "${ENABLE_DBUS}" = "no" && test "x$os_is_win32" != "x1" ; then - echo " -===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING ===== -You do not have D-Bus support enabled. It is strongly recommended -that you enable D-Bus support if your platform supports it. -Many parts of PulseAudio use D-Bus, from ConsoleKit interaction -to the Device Reservation Protocol to speak to JACK, Bluetooth -support and even a native control protocol for communicating and -controlling the PulseAudio daemon itself. -===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING ===== -" -fi - -if test "${ENABLE_UDEV}" = "no" && test "x$os_is_win32" != "x1" ; then - echo " -===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING ===== -You do not have udev support enabled. It is strongly recommended -that you enable udev support if your platform supports it as it is -the primary method used to detect hardware audio devices (on Linux) -and is thus a critical part of PulseAudio on that platform. -===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING ===== -" -fi - -if test "${ENABLE_SPEEX}" = "no" && test "x$os_is_win32" != "x1" ; then - echo " -===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING ===== -You do not have speex support enabled. It is strongly recommended -that you enable speex support if your platform supports it as it is -the primary method used for audio resampling and is thus a critical -part of PulseAudio on that platform. -===== WARNING WARNING WARNING WARNING WARNING WARNING WARNING ===== -" -fi diff --git a/doc/messaging_api.txt b/doc/messaging_api.txt new file mode 100644 index 000000000..ad0774fde --- /dev/null +++ b/doc/messaging_api.txt @@ -0,0 +1,49 @@ +Message API reference + +The message API allows any object within pulseaudio to register a message +handler. A message handler is a function that can be called by clients using +PA_COMMAND_SEND_OBJECT_MESSAGE. A message consists at least of an object path +and a message command, both specified as strings. Additional parameters can +be specified using a single string in JSON format, but are not mandatory. + +The message handler returns an error number as defined in def.h and also returns +a string in the "response" variable. Non-empty response will be in JSON format. + +The reference further down lists available messages, their parameters +and return values. + +Reference: + +Object path: /core +Message: list-handlers +Parameters: None +Return value: JSON array of handler description objects + [{"name":"Handler name","description":"Description"} ...] + +Object path: /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez +Message: list-codecs +Parameters: None +Return value: JSON array of codec description objects + [{"name":"codec1","description":"Codec 1"} ...] + +Object path: /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez +Message: get-codec +Parameters: None +Return value: "codec name" + +Object path: /card/bluez_card.XX_XX_XX_XX_XX_XX/bluez +Message: switch-codec +Parameters: "codec name" +Return value: none + +Description: Set if card profile selection should be sticky instead of being automated +Object path: /card/ +Message: set-profile-sticky +Parameters: JSON "true" or "false" +Return value: none + +Description: Get if card profile selection should be sticky instead of being automated +Object path: /card/ +Message: get-profile-sticky +Parameters: None +Return value: JSON "true" or "false" diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am deleted file mode 100644 index 4696fb2d7..000000000 --- a/doxygen/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -# This file is part of PulseAudio. -# -# PulseAudio is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -doxygen: doxygen.conf - doxygen $< - -clean-local: - -rm -rf html - -.PHONY: all doxygen diff --git a/doxygen/doxygen.conf.in b/doxygen/doxygen.conf.in index a97c16543..21b6814f0 100644 --- a/doxygen/doxygen.conf.in +++ b/doxygen/doxygen.conf.in @@ -758,8 +758,8 @@ EXCLUDE_SYMBOLS = # directories that contain example code fragments that are included (see # the \include command). -EXAMPLE_PATH = @srcdir@/../src/utils \ - @srcdir@/../src/tests +EXAMPLE_PATH = @top_srcdir@/src/utils \ + @top_srcdir@/src/tests # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp diff --git a/m4/.gitignore b/m4/.gitignore deleted file mode 100644 index abd28caf3..000000000 --- a/m4/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -codeset.m4 -extern-inline.m4 -fcntl-o.m4 -gettext.m4 -glibc2.m4 -glibc21.m4 -iconv.m4 -intdiv0.m4 -intl.m4 -intldir.m4 -intlmacosx.m4 -intmax.m4 -inttypes-pri.m4 -inttypes_h.m4 -lcmessage.m4 -lib-ld.m4 -lib-link.m4 -lib-prefix.m4 -libtool.m4 -lock.m4 -longlong.m4 -ltoptions.m4 -ltsugar.m4 -ltversion.m4 -lt~obsolete.m4 -nls.m4 -po.m4 -printf-posix.m4 -progtest.m4 -size_max.m4 -stdint_h.m4 -threadlib.m4 -uintmax_t.m4 -visibility.m4 -wchar_t.m4 -wint_t.m4 -xsize.m4 diff --git a/m4/acx_libwrap.m4 b/m4/acx_libwrap.m4 deleted file mode 100644 index ccf8afc0a..000000000 --- a/m4/acx_libwrap.m4 +++ /dev/null @@ -1,19 +0,0 @@ -AC_DEFUN([ACX_LIBWRAP], [ -LIBWRAP_LIBS= -saved_LIBS="$LIBS" -LIBS="$LIBS -lwrap" -AC_MSG_CHECKING([for tcpwrap library and headers]) -AC_LINK_IFELSE( -[AC_LANG_PROGRAM( -[#include -#include -int allow_severity = LOG_INFO; -int deny_severity = LOG_WARNING;], -[struct request_info *req; -return hosts_access (req);])], -[AC_DEFINE(HAVE_LIBWRAP, [], [Have tcpwrap?]) -LIBWRAP_LIBS="-lwrap" -AC_MSG_RESULT(yes)], -[AC_MSG_RESULT(no)]) -LIBS="$saved_LIBS" -]) diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 deleted file mode 100644 index ca3639715..000000000 --- a/m4/ax_check_compile_flag.m4 +++ /dev/null @@ -1,74 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) -# -# DESCRIPTION -# -# Check whether the given FLAG works with the current language's compiler -# or gives an error. (Warnings, however, are ignored) -# -# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on -# success/failure. -# -# If EXTRA-FLAGS is defined, it is added to the current language's default -# flags (e.g. CFLAGS) when the check is done. The check is thus made with -# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to -# force the compiler to issue an error when a bad flag is given. -# -# INPUT gives an alternative input source to AC_COMPILE_IFELSE. -# -# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this -# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2011 Maarten Bosmans -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 4 - -AC_DEFUN([AX_CHECK_COMPILE_FLAG], -[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF -AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl -AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ - ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS - _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" - AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], - [AS_VAR_SET(CACHEVAR,[yes])], - [AS_VAR_SET(CACHEVAR,[no])]) - _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) -AS_VAR_IF(CACHEVAR,yes, - [m4_default([$2], :)], - [m4_default([$3], :)]) -AS_VAR_POPDEF([CACHEVAR])dnl -])dnl AX_CHECK_COMPILE_FLAGS diff --git a/m4/ax_check_define.m4 b/m4/ax_check_define.m4 deleted file mode 100644 index 4bc694861..000000000 --- a/m4/ax_check_define.m4 +++ /dev/null @@ -1,92 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_define.html -# =========================================================================== -# -# SYNOPSIS -# -# AC_CHECK_DEFINE([symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) -# AX_CHECK_DEFINE([includes],[symbol], [ACTION-IF-FOUND], [ACTION-IF-NOT]) -# -# DESCRIPTION -# -# Complements AC_CHECK_FUNC but it does not check for a function but for a -# define to exist. Consider a usage like: -# -# AC_CHECK_DEFINE(__STRICT_ANSI__, CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500") -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation; either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AU_ALIAS([AC_CHECK_DEFINED], [AC_CHECK_DEFINE]) -AC_DEFUN([AC_CHECK_DEFINE],[ -AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$1])dnl -AC_CACHE_CHECK([for $1 defined], ac_var, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ - #ifdef $1 - int ok; - #else - choke me - #endif -]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) -AS_IF([test AS_VAR_GET(ac_var) != "no"], [$2], [$3])dnl -AS_VAR_POPDEF([ac_var])dnl -]) - -AU_ALIAS([AX_CHECK_DEFINED], [AX_CHECK_DEFINE]) -AC_DEFUN([AX_CHECK_DEFINE],[ -AS_VAR_PUSHDEF([ac_var],[ac_cv_defined_$2_$1])dnl -AC_CACHE_CHECK([for $2 defined in $1], ac_var, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <$1>]], [[ - #ifdef $2 - int ok; - #else - choke me - #endif -]])],[AS_VAR_SET(ac_var, yes)],[AS_VAR_SET(ac_var, no)])) -AS_IF([test AS_VAR_GET(ac_var) != "no"], [$3], [$4])dnl -AS_VAR_POPDEF([ac_var])dnl -]) - -AC_DEFUN([AX_CHECK_FUNC], -[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$2])dnl -AC_CACHE_CHECK([for $2], ac_var, -dnl AC_LANG_FUNC_LINK_TRY -[AC_LINK_IFELSE([AC_LANG_PROGRAM([$1 - #undef $2 - char $2 ();],[ - char (*f) () = $2; - return f != $2; ])], - [AS_VAR_SET(ac_var, yes)], - [AS_VAR_SET(ac_var, no)])]) -AS_IF([test AS_VAR_GET(ac_var) = yes], [$3], [$4])dnl -AS_VAR_POPDEF([ac_var])dnl -])# AC_CHECK_FUNC diff --git a/m4/ax_check_flag.m4 b/m4/ax_check_flag.m4 deleted file mode 100644 index 52405fd4b..000000000 --- a/m4/ax_check_flag.m4 +++ /dev/null @@ -1,147 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_flag.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_PREPROC_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) -# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) -# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) -# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) -# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS]) -# AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS]) -# -# DESCRIPTION -# -# Check whether the given FLAG works with the current language's -# preprocessor/compiler/linker, or whether they give an error. (Warnings, -# however, are ignored.) -# -# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on -# success/failure. -# -# If EXTRA-FLAGS is defined, it is added to the current language's default -# flags (e.g. CFLAGS) when the check is done. The check us thus made -# with the following flags: "CFLAGS EXTRA-FLAGS FLAG". EXTRA-FLAGS can -# for example be used to force the compiler to issue an error when a bad -# flag is given. -# -# AX_APPEND_FLAG appends the FLAG to the FLAG-VARIABLE shell variable or -# the current language's flags if not specified. FLAG is not added to -# FLAG-VARIABLE if it is already in the shell variable. -# -# AX_APPEND_COMPILE_FLAGS checks for each FLAG1, FLAG2, etc. using -# AX_CHECK_COMPILE_FLAG and if the check is successful the flag is added -# to the appropriate FLAGS variable with AX_APPEND_FLAG. The -# FLAGS-VARIABLE and EXTRA-FLAGS arguments are the same as in the other -# macros. AX_APPEND_LINK_FLAGS does the same for linker flags. -# -# NOTE: Based on AX_CHECK_COMPILER_FLAGS and AX_CFLAGS_GCC_OPTION. -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2009 Steven G. Johnson -# Copyright (c) 2009 Matteo Frigo -# Copyright (c) 2011 Maarten Bosmans -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 2 - -AC_DEFUN([AX_CHECK_PREPROC_FLAG], -[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX -AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]cppflags_$4_$1])dnl -AC_CACHE_CHECK([whether _AC_LANG preprocessor accepts $1], CACHEVAR, [ - ax_check_save_flags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $4 $1" - AC_PREPROC_IFELSE([AC_LANG_PROGRAM()], - [AS_VAR_SET([CACHEVAR],[yes])], - [AS_VAR_SET([CACHEVAR],[no])]) - CPPFLAGS=$ax_check_save_flags]) -AS_VAR_IF([CACHEVAR], "yes", - [m4_default([$2], :)], - [m4_default([$3], :)]) -AS_VAR_POPDEF([CACHEVAR])dnl -])dnl AX_CHECK_PREPROC_FLAGS - -AC_DEFUN([AX_CHECK_COMPILE_FLAG], -[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX -AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl -AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ - ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS - _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], - [AS_VAR_SET([CACHEVAR],[yes])], - [AS_VAR_SET([CACHEVAR],[no])]) - _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) -AS_VAR_IF([CACHEVAR], "yes", - [m4_default([$2], :)], - [m4_default([$3], :)]) -AS_VAR_POPDEF([CACHEVAR])dnl -])dnl AX_CHECK_COMPILE_FLAGS - -AC_DEFUN([AX_CHECK_LINK_FLAG], -[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl -AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ - ax_check_save_flags=$LDFLAGS - LDFLAGS="$LDFLAGS $4 $1" - AC_LINK_IFELSE([AC_LANG_PROGRAM()], - [AS_VAR_SET([CACHEVAR],[yes])], - [AS_VAR_SET([CACHEVAR],[no])]) - LDFLAGS=$ax_check_save_flags]) -AS_VAR_IF([CACHEVAR], "yes", - [m4_default([$2], :)], - [m4_default([$3], :)]) -AS_VAR_POPDEF([CACHEVAR])dnl -])dnl AX_CHECK_LINK_FLAGS - - -AC_DEFUN([AX_APPEND_FLAG], -[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX -AC_REQUIRE([AC_PROG_GREP]) -AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[]FLAGS)])dnl -AS_VAR_SET_IF([FLAGS], - [AS_IF([AS_ECHO(" $[]FLAGS ") | $GREP " $1 " 2>&1 >/dev/null], - [AC_RUN_LOG([: FLAGS already contains $1])], - [AC_RUN_LOG([: FLAGS="$FLAGS $1"]) - AS_VAR_APPEND([FLAGS], [" $1"])])], - [AS_VAR_SET([FLAGS],[$1])]) -AS_VAR_POPDEF([FLAGS])dnl -])dnl AX_APPEND_FLAG - -AC_DEFUN([AX_APPEND_COMPILE_FLAGS], -[for flag in $1; do - AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3]) -done -])dnl AX_APPEND_COMPILE_FLAGS - -AC_DEFUN([AX_APPEND_LINK_FLAGS], -[for flag in $1; do - AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3]) -done -])dnl AX_APPEND_LINK_FLAGS diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4 deleted file mode 100644 index 079e17d2a..000000000 --- a/m4/ax_cxx_compile_stdcxx.m4 +++ /dev/null @@ -1,558 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the specified -# version of the C++ standard. If necessary, add switches to CXXFLAGS to -# enable support. VERSION may be '11' (for the C++11 standard) or '14' -# (for the C++14 standard). -# -# The second argument, if specified, indicates whether you insist on an -# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. -# -std=c++11). If neither is specified, you get whatever works, with -# preference for an extended mode. -# -# The third argument, if specified 'mandatory' or if left unspecified, -# indicates that baseline support for the specified C++ standard is -# required and that the macro should error out if no mode with that -# support is found. If specified 'optional', then configuration proceeds -# regardless, after defining HAVE_CXX${VERSION} if and only if a -# supporting mode is found. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik -# Copyright (c) 2012 Zack Weinberg -# Copyright (c) 2013 Roy Stogner -# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov -# Copyright (c) 2015 Paul Norman -# Copyright (c) 2015 Moritz Klammler -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 1 - -dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro -dnl (serial version number 13). - -AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl - m4_if([$1], [11], [], - [$1], [14], [], - [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])], - [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl - m4_if([$2], [], [], - [$2], [ext], [], - [$2], [noext], [], - [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl - m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], - [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], - [$3], [optional], [ax_cxx_compile_cxx$1_required=false], - [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) - AC_LANG_PUSH([C++])dnl - ac_success=no - AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, - ax_cv_cxx_compile_cxx$1, - [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [ax_cv_cxx_compile_cxx$1=yes], - [ax_cv_cxx_compile_cxx$1=no])]) - if test x$ax_cv_cxx_compile_cxx$1 = xyes; then - ac_success=yes - fi - - m4_if([$2], [noext], [], [dnl - if test x$ac_success = xno; then - for switch in -std=gnu++$1 -std=gnu++0x; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, - $cachevar, - [ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXXFLAGS="$ac_save_CXXFLAGS"]) - if eval test x\$$cachevar = xyes; then - CXXFLAGS="$CXXFLAGS $switch" - ac_success=yes - break - fi - done - fi]) - - m4_if([$2], [ext], [], [dnl - if test x$ac_success = xno; then - dnl HP's aCC needs +std=c++11 according to: - dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf - dnl Cray's crayCC needs "-h std=c++11" - for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, - $cachevar, - [ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXXFLAGS="$ac_save_CXXFLAGS"]) - if eval test x\$$cachevar = xyes; then - CXXFLAGS="$CXXFLAGS $switch" - ac_success=yes - break - fi - done - fi]) - AC_LANG_POP([C++]) - if test x$ax_cxx_compile_cxx$1_required = xtrue; then - if test x$ac_success = xno; then - AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) - fi - else - if test x$ac_success = xno; then - HAVE_CXX$1=0 - AC_MSG_NOTICE([No compiler with C++$1 support was found]) - else - HAVE_CXX$1=1 - AC_DEFINE(HAVE_CXX$1,1, - [define if the compiler supports basic C++$1 syntax]) - fi - - AC_SUBST(HAVE_CXX$1) - fi -]) - - -dnl Test body for checking C++11 support - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 -) - - -dnl Test body for checking C++14 support - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 -) - - -dnl Tests for new features in C++11 - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ - -// If the compiler admits that it is not ready for C++11, why torture it? -// Hopefully, this will speed up the test. - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif __cplusplus < 201103L - -#error "This is not a C++11 compiler" - -#else - -namespace cxx11 -{ - - namespace test_static_assert - { - - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - } - - namespace test_final_override - { - - struct Base - { - virtual void f() {} - }; - - struct Derived : public Base - { - virtual void f() override {} - }; - - } - - namespace test_double_right_angle_brackets - { - - template < typename T > - struct check {}; - - typedef check single_type; - typedef check> double_type; - typedef check>> triple_type; - typedef check>>> quadruple_type; - - } - - namespace test_decltype - { - - int - f() - { - int a = 1; - decltype(a) b = 2; - return a + b; - } - - } - - namespace test_type_deduction - { - - template < typename T1, typename T2 > - struct is_same - { - static const bool value = false; - }; - - template < typename T > - struct is_same - { - static const bool value = true; - }; - - template < typename T1, typename T2 > - auto - add(T1 a1, T2 a2) -> decltype(a1 + a2) - { - return a1 + a2; - } - - int - test(const int c, volatile int v) - { - static_assert(is_same::value == true, ""); - static_assert(is_same::value == false, ""); - static_assert(is_same::value == false, ""); - auto ac = c; - auto av = v; - auto sumi = ac + av + 'x'; - auto sumf = ac + av + 1.0; - static_assert(is_same::value == true, ""); - static_assert(is_same::value == true, ""); - static_assert(is_same::value == true, ""); - static_assert(is_same::value == false, ""); - static_assert(is_same::value == true, ""); - return (sumf > 0.0) ? sumi : add(c, v); - } - - } - - namespace test_noexcept - { - - int f() { return 0; } - int g() noexcept { return 0; } - - static_assert(noexcept(f()) == false, ""); - static_assert(noexcept(g()) == true, ""); - - } - - namespace test_constexpr - { - - template < typename CharT > - unsigned long constexpr - strlen_c_r(const CharT *const s, const unsigned long acc) noexcept - { - return *s ? strlen_c_r(s + 1, acc + 1) : acc; - } - - template < typename CharT > - unsigned long constexpr - strlen_c(const CharT *const s) noexcept - { - return strlen_c_r(s, 0UL); - } - - static_assert(strlen_c("") == 0UL, ""); - static_assert(strlen_c("1") == 1UL, ""); - static_assert(strlen_c("example") == 7UL, ""); - static_assert(strlen_c("another\0example") == 7UL, ""); - - } - - namespace test_rvalue_references - { - - template < int N > - struct answer - { - static constexpr int value = N; - }; - - answer<1> f(int&) { return answer<1>(); } - answer<2> f(const int&) { return answer<2>(); } - answer<3> f(int&&) { return answer<3>(); } - - void - test() - { - int i = 0; - const int c = 0; - static_assert(decltype(f(i))::value == 1, ""); - static_assert(decltype(f(c))::value == 2, ""); - static_assert(decltype(f(0))::value == 3, ""); - } - - } - - namespace test_uniform_initialization - { - - struct test - { - static const int zero {}; - static const int one {1}; - }; - - static_assert(test::zero == 0, ""); - static_assert(test::one == 1, ""); - - } - - namespace test_lambdas - { - - void - test1() - { - auto lambda1 = [](){}; - auto lambda2 = lambda1; - lambda1(); - lambda2(); - } - - int - test2() - { - auto a = [](int i, int j){ return i + j; }(1, 2); - auto b = []() -> int { return '0'; }(); - auto c = [=](){ return a + b; }(); - auto d = [&](){ return c; }(); - auto e = [a, &b](int x) mutable { - const auto identity = [](int y){ return y; }; - for (auto i = 0; i < a; ++i) - a += b--; - return x + identity(a + b); - }(0); - return a + b + c + d + e; - } - - int - test3() - { - const auto nullary = [](){ return 0; }; - const auto unary = [](int x){ return x; }; - using nullary_t = decltype(nullary); - using unary_t = decltype(unary); - const auto higher1st = [](nullary_t f){ return f(); }; - const auto higher2nd = [unary](nullary_t f1){ - return [unary, f1](unary_t f2){ return f2(unary(f1())); }; - }; - return higher1st(nullary) + higher2nd(nullary)(unary); - } - - } - - namespace test_variadic_templates - { - - template - struct sum; - - template - struct sum - { - static constexpr auto value = N0 + sum::value; - }; - - template <> - struct sum<> - { - static constexpr auto value = 0; - }; - - static_assert(sum<>::value == 0, ""); - static_assert(sum<1>::value == 1, ""); - static_assert(sum<23>::value == 23, ""); - static_assert(sum<1, 2>::value == 3, ""); - static_assert(sum<5, 5, 11>::value == 21, ""); - static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); - - } - - // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae - // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function - // because of this. - namespace test_template_alias_sfinae - { - - struct foo {}; - - template - using member = typename T::member_type; - - template - void func(...) {} - - template - void func(member*) {} - - void test(); - - void test() { func(0); } - - } - -} // namespace cxx11 - -#endif // __cplusplus >= 201103L - -]]) - - -dnl Tests for new features in C++14 - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ - -// If the compiler admits that it is not ready for C++14, why torture it? -// Hopefully, this will speed up the test. - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif __cplusplus < 201402L - -#error "This is not a C++14 compiler" - -#else - -namespace cxx14 -{ - - namespace test_polymorphic_lambdas - { - - int - test() - { - const auto lambda = [](auto&&... args){ - const auto istiny = [](auto x){ - return (sizeof(x) == 1UL) ? 1 : 0; - }; - const int aretiny[] = { istiny(args)... }; - return aretiny[0]; - }; - return lambda(1, 1L, 1.0f, '1'); - } - - } - - namespace test_binary_literals - { - - constexpr auto ivii = 0b0000000000101010; - static_assert(ivii == 42, "wrong value"); - - } - - namespace test_generalized_constexpr - { - - template < typename CharT > - constexpr unsigned long - strlen_c(const CharT *const s) noexcept - { - auto length = 0UL; - for (auto p = s; *p; ++p) - ++length; - return length; - } - - static_assert(strlen_c("") == 0UL, ""); - static_assert(strlen_c("x") == 1UL, ""); - static_assert(strlen_c("test") == 4UL, ""); - static_assert(strlen_c("another\0test") == 7UL, ""); - - } - - namespace test_lambda_init_capture - { - - int - test() - { - auto x = 0; - const auto lambda1 = [a = x](int b){ return a + b; }; - const auto lambda2 = [a = lambda1(x)](){ return a; }; - return lambda2(); - } - - } - - namespace test_digit_seperators - { - - constexpr auto ten_million = 100'000'000; - static_assert(ten_million == 100000000, ""); - - } - - namespace test_return_type_deduction - { - - auto f(int& x) { return x; } - decltype(auto) g(int& x) { return x; } - - template < typename T1, typename T2 > - struct is_same - { - static constexpr auto value = false; - }; - - template < typename T > - struct is_same - { - static constexpr auto value = true; - }; - - int - test() - { - auto x = 0; - static_assert(is_same::value, ""); - static_assert(is_same::value, ""); - return x; - } - - } - -} // namespace cxx14 - -#endif // __cplusplus >= 201402L - -]]) diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4 deleted file mode 100644 index 09db38364..000000000 --- a/m4/ax_cxx_compile_stdcxx_11.m4 +++ /dev/null @@ -1,39 +0,0 @@ -# ============================================================================ -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html -# ============================================================================ -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the C++11 -# standard; if necessary, add switches to CXXFLAGS to enable support. -# -# This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX -# macro with the version set to C++11. The two optional arguments are -# forwarded literally as the second and third argument respectively. -# Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for -# more information. If you want to use this macro, you also need to -# download the ax_cxx_compile_stdcxx.m4 file. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik -# Copyright (c) 2012 Zack Weinberg -# Copyright (c) 2013 Roy Stogner -# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov -# Copyright (c) 2015 Paul Norman -# Copyright (c) 2015 Moritz Klammler -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 14 - -include([ax_cxx_compile_stdcxx.m4]) - -AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])]) diff --git a/m4/ax_define_dir.m4 b/m4/ax_define_dir.m4 deleted file mode 100644 index b74d155fd..000000000 --- a/m4/ax_define_dir.m4 +++ /dev/null @@ -1,49 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_define_dir.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION]) -# -# DESCRIPTION -# -# This macro sets VARNAME to the expansion of the DIR variable, taking -# care of fixing up ${prefix} and such. -# -# VARNAME is then offered as both an output variable and a C preprocessor -# symbol. -# -# Example: -# -# AX_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.]) -# -# LICENSE -# -# Copyright (c) 2008 Stepan Kasal -# Copyright (c) 2008 Andreas Schwab -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2008 Alexandre Oliva -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 6 - -AU_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR]) -AC_DEFUN([AX_DEFINE_DIR], [ - prefix_NONE= - exec_prefix_NONE= - test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix - test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix -dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn -dnl refers to ${prefix}. Thus we have to use `eval' twice. - eval ax_define_dir="\"[$]$2\"" - eval ax_define_dir="\"$ax_define_dir\"" - AC_SUBST($1, "$ax_define_dir") - AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3]) - test "$prefix_NONE" && prefix=NONE - test "$exec_prefix_NONE" && exec_prefix=NONE -]) diff --git a/m4/ax_pthread.m4 b/m4/ax_pthread.m4 deleted file mode 100644 index 6d400ed4e..000000000 --- a/m4/ax_pthread.m4 +++ /dev/null @@ -1,317 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_pthread.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -# -# DESCRIPTION -# -# This macro figures out how to build C programs using POSIX threads. It -# sets the PTHREAD_LIBS output variable to the threads library and linker -# flags, and the PTHREAD_CFLAGS output variable to any special C compiler -# flags that are needed. (The user can also force certain compiler -# flags/libs to be tested by setting these environment variables.) -# -# Also sets PTHREAD_CC to any special C compiler that is needed for -# multi-threaded programs (defaults to the value of CC otherwise). (This -# is necessary on AIX to use the special cc_r compiler alias.) -# -# NOTE: You are assumed to not only compile your program with these flags, -# but also link it with them as well. e.g. you should link with -# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS -# -# If you are only building threads programs, you may wish to use these -# variables in your default LIBS, CFLAGS, and CC: -# -# LIBS="$PTHREAD_LIBS $LIBS" -# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -# CC="$PTHREAD_CC" -# -# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant -# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name -# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). -# -# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the -# PTHREAD_PRIO_INHERIT symbol is defined when compiling with -# PTHREAD_CFLAGS. -# -# ACTION-IF-FOUND is a list of shell commands to run if a threads library -# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it -# is not found. If ACTION-IF-FOUND is not specified, the default action -# will define HAVE_PTHREAD. -# -# Please let the authors know if this macro fails on any platform, or if -# you have any other suggestions or comments. This macro was based on work -# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help -# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by -# Alejandro Forero Cuervo to the autoconf macro repository. We are also -# grateful for the helpful feedback of numerous users. -# -# Updated for Autoconf 2.68 by Daniel Richard G. -# -# LICENSE -# -# Copyright (c) 2008 Steven G. Johnson -# Copyright (c) 2011 Daniel Richard G. -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 20 - -AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) -AC_DEFUN([AX_PTHREAD], [ -AC_REQUIRE([AC_CANONICAL_HOST]) -AC_LANG_PUSH([C]) -ax_pthread_ok=no - -# We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). -# It gets checked for in the link test anyway. - -# First of all, check if the user has set any of the PTHREAD_LIBS, -# etcetera environment variables, and if threads linking works using -# them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes) - AC_MSG_RESULT($ax_pthread_ok) - if test x"$ax_pthread_ok" = xno; then - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" - fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" -fi - -# We must check for the threads library under a number of different -# names; the ordering is very important because some systems -# (e.g. DEC) have both -lpthread and -lpthreads, where one of the -# libraries is broken (non-POSIX). - -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. - -ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" - -# The ordering *is* (sometimes) important. Some notes on the -# individual items follow: - -# pthreads: AIX (must check this before -lpthread) -# none: in case threads are in libc; should be tried before -Kthread and -# other compiler flags to prevent continual compiler warnings -# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc -# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# ... -mt is also the pthreads flag for HP/aCC -# pthread: Linux, etcetera -# --thread-safe: KAI C++ -# pthread-config: use pthread-config program (for GNU Pth library) - -case ${host_os} in - solaris*) - - # On Solaris (at least, for some versions), libc contains stubbed - # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthreads/-mt/ - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: - - ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" - ;; - - darwin*) - ax_pthread_flags="-pthread $ax_pthread_flags" - ;; -esac - -if test x"$ax_pthread_ok" = xno; then -for flag in $ax_pthread_flags; do - - case $flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" - ;; - - pthread-config) - AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no) - if test x"$ax_pthread_config" = xno; then continue; fi - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - - *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" - ;; - esac - - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include - static void routine(void *a) { a = 0; } - static void *start_routine(void *a) { return a; }], - [pthread_t th; pthread_attr_t attr; - pthread_create(&th, 0, start_routine, 0); - pthread_join(th, 0); - pthread_attr_init(&attr); - pthread_cleanup_push(routine, 0); - pthread_cleanup_pop(0) /* ; */])], - [ax_pthread_ok=yes], - []) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - AC_MSG_RESULT($ax_pthread_ok) - if test "x$ax_pthread_ok" = xyes; then - break; - fi - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi - -# Various other checks: -if test "x$ax_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], - [int attr = $attr; return attr /* ; */])], - [attr_name=$attr; break], - []) - done - AC_MSG_RESULT($attr_name) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - flag=no - case ${host_os} in - aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; - osf* | hpux*) flag="-D_REENTRANT";; - solaris*) - if test "$GCC" = "yes"; then - flag="-D_REENTRANT" - else - flag="-mt -D_REENTRANT" - fi - ;; - esac - AC_MSG_RESULT(${flag}) - if test "x$flag" != xno; then - PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" - fi - - AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], - ax_cv_PTHREAD_PRIO_INHERIT, [ - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[#include ]], [[int i = PTHREAD_PRIO_INHERIT;]])], - [ax_cv_PTHREAD_PRIO_INHERIT=yes], - [ax_cv_PTHREAD_PRIO_INHERIT=no]) - ]) - AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], - AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.])) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - # More AIX lossage: compile with *_r variant - if test "x$GCC" != xyes; then - case $host_os in - aix*) - AS_CASE(["x/$CC"], - [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], - [#handle absolute path differently from PATH based program lookup - AS_CASE(["x$CC"], - [x/*], - [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], - [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) - ;; - esac - fi -fi - -test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" - -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) - -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$ax_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) - : -else - ax_pthread_ok=no - $2 -fi -AC_LANG_POP -])dnl AX_PTHREAD diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4 deleted file mode 100644 index 033e3b135..000000000 --- a/m4/ax_tls.m4 +++ /dev/null @@ -1,76 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_tls.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_TLS([action-if-found], [action-if-not-found]) -# -# DESCRIPTION -# -# Provides a test for the compiler support of thread local storage (TLS) -# extensions. Defines TLS if it is found. Currently knows about GCC/ICC -# and MSVC. I think SunPro uses the same as GCC, and Borland apparently -# supports either. -# -# LICENSE -# -# Copyright (c) 2008 Alan Woodland -# Copyright (c) 2010 Diego Elio Petteno` -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 10 - -AC_DEFUN([AX_TLS], [ - AC_MSG_CHECKING(for thread local storage (TLS) class) - AC_CACHE_VAL(ac_cv_tls, [ - ax_tls_keywords="__thread __declspec(thread) none" - for ax_tls_keyword in $ax_tls_keywords; do - AS_CASE([$ax_tls_keyword], - [none], [ac_cv_tls=none ; break], - [AC_TRY_COMPILE( - [#include - static void - foo(void) { - static ] $ax_tls_keyword [ int bar; - exit(1); - }], - [], - [ac_cv_tls=$ax_tls_keyword ; break], - ac_cv_tls=none - )]) - done - ]) - AC_MSG_RESULT($ac_cv_tls) - - AS_IF([test "$ac_cv_tls" != "none"], - AC_DEFINE_UNQUOTED([TLS], $ac_cv_tls, [If the compiler supports a TLS storage class define it to that here]) - m4_ifnblank([$1], [$1]), - m4_ifnblank([$2], [$2]) - ) -]) diff --git a/m4/orc.m4 b/m4/orc.m4 deleted file mode 100644 index 983d46247..000000000 --- a/m4/orc.m4 +++ /dev/null @@ -1,69 +0,0 @@ -dnl pkg-config-based checks for Orc - -dnl specific: -dnl ORC_CHECK([REQUIRED_VERSION]) - -AC_DEFUN([ORC_CHECK], -[ - ORC_REQ=ifelse([$1], , "0.4.6", [$1]) - - AC_ARG_ENABLE(orc, - AC_HELP_STRING([--enable-orc],[use Orc if installed]), - [case "${enableval}" in - auto) enable_orc=auto ;; - yes) enable_orc=yes ;; - no) enable_orc=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-orc) ;; - esac - ], - [enable_orc=auto]) dnl Default value - - if test "x$enable_orc" != "xno" ; then - PKG_CHECK_MODULES(ORC, orc-0.4 >= $ORC_REQ, [ - AC_DEFINE(HAVE_ORC, 1, [Use Orc]) - HAVE_ORC=yes - if test "x$ORCC" = "x" ; then - AC_MSG_CHECKING(for usable orcc) - ORCC=`$PKG_CONFIG --variable=orcc orc-0.4` - dnl check whether the orcc found by pkg-config can be run from the build environment - dnl if this is not the case (e.g. when cross-compiling) fall back to orcc from PATH - AS_IF([$ORCC --version 1> /dev/null 2> /dev/null], [], [ORCC=`which orcc`]) - AC_MSG_RESULT($ORCC) - fi - AC_SUBST(ORCC) - ORCC_FLAGS="--compat $ORC_REQ" - AC_SUBST(ORCC_FLAGS) - AS_IF([test "x$ORCC" = "x"], [HAVE_ORCC=no], [HAVE_ORCC=yes]) - ], [ - if test "x$enable_orc" = "xyes" ; then - AC_MSG_ERROR([--enable-orc specified, but Orc >= $ORC_REQ not found]) - fi - AC_DEFINE(DISABLE_ORC, 1, [Disable Orc]) - HAVE_ORC=no - HAVE_ORCC=no - ]) - else - AC_DEFINE(DISABLE_ORC, 1, [Disable Orc]) - HAVE_ORC=no - HAVE_ORCC=no - fi - AM_CONDITIONAL(HAVE_ORC, [test "x$HAVE_ORC" = "xyes"]) - AM_CONDITIONAL(HAVE_ORCC, [test "x$HAVE_ORCC" = "xyes"]) - -])) - -AC_DEFUN([ORC_OUTPUT], -[ - if test "$HAVE_ORC" = yes ; then - printf "configure: *** Orc acceleration enabled.\n" - else - if test "x$enable_orc" = "xno" ; then - printf "configure: *** Orc acceleration disabled by --disable-orc. Slower code paths\n" - printf " will be used.\n" - else - printf "configure: *** Orc acceleration disabled. Requires Orc >= $ORC_REQ, which was\n" - printf " not found. Slower code paths will be used.\n" - fi - fi - printf "\n" -]) diff --git a/man/Makefile.am b/man/Makefile.am deleted file mode 100644 index 26829c632..000000000 --- a/man/Makefile.am +++ /dev/null @@ -1,102 +0,0 @@ -# This file is part of PulseAudio. -# -# PulseAudio is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -DISTCLEANFILES = \ - $(noinst_DATA) - -noinst_DATA = \ - pulseaudio.1.xml \ - pax11publish.1.xml \ - pacat.1.xml \ - pacmd.1.xml \ - pactl.1.xml \ - pasuspender.1.xml \ - padsp.1.xml \ - pulse-daemon.conf.5.xml \ - pulse-client.conf.5.xml \ - default.pa.5.xml \ - pulse-cli-syntax.5.xml \ - start-pulseaudio-x11.1.xml - -if HAVE_ESOUND -noinst_DATA += esdcompat.1.xml -endif - -xmllint: $(noinst_DATA) - for f in $(noinst_DATA) ; do \ - xmllint --noout --valid "$$f" || exit 1 ; \ - done - -if BUILD_MANPAGES - -dist_man_MANS = \ - pulseaudio.1 \ - pax11publish.1 \ - pacat.1 \ - pacmd.1 \ - pactl.1 \ - pasuspender.1 \ - padsp.1 \ - pulse-daemon.conf.5 \ - pulse-client.conf.5 \ - default.pa.5 \ - pulse-cli-syntax.5 \ - start-pulseaudio-x11.1 - -if HAVE_ESOUND -dist_man_MANS += esdcompat.1 -endif -CLEANFILES = \ - $(dist_man_MANS) - -%: %.xml Makefile - $(AM_V_GEN) perl $(srcdir)/xmltoman $< > $@ || rm -f $@ - -if OS_IS_WIN32 -SYMLINK_PROGRAM=cd $(DESTDIR)$(man1dir) && cp -else -SYMLINK_PROGRAM=ln -sf -endif -install-data-hook: - $(SYMLINK_PROGRAM) pacat.1 $(DESTDIR)$(man1dir)/paplay.1 - $(SYMLINK_PROGRAM) pacat.1 $(DESTDIR)$(man1dir)/parec.1 - $(SYMLINK_PROGRAM) pacat.1 $(DESTDIR)$(man1dir)/parecord.1 - $(SYMLINK_PROGRAM) pacat.1 $(DESTDIR)$(man1dir)/pamon.1 - -uninstall-hook: - rm -f $(DESTDIR)$(man1dir)/paplay.1 - rm -f $(DESTDIR)$(man1dir)/parec.1 - rm -f $(DESTDIR)$(man1dir)/parecord.1 - rm -f $(DESTDIR)$(man1dir)/pamon.1 -endif - -EXTRA_DIST = \ - pulseaudio.1.xml.in \ - esdcompat.1.xml.in \ - pax11publish.1.xml.in \ - pacat.1.xml.in \ - pacmd.1.xml.in \ - pactl.1.xml.in \ - pasuspender.1.xml.in \ - padsp.1.xml.in \ - pulse-daemon.conf.5.xml.in \ - pulse-client.conf.5.xml.in \ - default.pa.5.xml.in \ - pulse-cli-syntax.5.xml.in \ - start-pulseaudio-x11.1.xml.in \ - xmltoman \ - xmltoman.css \ - xmltoman.xsl \ - xmltoman.dtd diff --git a/man/meson.build b/man/meson.build index 104384459..d72b3cf96 100644 --- a/man/meson.build +++ b/man/meson.build @@ -1,19 +1,38 @@ # man page name, section, [aliases] -manpages = [ - ['default.pa', '5'], - ['pacat', '1', ['paplay', 'parec', 'parecord', 'pamon']], - ['pacmd', '1'], - ['pactl', '1'], - ['padsp', '1'], - ['pasuspender', '1'], - ['pax11publish', '1'], - ['pulse-cli-syntax', '5'], - ['pulse-client.conf', '5'], - ['pulse-daemon.conf', '5'], - ['pulseaudio', '1'], - ['start-pulseaudio-x11', '1'], -] +manpages = [] + +if get_option('daemon') + manpages += [ + ['default.pa', '5'], + ['pacmd', '1'], + ['pasuspender', '1'], + ['pulse-cli-syntax', '5'], + ['pulse-daemon.conf', '5'], + ['pulseaudio', '1'], + ['start-pulseaudio-x11', '1'], + ] +endif + +if get_option('client') + manpages += [ + ['pacat', '1', ['paplay', 'parec', 'parecord', 'pamon']], + ['pactl', '1'], + ['pulse-client.conf', '5'], + ] + + if cdata.has('HAVE_OSS_WRAPPER') + manpages += [ + ['padsp', '1'], + ] + endif + + if x11_dep.found() + manpages += [ + ['pax11publish', '1'], + ] + endif +endif # FIXME: Add esdcompat if HAVE_ESOUND #manpages += ['esdcompat', '1'], diff --git a/man/pacat.1.xml.in b/man/pacat.1.xml.in index 8fcb51d92..387f3ed4e 100644 --- a/man/pacat.1.xml.in +++ b/man/pacat.1.xml.in @@ -79,7 +79,7 @@ License along with PulseAudio; if not, see . + +