diff --git a/CMakeLists.txt b/CMakeLists.txt index 150784bab65fac858128f5fd45c39243de8b2feb..33825057e6a7b8e35c526d42bf8aa68209f88da9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -144,7 +144,14 @@ if(NOT MSVC) include(FindPkgConfig) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") pkg_search_module (udev REQUIRED IMPORTED_TARGET libudev) - pkg_search_module (pulseaudio REQUIRED IMPORTED_TARGET libpulse) + pkg_search_module (pulseaudio IMPORTED_TARGET libpulse) + pkg_search_module (alsa IMPORTED_TARGET alsa) + pkg_search_module (jack IMPORTED_TARGET libjack) + + # Make sure at least one audio backend is available + if(NOT pulseaudio_FOUND AND NOT alsa_FOUND AND NOT jack_FOUND) + message(FATAL_ERROR "No audio library found. Please install PulseAudio, ALSA or JACK.") + endif() endif() endif() @@ -223,10 +230,22 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") ${CMAKE_CURRENT_SOURCE_DIR}/src/media/video/v4l2/video_device_monitor_impl.cpp ) endif() - list (APPEND ALL_FILES ${ALL_FILES} - ${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/pulseaudio/audiostream.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/pulseaudio/pulselayer.cpp - ) + if (pulseaudio_FOUND) + list (APPEND ALL_FILES ${ALL_FILES} + ${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/pulseaudio/audiostream.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/pulseaudio/pulselayer.cpp + ) + endif() + if (alsa_FOUND) + list (APPEND ALL_FILES ${ALL_FILES} + ${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/alsa/alsalayer.cpp + ) + endif() + if (jack_FOUND) + list (APPEND ALL_FILES ${ALL_FILES} + ${CMAKE_CURRENT_SOURCE_DIR}/src/media/audio/jack/jacklayer.cpp + ) + endif() elseif (APPLE) if (IOS) list (APPEND ALL_FILES ${ALL_FILES} @@ -282,9 +301,10 @@ if (JAMI_NATPMP) endif() if (ANDROID) target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OPENSL) -endif() -if (APPLE) +elseif (APPLE) target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_COREAUDIO) +elseif (MSVC) + target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PORTAUDIO) endif() target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/.;" @@ -550,10 +570,19 @@ else() if (ANDROID) target_link_libraries(${PROJECT_NAME} PRIVATE OpenSLES log) elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(${PROJECT_NAME} PRIVATE - PkgConfig::udev - PkgConfig::pulseaudio - ) + target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::udev) + if (pulseaudio_FOUND) + target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PULSE) + target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::pulseaudio) + endif() + if (alsa_FOUND) + target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_ALSA) + target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::alsa) + endif() + if (jack_FOUND) + target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_JACK) + target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::jack) + endif() elseif (APPLE) target_link_libraries(${PROJECT_NAME} PRIVATE resolv) endif()