cmake: use FindALSA.cmake to find ALSA libraries
Co-authored-by: nfarid <54642193+nfarid@users.noreply.github.com>
This commit is contained in:
@@ -29,7 +29,7 @@ ENDMACRO()
|
||||
|
||||
# Message Output
|
||||
macro(MESSAGE_WARN _TEXT)
|
||||
message(STATUS "*** WARNING: ${_TEXT}")
|
||||
message(WARNING "${_TEXT}")
|
||||
endmacro()
|
||||
|
||||
macro(MESSAGE_ERROR _TEXT)
|
||||
@@ -78,7 +78,7 @@ macro(LISTTOSTR _LIST _OUTPUT)
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(LISTTOSTRREV _LIST _OUTPUT)
|
||||
function(LISTTOSTRREV _LIST _OUTPUT)
|
||||
if(${ARGC} EQUAL 3)
|
||||
# prefix for each element
|
||||
set(_LPREFIX ${ARGV2})
|
||||
@@ -87,10 +87,12 @@ macro(LISTTOSTRREV _LIST _OUTPUT)
|
||||
endif()
|
||||
# Do not use string(REPLACE ";" " ") here to avoid messing up list
|
||||
# entries
|
||||
set(res)
|
||||
foreach(_ITEM ${${_LIST}})
|
||||
set(${_OUTPUT} "${_LPREFIX}${_ITEM} ${${_OUTPUT}}")
|
||||
set(res "${res} ${_LPREFIX}${_ITEM}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
set($_OUTPUT} "${res}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.16.0 OR SDL3_SUBPROJECT)
|
||||
# - CMake versions <3.16 do not support the OBJC language
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
9
cmake/sdlfind.cmake
Normal file
9
cmake/sdlfind.cmake
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
macro(sdlFindALSA)
|
||||
find_package(ALSA MODULE)
|
||||
if(ALSA_FOUND AND (NOT TARGET ALSA::ALSA) )
|
||||
add_Library(ALSA::ALSA UNKNOWN IMPORTED)
|
||||
set_property(TARGET ALSA::ALSA PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${ALSA_INCLUDE_DIRS})
|
||||
set_property(TARGET ALSA::ALSA APPEND PROPERTY IMPORTED_LOCATION ${ALSA_LIBRARY})
|
||||
endif()
|
||||
endmacro()
|
||||
Reference in New Issue
Block a user