Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Müller <nexyon@gmail.com>2021-03-02 19:29:18 +0300
committerJörg Müller <nexyon@gmail.com>2021-03-17 01:21:45 +0300
commitd33339ebf44855b62200a2784c046792d78c75bc (patch)
tree425a1d78d6c40f8b188e499cf0db2bc29e8f2d32 /build_files
parent7b8fc307dc4ff608fc68e2decee45bae59f0c7c9 (diff)
Audaspace: add support for PulseAudio on Linux
This adds PulseAudio as audio backend on Linux. PulseAudio is the main audio engine used on most, if not all, Linux distributions today. Ref T86590
Diffstat (limited to 'build_files')
-rwxr-xr-xbuild_files/build_environment/install_deps.sh33
-rw-r--r--build_files/buildbot/config/blender_linux.cmake1
-rw-r--r--build_files/cmake/Modules/FindPulse.cmake60
-rw-r--r--build_files/cmake/config/blender_full.cmake1
-rw-r--r--build_files/cmake/config/blender_headless.cmake1
-rw-r--r--build_files/cmake/config/blender_lite.cmake1
-rw-r--r--build_files/cmake/config/blender_release.cmake1
-rw-r--r--build_files/cmake/config/bpy_module.cmake1
-rw-r--r--build_files/cmake/macros.cmake3
-rw-r--r--build_files/cmake/platform/platform_unix.cmake8
10 files changed, 109 insertions, 1 deletions
diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh
index 3b364c21f7d..7cd21b2885c 100755
--- a/build_files/build_environment/install_deps.sh
+++ b/build_files/build_environment/install_deps.sh
@@ -51,7 +51,7 @@ ARGS=$( \
getopt \
-o s:i:t:h \
--long source:,install:,tmp:,info:,threads:,help,show-deps,no-sudo,no-build,no-confirm,\
-with-all,with-opencollada,with-jack,with-embree,with-oidn,with-nanovdb,\
+with-all,with-opencollada,with-jack,with-pulseaudio,with-embree,with-oidn,with-nanovdb,\
ver-ocio:,ver-oiio:,ver-llvm:,ver-osl:,ver-osd:,ver-openvdb:,ver-xr-openxr:,\
force-all,force-python,force-boost,force-tbb,\
force-ocio,force-openexr,force-oiio,force-llvm,force-osl,force-osd,force-openvdb,\
@@ -157,6 +157,9 @@ ARGUMENTS_INFO="\"COMMAND LINE ARGUMENTS:
--with-jack
Install the jack libraries.
+ --with-pulseaudio
+ Install the pulseaudio libraries.
+
--ver-ocio=<ver>
Force version of OCIO library.
@@ -721,6 +724,9 @@ while true; do
--with-jack)
WITH_JACK=true; shift; continue;
;;
+ --with-pulseaudio)
+ WITH_PULSEAUDIO=true; shift; continue;
+ ;;
--ver-ocio)
OCIO_VERSION="$2"
OCIO_VERSION_MIN=$OCIO_VERSION
@@ -985,6 +991,7 @@ fi
if [ "$WITH_ALL" = true ]; then
WITH_JACK=true
WITH_NANOVDB=true
+ WITH_PULSEAUDIO=true
fi
if [ "$WITH_NANOVDB" = true ]; then
@@ -3877,6 +3884,10 @@ install_DEB() {
fi
fi
+ if [ "$WITH_PULSEAUDIO" = true ]; then
+ _packages="$_packages libpulse-dev"
+ fi
+
PRINT ""
install_packages_DEB $_packages
@@ -4499,6 +4510,10 @@ install_RPM() {
_packages="$_packages jack-audio-connection-kit-devel"
fi
+ if [ "$WITH_PULSEAUDIO" = true ]; then
+ _packages="$_packages pulseaudio-libs-devel"
+ fi
+
PRINT ""
install_packages_RPM $_packages
@@ -4542,6 +4557,10 @@ install_RPM() {
X264_USE=true
fi
+ if [ "$WITH_PULSEAUDIO" = true ]; then
+ _packages="$_packages libpulse-devel"
+ fi
+
if [ "$WITH_ALL" = true ]; then
PRINT ""
XVID_DEV="libxvidcore-devel"
@@ -5073,6 +5092,10 @@ install_ARCH() {
_packages="$_packages jack2"
fi
+ if [ "$WITH_PULSEAUDIO" = true ]; then
+ _packages="$_packages libpulse"
+ fi
+
PRINT ""
install_packages_ARCH $_packages
@@ -5888,6 +5911,14 @@ print_info() {
_buildargs="$_buildargs $_1 $_2"
fi
+ if [ "$WITH_PULSEAUDIO" = true ]; then
+ _1="-D WITH_PULSEAUDIO=ON"
+ _2="-D WITH_PULSEAUDIO_DYNLOAD=ON"
+ PRINT " $_1"
+ PRINT " $_2"
+ _buildargs="$_buildargs $_1 $_2"
+ fi
+
if [ "$ALEMBIC_SKIP" = false ]; then
_1="-D WITH_ALEMBIC=ON"
PRINT " $_1"
diff --git a/build_files/buildbot/config/blender_linux.cmake b/build_files/buildbot/config/blender_linux.cmake
index 29004654807..20b4821959c 100644
--- a/build_files/buildbot/config/blender_linux.cmake
+++ b/build_files/buildbot/config/blender_linux.cmake
@@ -16,6 +16,7 @@ set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE)
# Options which are specific to Linux release builds only
set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE)
+set(WITH_PULSEAUDIO_DYNLOAD ON CACHE BOOL "" FORCE)
set(WITH_SDL_DYNLOAD ON CACHE BOOL "" FORCE)
# ######## Release environment specific settings ########
diff --git a/build_files/cmake/Modules/FindPulse.cmake b/build_files/cmake/Modules/FindPulse.cmake
new file mode 100644
index 00000000000..d5c37e7df10
--- /dev/null
+++ b/build_files/cmake/Modules/FindPulse.cmake
@@ -0,0 +1,60 @@
+# - Find PulseAudio library
+# Find the native PulseAudio includes and library
+# This module defines
+# LIBPULSE_INCLUDE_DIRS, where to find pulse/pulseaudio.h, Set when
+# LIBPULSE_INCLUDE_DIR is found.
+# LIBPULSE_LIBRARIES, libraries to link against to use PulseAudio.
+# LIBPULSE_ROOT_DIR, The base directory to search for PulseAudio.
+# This can also be an environment variable.
+# PULSE_FOUND, If false, do not try to use PulseAudio.
+#
+# also defined, but not for general use are
+# LIBPULSE_LIBRARY, where to find the PulseAudio library.
+
+#=============================================================================
+# Copyright 2021 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD 3-Clause License,
+# see accompanying file BSD-3-Clause-license.txt for details.
+#=============================================================================
+
+# If LIBPULSE_ROOT_DIR was defined in the environment, use it.
+IF(NOT LIBPULSE_ROOT_DIR AND NOT $ENV{LIBPULSE_ROOT_DIR} STREQUAL "")
+ SET(LIBPULSE_ROOT_DIR $ENV{LIBPULSE_ROOT_DIR})
+ENDIF()
+
+SET(_pulse_SEARCH_DIRS
+ ${LIBPULSE_ROOT_DIR}
+)
+
+FIND_PATH(LIBPULSE_INCLUDE_DIR pulse/pulseaudio.h
+ HINTS
+ ${_pulse_SEARCH_DIRS}
+ PATH_SUFFIXES
+ include
+)
+
+FIND_LIBRARY(LIBPULSE_LIBRARY
+ NAMES
+ pulse
+ HINTS
+ ${_pulse_SEARCH_DIRS}
+ PATH_SUFFIXES
+ lib64 lib
+ )
+
+# handle the QUIETLY and REQUIRED arguments and set PULSE_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Pulse DEFAULT_MSG
+ LIBPULSE_LIBRARY LIBPULSE_INCLUDE_DIR)
+
+IF(PULSE_FOUND)
+ SET(LIBPULSE_LIBRARIES ${LIBPULSE_LIBRARY})
+ SET(LIBPULSE_INCLUDE_DIRS ${LIBPULSE_INCLUDE_DIR})
+ENDIF()
+
+MARK_AS_ADVANCED(
+ LIBPULSE_INCLUDE_DIR
+ LIBPULSE_LIBRARY
+)
diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake
index 75f78befb60..bfc390dc13b 100644
--- a/build_files/cmake/config/blender_full.cmake
+++ b/build_files/cmake/config/blender_full.cmake
@@ -65,6 +65,7 @@ endif()
if(UNIX AND NOT APPLE)
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
+ set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
endif()
diff --git a/build_files/cmake/config/blender_headless.cmake b/build_files/cmake/config/blender_headless.cmake
index 53163986b7a..761cb5b2d93 100644
--- a/build_files/cmake/config/blender_headless.cmake
+++ b/build_files/cmake/config/blender_headless.cmake
@@ -11,6 +11,7 @@ set(WITH_HEADLESS ON CACHE BOOL "" FORCE)
# so the python module doesn't hold the audio device and loads quickly.
set(WITH_AUDASPACE OFF CACHE BOOL "" FORCE)
set(WITH_JACK OFF CACHE BOOL "" FORCE)
+set(WITH_PULSEAUDIO OFF CACHE BOOL "" FORCE)
set(WITH_SDL OFF CACHE BOOL "" FORCE)
set(WITH_OPENAL OFF CACHE BOOL "" FORCE)
set(WITH_CODEC_FFMPEG OFF CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake
index 680734aba6e..76666b1215d 100644
--- a/build_files/cmake/config/blender_lite.cmake
+++ b/build_files/cmake/config/blender_lite.cmake
@@ -54,6 +54,7 @@ set(WITH_OPENSUBDIV OFF CACHE BOOL "" FORCE)
set(WITH_OPENVDB OFF CACHE BOOL "" FORCE)
set(WITH_POTRACE OFF CACHE BOOL "" FORCE)
set(WITH_PUGIXML OFF CACHE BOOL "" FORCE)
+set(WITH_PULSEAUDIO OFF CACHE BOOL "" FORCE)
set(WITH_NANOVDB OFF CACHE BOOL "" FORCE)
set(WITH_QUADRIFLOW OFF CACHE BOOL "" FORCE)
set(WITH_SDL OFF CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake
index 973d6cdb34e..67d34b5edb2 100644
--- a/build_files/cmake/config/blender_release.cmake
+++ b/build_files/cmake/config/blender_release.cmake
@@ -69,6 +69,7 @@ endif()
if(UNIX AND NOT APPLE)
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
+ set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
endif()
diff --git a/build_files/cmake/config/bpy_module.cmake b/build_files/cmake/config/bpy_module.cmake
index 7fc68f97f29..b0daed2a4c0 100644
--- a/build_files/cmake/config/bpy_module.cmake
+++ b/build_files/cmake/config/bpy_module.cmake
@@ -16,6 +16,7 @@ set(WITH_PYTHON_INSTALL OFF CACHE BOOL "" FORCE)
# so the python module doesn't hold the audio device and loads quickly.
set(WITH_AUDASPACE OFF CACHE BOOL "" FORCE)
set(WITH_JACK OFF CACHE BOOL "" FORCE)
+set(WITH_PULSEAUDIO OFF CACHE BOOL "" FORCE)
set(WITH_SDL OFF CACHE BOOL "" FORCE)
set(WITH_OPENAL OFF CACHE BOOL "" FORCE)
set(WITH_CODEC_FFMPEG OFF CACHE BOOL "" FORCE)
diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake
index cad1d86b75a..813ac013cdf 100644
--- a/build_files/cmake/macros.cmake
+++ b/build_files/cmake/macros.cmake
@@ -569,6 +569,9 @@ function(SETUP_LIBDIRS)
if(WITH_JACK AND NOT WITH_JACK_DYNLOAD)
link_directories(${JACK_LIBPATH})
endif()
+ if(WITH_PULSEAUDIO AND NOT WITH_PULSEAUDIO_DYNLOAD)
+ link_directories(${LIBPULSE_LIBPATH})
+ endif()
if(WITH_CODEC_SNDFILE)
link_directories(${LIBSNDFILE_LIBPATH})
endif()
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 47c788c7eb6..7791112c6ab 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -552,6 +552,14 @@ if(WITH_JACK)
endif()
endif()
+# Pulse is intended to use the system library.
+if(WITH_PULSEAUDIO)
+ find_package_wrapper(Pulse)
+ if(NOT PULSE_FOUND)
+ set(WITH_PULSEAUDIO OFF)
+ endif()
+endif()
+
# Audio IO
if(WITH_SYSTEM_AUDASPACE)
find_package_wrapper(Audaspace)