cmake: use FindALSA.cmake to find ALSA libraries
Co-authored-by: nfarid <54642193+nfarid@users.noreply.github.com>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
include(CMakeParseArguments)
|
||||
include(${SDL3_SOURCE_DIR}/cmake/sdlfind.cmake)
|
||||
|
||||
macro(FindLibraryAndSONAME _LIB)
|
||||
cmake_parse_arguments(FLAS "" "" "LIBDIRS" ${ARGN})
|
||||
|
||||
@@ -6,6 +8,13 @@ macro(FindLibraryAndSONAME _LIB)
|
||||
string(REGEX REPLACE "\\-" "_" _LNAME "${_UPPERLNAME}")
|
||||
|
||||
find_library(${_LNAME}_LIB ${_LIB} PATHS ${FLAS_LIBDIRS})
|
||||
|
||||
if(${_LNAME}_LIB MATCHES ".*\\${CMAKE_SHARED_LIBRARY_SUFFIX}.*" AND NOT ${_LNAME}_LIB MATCHES ".*\\${CMAKE_STATIC_LIBRARY_SUFFIX}.*")
|
||||
set(${_LNAME}_SHARED TRUE)
|
||||
else()
|
||||
set(${_LNAME}_SHARED FALSE)
|
||||
endif()
|
||||
|
||||
if(${_LNAME}_LIB)
|
||||
# reduce the library name for shared linking
|
||||
|
||||
@@ -83,27 +92,36 @@ endmacro()
|
||||
# - HAVE_SDL_LOADSO opt
|
||||
macro(CheckALSA)
|
||||
if(SDL_ALSA)
|
||||
CHECK_INCLUDE_FILE(alsa/asoundlib.h HAVE_ASOUNDLIB_H)
|
||||
if(HAVE_ASOUNDLIB_H)
|
||||
CHECK_LIBRARY_EXISTS(asound snd_pcm_recover "" HAVE_LIBASOUND)
|
||||
endif()
|
||||
if(HAVE_LIBASOUND)
|
||||
set(HAVE_ALSA TRUE)
|
||||
file(GLOB ALSA_SOURCES ${SDL3_SOURCE_DIR}/src/audio/alsa/*.c)
|
||||
sdlFindALSA()
|
||||
if(ALSA_FOUND)
|
||||
file(GLOB ALSA_SOURCES "${SDL3_SOURCE_DIR}/src/audio/alsa/*.c")
|
||||
list(APPEND SOURCE_FILES ${ALSA_SOURCES})
|
||||
set(SDL_AUDIO_DRIVER_ALSA 1)
|
||||
if(SDL_ALSA_SHARED AND NOT HAVE_SDL_LOADSO)
|
||||
message_warn("You must have SDL_LoadObject() support for dynamic ALSA loading")
|
||||
set(HAVE_ALSA TRUE)
|
||||
set(HAVE_ALSA_SHARED FALSE)
|
||||
if(SDL_ALSA_SHARED)
|
||||
if(HAVE_SDL_LOADSO)
|
||||
FindLibraryAndSONAME("asound")
|
||||
if(ASOUND_LIB AND ASOUND_SHARED)
|
||||
target_include_directories(sdl-build-options INTERFACE $<TARGET_PROPERTY:ALSA::ALSA,INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
set(SDL_AUDIO_DRIVER_ALSA_DYNAMIC "\"${ASOUND_LIB_SONAME}\"")
|
||||
set(HAVE_ALSA_SHARED TRUE)
|
||||
else()
|
||||
message(WARNING "Unable to find asound shared object")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "You must have SDL_LoadObject() support for dynamic ALSA loading")
|
||||
endif()
|
||||
endif()
|
||||
FindLibraryAndSONAME("asound")
|
||||
if(SDL_ALSA_SHARED AND ASOUND_LIB AND HAVE_SDL_LOADSO)
|
||||
set(SDL_AUDIO_DRIVER_ALSA_DYNAMIC "\"${ASOUND_LIB_SONAME}\"")
|
||||
set(HAVE_ALSA_SHARED TRUE)
|
||||
else()
|
||||
list(APPEND EXTRA_LIBS asound)
|
||||
if(NOT HAVE_ALSA_SHARED)
|
||||
list(APPEND CMAKE_DEPENDS ALSA::ALSA)
|
||||
list(APPEND PKGCONFIG_DEPENDS alsa)
|
||||
endif()
|
||||
set(HAVE_SDL_AUDIO TRUE)
|
||||
endif()
|
||||
else()
|
||||
set(HAVE_ALSA FALSE)
|
||||
message(WARNING "Unable to find the alsa development library")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user