Merge pull request #4825 from Orphis/cmake_alsa
CMake: Updates to AudioCommon & ALSA discovery
This commit is contained in:
commit
af33c9714e
|
@ -434,19 +434,6 @@ if (OPENGL_GL)
|
|||
include_directories(${OPENGL_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
if(ENABLE_ALSA)
|
||||
find_package(ALSA)
|
||||
if(ALSA_FOUND)
|
||||
add_definitions(-DHAVE_ALSA=1)
|
||||
message(STATUS "ALSA found, enabling ALSA sound backend")
|
||||
else()
|
||||
add_definitions(-DHAVE_ALSA=0)
|
||||
message(STATUS "ALSA NOT found, disabling ALSA sound backend")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "ALSA explicitly disabled, disabling ALSA sound backend")
|
||||
endif()
|
||||
|
||||
if(ENABLE_AO)
|
||||
check_lib(AO ao ao QUIET)
|
||||
if(AO_FOUND)
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#.rst:
|
||||
# FindALSA
|
||||
# --------
|
||||
#
|
||||
# Find alsa
|
||||
#
|
||||
# Find the alsa libraries (asound)
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# ALSA_FOUND - True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
|
||||
# ALSA_LIBRARIES - Set when ALSA_LIBRARY is found
|
||||
# ALSA_INCLUDE_DIRS - Set when ALSA_INCLUDE_DIR is found
|
||||
#
|
||||
#
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# ALSA_INCLUDE_DIR - where to find asoundlib.h, etc.
|
||||
# ALSA_LIBRARY - the asound library
|
||||
# ALSA_VERSION_STRING - the version of alsa found (since CMake 2.8.8)
|
||||
|
||||
find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
|
||||
DOC "The ALSA (asound) include directory"
|
||||
)
|
||||
|
||||
find_library(ALSA_LIBRARY NAMES asound
|
||||
DOC "The ALSA (asound) library"
|
||||
)
|
||||
|
||||
if(ALSA_INCLUDE_DIR AND EXISTS "${ALSA_INCLUDE_DIR}/alsa/version.h")
|
||||
file(STRINGS "${ALSA_INCLUDE_DIR}/alsa/version.h" alsa_version_str REGEX "^#define[\t ]+SND_LIB_VERSION_STR[\t ]+\".*\"")
|
||||
|
||||
string(REGEX REPLACE "^.*SND_LIB_VERSION_STR[\t ]+\"([^\"]*)\".*$" "\\1" ALSA_VERSION_STRING "${alsa_version_str}")
|
||||
unset(alsa_version_str)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA
|
||||
REQUIRED_VARS ALSA_LIBRARY ALSA_INCLUDE_DIR
|
||||
VERSION_VAR ALSA_VERSION_STRING)
|
||||
|
||||
if(ALSA_FOUND)
|
||||
set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
|
||||
set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
|
||||
add_library(ALSA::ALSA UNKNOWN IMPORTED)
|
||||
set_target_properties(ALSA::ALSA PROPERTIES
|
||||
IMPORTED_LOCATION ${ALSA_LIBRARY}
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${ALSA_INCLUDE_DIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
|
|
@ -33,7 +33,7 @@ void InitSoundStream()
|
|||
std::string backend = SConfig::GetInstance().sBackend;
|
||||
if (backend == BACKEND_OPENAL && OpenALStream::isValid())
|
||||
g_sound_stream = std::make_unique<OpenALStream>();
|
||||
else if (backend == BACKEND_NULLSOUND && NullSound::isValid())
|
||||
else if (backend == BACKEND_NULLSOUND)
|
||||
g_sound_stream = std::make_unique<NullSound>();
|
||||
else if (backend == BACKEND_XAUDIO2)
|
||||
{
|
||||
|
@ -53,7 +53,7 @@ void InitSoundStream()
|
|||
else if (backend == BACKEND_OPENSLES && OpenSLESStream::isValid())
|
||||
g_sound_stream = std::make_unique<OpenSLESStream>();
|
||||
|
||||
if (!g_sound_stream && NullSound::isValid())
|
||||
if (!g_sound_stream)
|
||||
{
|
||||
WARN_LOG(AUDIO, "Could not initialize backend %s, using %s instead.", backend.c_str(),
|
||||
BACKEND_NULLSOUND);
|
||||
|
@ -92,12 +92,27 @@ void ShutdownSoundStream()
|
|||
INFO_LOG(AUDIO, "Done shutting down sound stream");
|
||||
}
|
||||
|
||||
std::string GetDefaultSoundBackend()
|
||||
{
|
||||
std::string backend = BACKEND_NULLSOUND;
|
||||
#if defined __linux__
|
||||
if (AlsaSound::isValid())
|
||||
backend = BACKEND_ALSA;
|
||||
#elif defined __APPLE__
|
||||
backend = BACKEND_COREAUDIO;
|
||||
#elif defined _WIN32
|
||||
backend = BACKEND_XAUDIO2;
|
||||
#elif defined ANDROID
|
||||
backend = BACKEND_OPENSLES;
|
||||
#endif
|
||||
return backend;
|
||||
}
|
||||
|
||||
std::vector<std::string> GetSoundBackends()
|
||||
{
|
||||
std::vector<std::string> backends;
|
||||
|
||||
if (NullSound::isValid())
|
||||
backends.push_back(BACKEND_NULLSOUND);
|
||||
backends.push_back(BACKEND_NULLSOUND);
|
||||
if (XAudio2_7::isValid() || XAudio2::isValid())
|
||||
backends.push_back(BACKEND_XAUDIO2);
|
||||
if (AOSound::isValid())
|
||||
|
|
|
@ -18,6 +18,7 @@ namespace AudioCommon
|
|||
{
|
||||
void InitSoundStream();
|
||||
void ShutdownSoundStream();
|
||||
std::string GetDefaultSoundBackend();
|
||||
std::vector<std::string> GetSoundBackends();
|
||||
bool SupportsDPL2Decoder(const std::string& backend);
|
||||
bool SupportsLatencyControl(const std::string& backend);
|
||||
|
|
|
@ -1,51 +1,61 @@
|
|||
set(SRCS AudioCommon.cpp
|
||||
DPL2Decoder.cpp
|
||||
Mixer.cpp
|
||||
WaveFile.cpp
|
||||
NullSoundStream.cpp)
|
||||
set(SRCS
|
||||
AudioCommon.cpp
|
||||
DPL2Decoder.cpp
|
||||
Mixer.cpp
|
||||
WaveFile.cpp
|
||||
NullSoundStream.cpp
|
||||
)
|
||||
|
||||
set(LIBS "")
|
||||
add_dolphin_library(audiocommon "${SRCS}" "")
|
||||
|
||||
find_package(OpenSLES)
|
||||
if(OPENSLES_FOUND)
|
||||
message(STATUS "OpenSLES found, enabling OpenSLES sound backend")
|
||||
set(SRCS ${SRCS} OpenSLESStream.cpp)
|
||||
set(LIBS ${LIBS} OpenSLES::OpenSLES)
|
||||
message(STATUS "OpenSLES found, enabling OpenSLES sound backend")
|
||||
target_sources(audiocommon PRIVATE OpenSLESStream.cpp)
|
||||
target_link_libraries(audiocommon PRIVATE OpenSLES::OpenSLES)
|
||||
endif()
|
||||
|
||||
if(ALSA_FOUND)
|
||||
set(SRCS ${SRCS} AlsaSoundStream.cpp)
|
||||
set(LIBS ${LIBS} ${ALSA_LIBRARIES})
|
||||
if(ENABLE_ALSA)
|
||||
find_package(ALSA)
|
||||
if(ALSA_FOUND)
|
||||
message(STATUS "ALSA found, enabling ALSA sound backend")
|
||||
target_sources(audiocommon PRIVATE AlsaSoundStream.cpp)
|
||||
target_link_libraries(audiocommon PRIVATE ALSA::ALSA)
|
||||
target_compile_definitions(audiocommon PRIVATE HAVE_ALSA=1)
|
||||
else()
|
||||
message(STATUS "ALSA NOT found, disabling ALSA sound backend")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "ALSA explicitly disabled, disabling ALSA sound backend")
|
||||
endif()
|
||||
|
||||
if(AO_FOUND)
|
||||
set(SRCS ${SRCS} AOSoundStream.cpp)
|
||||
set(LIBS ${LIBS} ${AO_LIBRARIES})
|
||||
target_sources(audiocommon PRIVATE AOSoundStream.cpp)
|
||||
target_link_libraries(audiocommon PRIVATE ${AO_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(OPENAL_FOUND)
|
||||
set(SRCS ${SRCS} OpenALStream.cpp aldlist.cpp)
|
||||
set(LIBS ${LIBS} ${OPENAL_LIBRARY} SoundTouch )
|
||||
target_sources(audiocommon PRIVATE OpenALStream.cpp aldlist.cpp)
|
||||
target_link_libraries(audiocommon PRIVATE ${OPENAL_LIBRARY} SoundTouch)
|
||||
endif()
|
||||
|
||||
if(PULSEAUDIO_FOUND)
|
||||
set(SRCS ${SRCS} PulseAudioStream.cpp)
|
||||
set(LIBS ${LIBS} ${PULSEAUDIO_LIBRARIES})
|
||||
target_sources(audiocommon PRIVATE PulseAudioStream.cpp)
|
||||
target_link_libraries(audiocommon PRIVATE ${PULSEAUDIO_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(SRCS ${SRCS} XAudio2Stream.cpp)
|
||||
target_sources(audiocommon PRIVATE XAudio2Stream.cpp)
|
||||
|
||||
add_dolphin_library(audiocommon_xaudio27 "XAudio2_7Stream.cpp" "${LIBS}")
|
||||
target_include_directories(audiocommon_xaudio27 PRIVATE
|
||||
${PROJECT_SOURCE_DIR}/Externals
|
||||
${PROJECT_SOURCE_DIR}/Externals/XAudio2_7
|
||||
)
|
||||
list(APPEND LIBS audiocommon_xaudio27)
|
||||
add_dolphin_library(audiocommon_xaudio27 "XAudio2_7Stream.cpp" "${LIBS}")
|
||||
target_include_directories(audiocommon_xaudio27 PRIVATE
|
||||
${PROJECT_SOURCE_DIR}/Externals
|
||||
${PROJECT_SOURCE_DIR}/Externals/XAudio2_7
|
||||
)
|
||||
target_link_libraries(audiocommon PRIVATE audiocommon_xaudio27)
|
||||
|
||||
elseif(APPLE)
|
||||
set(SRCS ${SRCS} CoreAudioSoundStream.cpp)
|
||||
target_sources(audiocommon PRIVATE CoreAudioSoundStream.cpp)
|
||||
endif()
|
||||
|
||||
|
||||
add_dolphin_library(audiocommon "${SRCS}" "${LIBS}")
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include <climits>
|
||||
#include <memory>
|
||||
|
||||
#include "AudioCommon/AudioCommon.h"
|
||||
|
||||
#include "Common/CDUtils.h"
|
||||
#include "Common/CommonPaths.h"
|
||||
#include "Common/CommonTypes.h"
|
||||
|
@ -613,17 +615,7 @@ void SConfig::LoadDSPSettings(IniFile& ini)
|
|||
dsp->Get("DumpAudio", &m_DumpAudio, false);
|
||||
dsp->Get("DumpAudioSilent", &m_DumpAudioSilent, false);
|
||||
dsp->Get("DumpUCode", &m_DumpUCode, false);
|
||||
#if defined __linux__ && HAVE_ALSA
|
||||
dsp->Get("Backend", &sBackend, BACKEND_ALSA);
|
||||
#elif defined __APPLE__
|
||||
dsp->Get("Backend", &sBackend, BACKEND_COREAUDIO);
|
||||
#elif defined _WIN32
|
||||
dsp->Get("Backend", &sBackend, BACKEND_XAUDIO2);
|
||||
#elif defined ANDROID
|
||||
dsp->Get("Backend", &sBackend, BACKEND_OPENSLES);
|
||||
#else
|
||||
dsp->Get("Backend", &sBackend, BACKEND_NULLSOUND);
|
||||
#endif
|
||||
dsp->Get("Backend", &sBackend, AudioCommon::GetDefaultSoundBackend());
|
||||
dsp->Get("Volume", &m_Volume, 100);
|
||||
dsp->Get("CaptureLog", &m_DSPCaptureLog, false);
|
||||
|
||||
|
|
Loading…
Reference in New Issue