diff --git a/Telegram/cmake/lib_tgvoip.cmake b/Telegram/cmake/lib_tgvoip.cmake index 118eef1ba..9b8ec5442 100644 --- a/Telegram/cmake/lib_tgvoip.cmake +++ b/Telegram/cmake/lib_tgvoip.cmake @@ -13,209 +13,208 @@ if (DESKTOP_APP_USE_PACKAGED) if (TGVOIP_FOUND) target_link_libraries(lib_tgvoip INTERFACE PkgConfig::TGVOIP) + return() endif() endif() -if (NOT TGVOIP_FOUND) - add_library(lib_tgvoip_bundled STATIC) - init_target(lib_tgvoip_bundled) +add_library(lib_tgvoip_bundled STATIC) +init_target(lib_tgvoip_bundled) - option(LIBTGVOIP_DISABLE_ALSA "Disable libtgvoip's ALSA backend (Linux only)." OFF) - option(LIBTGVOIP_DISABLE_PULSEAUDIO "Disable libtgvoip's PulseAudio backend (Linux only)." OFF) +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) +set(tgvoip_loc ${third_party_loc}/libtgvoip) - nice_target_sources(lib_tgvoip_bundled ${tgvoip_loc} - PRIVATE - BlockingQueue.cpp - BlockingQueue.h - Buffers.cpp - Buffers.h - CongestionControl.cpp - CongestionControl.h - EchoCanceller.cpp - EchoCanceller.h - JitterBuffer.cpp - JitterBuffer.h - logging.cpp - logging.h - MediaStreamItf.cpp - MediaStreamItf.h - OpusDecoder.cpp - OpusDecoder.h - OpusEncoder.cpp - OpusEncoder.h - threading.h - VoIPController.cpp - VoIPGroupController.cpp - VoIPController.h - PrivateDefines.h - VoIPServerConfig.cpp - VoIPServerConfig.h - audio/AudioInput.cpp - audio/AudioInput.h - audio/AudioOutput.cpp - audio/AudioOutput.h - audio/Resampler.cpp - audio/Resampler.h - NetworkSocket.cpp - NetworkSocket.h - PacketReassembler.cpp - PacketReassembler.h - MessageThread.cpp - MessageThread.h - audio/AudioIO.cpp - audio/AudioIO.h - video/ScreamCongestionController.cpp - video/ScreamCongestionController.h - video/VideoSource.cpp - video/VideoSource.h - video/VideoRenderer.cpp - video/VideoRenderer.h - json11.cpp - json11.hpp +nice_target_sources(lib_tgvoip_bundled ${tgvoip_loc} +PRIVATE + BlockingQueue.cpp + BlockingQueue.h + Buffers.cpp + Buffers.h + CongestionControl.cpp + CongestionControl.h + EchoCanceller.cpp + EchoCanceller.h + JitterBuffer.cpp + JitterBuffer.h + logging.cpp + logging.h + MediaStreamItf.cpp + MediaStreamItf.h + OpusDecoder.cpp + OpusDecoder.h + OpusEncoder.cpp + OpusEncoder.h + threading.h + VoIPController.cpp + VoIPGroupController.cpp + VoIPController.h + PrivateDefines.h + VoIPServerConfig.cpp + VoIPServerConfig.h + audio/AudioInput.cpp + audio/AudioInput.h + audio/AudioOutput.cpp + audio/AudioOutput.h + audio/Resampler.cpp + audio/Resampler.h + NetworkSocket.cpp + NetworkSocket.h + PacketReassembler.cpp + PacketReassembler.h + MessageThread.cpp + MessageThread.h + audio/AudioIO.cpp + audio/AudioIO.h + video/ScreamCongestionController.cpp + video/ScreamCongestionController.h + video/VideoSource.cpp + video/VideoSource.h + video/VideoRenderer.cpp + video/VideoRenderer.h + json11.cpp + json11.hpp - # Windows - os/windows/NetworkSocketWinsock.cpp - os/windows/NetworkSocketWinsock.h - os/windows/AudioInputWave.cpp - os/windows/AudioInputWave.h - os/windows/AudioOutputWave.cpp - os/windows/AudioOutputWave.h - os/windows/AudioOutputWASAPI.cpp - os/windows/AudioOutputWASAPI.h - os/windows/AudioInputWASAPI.cpp - os/windows/AudioInputWASAPI.h - os/windows/MinGWSupport.h - os/windows/WindowsSpecific.cpp - os/windows/WindowsSpecific.h + # Windows + os/windows/NetworkSocketWinsock.cpp + os/windows/NetworkSocketWinsock.h + os/windows/AudioInputWave.cpp + os/windows/AudioInputWave.h + os/windows/AudioOutputWave.cpp + os/windows/AudioOutputWave.h + os/windows/AudioOutputWASAPI.cpp + os/windows/AudioOutputWASAPI.h + os/windows/AudioInputWASAPI.cpp + os/windows/AudioInputWASAPI.h + os/windows/MinGWSupport.h + os/windows/WindowsSpecific.cpp + os/windows/WindowsSpecific.h - # macOS - os/darwin/AudioInputAudioUnit.cpp - os/darwin/AudioInputAudioUnit.h - os/darwin/AudioOutputAudioUnit.cpp - os/darwin/AudioOutputAudioUnit.h - os/darwin/AudioInputAudioUnitOSX.cpp - os/darwin/AudioInputAudioUnitOSX.h - os/darwin/AudioOutputAudioUnitOSX.cpp - os/darwin/AudioOutputAudioUnitOSX.h - os/darwin/AudioUnitIO.cpp - os/darwin/AudioUnitIO.h - os/darwin/DarwinSpecific.mm - os/darwin/DarwinSpecific.h + # macOS + os/darwin/AudioInputAudioUnit.cpp + os/darwin/AudioInputAudioUnit.h + os/darwin/AudioOutputAudioUnit.cpp + os/darwin/AudioOutputAudioUnit.h + os/darwin/AudioInputAudioUnitOSX.cpp + os/darwin/AudioInputAudioUnitOSX.h + os/darwin/AudioOutputAudioUnitOSX.cpp + os/darwin/AudioOutputAudioUnitOSX.h + os/darwin/AudioUnitIO.cpp + os/darwin/AudioUnitIO.h + os/darwin/DarwinSpecific.mm + os/darwin/DarwinSpecific.h - # Linux - os/linux/AudioInputALSA.cpp - os/linux/AudioInputALSA.h - os/linux/AudioOutputALSA.cpp - os/linux/AudioOutputALSA.h - os/linux/AudioOutputPulse.cpp - os/linux/AudioOutputPulse.h - os/linux/AudioInputPulse.cpp - os/linux/AudioInputPulse.h - os/linux/AudioPulse.cpp - os/linux/AudioPulse.h + # Linux + os/linux/AudioInputALSA.cpp + os/linux/AudioInputALSA.h + os/linux/AudioOutputALSA.cpp + os/linux/AudioOutputALSA.h + os/linux/AudioOutputPulse.cpp + os/linux/AudioOutputPulse.h + os/linux/AudioInputPulse.cpp + os/linux/AudioInputPulse.h + os/linux/AudioPulse.cpp + os/linux/AudioPulse.h - # POSIX - os/posix/NetworkSocketPosix.cpp - os/posix/NetworkSocketPosix.h - ) + # POSIX + os/posix/NetworkSocketPosix.cpp + os/posix/NetworkSocketPosix.h +) - target_compile_definitions(lib_tgvoip_bundled - PRIVATE - TGVOIP_USE_DESKTOP_DSP - ) +target_compile_definitions(lib_tgvoip_bundled +PRIVATE + TGVOIP_USE_DESKTOP_DSP +) - if (WIN32) - if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - target_compile_options(lib_tgvoip_bundled - PRIVATE - /wd4005 - /wd4244 # conversion from 'int' to 'float', possible loss of data (several in webrtc) - /wd5055 # operator '>' deprecated between enumerations and floating-point types - ) - else() - target_compile_definitions(lib_tgvoip_bundled - PUBLIC - # Doesn't build with mingw for now - TGVOIP_NO_DSP - ) - endif() - elseif (APPLE) +if (WIN32) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(lib_tgvoip_bundled + PRIVATE + /wd4005 + /wd4244 # conversion from 'int' to 'float', possible loss of data (several in webrtc) + /wd5055 # operator '>' deprecated between enumerations and floating-point types + ) + else() target_compile_definitions(lib_tgvoip_bundled PUBLIC - TARGET_OS_OSX - TARGET_OSX - ) - if (build_macstore) - target_compile_definitions(lib_tgvoip_bundled - PUBLIC - TGVOIP_NO_OSX_PRIVATE_API - ) - endif() - else() - add_library(lib_tgvoip_bundled_options INTERFACE) - target_compile_options(lib_tgvoip_bundled_options - INTERFACE - -Wno-unused-variable - -Wno-unknown-pragmas - -Wno-error=sequence-point - -Wno-error=unused-result - ) - if (CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*") - target_compile_options(lib_tgvoip_bundled_options INTERFACE -msse2) - endif() - target_link_libraries(lib_tgvoip_bundled - PRIVATE - lib_tgvoip_bundled_options + # Doesn't build with mingw for now + TGVOIP_NO_DSP ) endif() - - target_include_directories(lib_tgvoip_bundled +elseif (APPLE) + target_compile_definitions(lib_tgvoip_bundled PUBLIC - ${tgvoip_loc} + TARGET_OS_OSX + TARGET_OSX ) + if (build_macstore) + target_compile_definitions(lib_tgvoip_bundled + PUBLIC + TGVOIP_NO_OSX_PRIVATE_API + ) + endif() +else() + add_library(lib_tgvoip_bundled_options INTERFACE) + target_compile_options(lib_tgvoip_bundled_options + INTERFACE + -Wno-unused-variable + -Wno-unknown-pragmas + -Wno-error=sequence-point + -Wno-error=unused-result + ) + if (CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*") + target_compile_options(lib_tgvoip_bundled_options INTERFACE -msse2) + endif() target_link_libraries(lib_tgvoip_bundled PRIVATE - desktop-app::external_webrtc - desktop-app::external_opus - ) - - if (LINUX) - if (NOT LIBTGVOIP_DISABLE_ALSA) - find_package(ALSA REQUIRED) - target_include_directories(lib_tgvoip_bundled SYSTEM 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_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 SYSTEM 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() - endif() - - target_link_libraries(lib_tgvoip - INTERFACE - lib_tgvoip_bundled + lib_tgvoip_bundled_options ) endif() + +target_include_directories(lib_tgvoip_bundled +PUBLIC + ${tgvoip_loc} +) +target_link_libraries(lib_tgvoip_bundled +PRIVATE + desktop-app::external_webrtc + desktop-app::external_opus +) + +if (LINUX) + if (NOT LIBTGVOIP_DISABLE_ALSA) + find_package(ALSA REQUIRED) + target_include_directories(lib_tgvoip_bundled SYSTEM 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_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 SYSTEM 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() +endif() + +target_link_libraries(lib_tgvoip +INTERFACE + lib_tgvoip_bundled +)