From 3f25e92afd8f3987b6a0ca18f43364dc5285ebd6 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sat, 20 Mar 2021 07:09:03 +0400 Subject: [PATCH] Add build options for libtgvoip backends libtgvoip has options to disbale some backends, but they never were exposed via tdesktop's cmake Since libtgvoip autoconf build system doesn't work anymore, it's worth to have these options in tdesktop's cmake. --- .github/workflows/linux.yml | 2 ++ Telegram/cmake/lib_tgvoip.cmake | 40 ++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ba7fd18a68..ea0b7fbb99 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -65,6 +65,8 @@ jobs: - "DESKTOP_APP_DISABLE_X11_INTEGRATION" - "DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION" - "DESKTOP_APP_DISABLE_GTK_INTEGRATION" + - "LIBTGVOIP_DISABLE_ALSA" + - "LIBTGVOIP_DISABLE_PULSEAUDIO" env: UPLOAD_ARTIFACT: "false" diff --git a/Telegram/cmake/lib_tgvoip.cmake b/Telegram/cmake/lib_tgvoip.cmake index 74d4f260dd..7616728031 100644 --- a/Telegram/cmake/lib_tgvoip.cmake +++ b/Telegram/cmake/lib_tgvoip.cmake @@ -27,6 +27,9 @@ if (NOT TGVOIP_FOUND) init_target(lib_tgvoip_bundled cxx_std_14) # Can't use std::optional::value on macOS. endif() + option(LIBTGVOIP_DISABLE_ALSA "Disable libtgvoip's ALSA backend (Linux only)." OFF) + option(LIBTGVOIP_DISABLE_PULSEAUDIO "Disable libtgvoip's PulseAudio backend (Linux only)." OFF) + set(tgvoip_loc ${third_party_loc}/libtgvoip) nice_target_sources(lib_tgvoip_bundled ${tgvoip_loc} @@ -180,15 +183,36 @@ if (NOT TGVOIP_FOUND) ) if (LINUX) - find_package(PkgConfig REQUIRED) - find_package(ALSA REQUIRED) - pkg_check_modules(PULSE REQUIRED libpulse) + if (NOT LIBTGVOIP_DISABLE_ALSA) + find_package(ALSA REQUIRED) + target_include_directories(lib_tgvoip_bundled PRIVATE ${ALSA_INCLUDE_DIRS}) + else() + remove_target_sources(lib_tgvoip_bundled ${tgvoip_loc} + os/linux/AudioInputALSA.cpp + os/linux/AudioInputALSA.h + os/linux/AudioOutputALSA.cpp + os/linux/AudioOutputALSA.h + ) - target_include_directories(lib_tgvoip_bundled - PRIVATE - ${ALSA_INCLUDE_DIRS} - ${PULSE_INCLUDE_DIRS} - ) + target_compile_definitions(lib_tgvoip_bundled PRIVATE WITHOUT_ALSA) + endif() + + if (NOT LIBTGVOIP_DISABLE_PULSEAUDIO) + find_package(PkgConfig REQUIRED) + pkg_check_modules(PULSE REQUIRED libpulse) + target_include_directories(lib_tgvoip_bundled PRIVATE ${PULSE_INCLUDE_DIRS}) + else() + remove_target_sources(lib_tgvoip_bundled ${tgvoip_loc} + os/linux/AudioOutputPulse.cpp + os/linux/AudioOutputPulse.h + os/linux/AudioInputPulse.cpp + os/linux/AudioInputPulse.h + os/linux/AudioPulse.cpp + os/linux/AudioPulse.h + ) + + target_compile_definitions(lib_tgvoip_bundled PRIVATE WITHOUT_PULSE) + endif() target_link_libraries(lib_tgvoip_bundled PRIVATE