load("@build_bazel_rules_apple//apple:ios.bzl", "ios_unit_test") config_setting( name = "debug_build", values = { "compilation_mode": "dbg", }, ) optimization_flags = select({ ":debug_build": [ ], "//conditions:default": ["-DNDEBUG"], }) enable_x264 = False sources = glob([ "Sources/**/*.m", "Sources/**/*.mm", "Sources/**/*.h", "tgcalls/tgcalls/**/*.h", "tgcalls/tgcalls/**/*.hpp", "tgcalls/tgcalls/**/*.cpp", "tgcalls/tgcalls/**/*.mm", "tgcalls/tgcalls/**/*.m", ], exclude = [ "tgcalls/tgcalls/legacy/**", "tgcalls/tgcalls/platform/tdesktop/**", "tgcalls/tgcalls/platform/android/**", "tgcalls/tgcalls/platform/windows/**", "tgcalls/tgcalls/platform/uwp/**", "tgcalls/tgcalls/platform/darwin/SQueue*", "tgcalls/tgcalls/platform/darwin/macOS/**", "tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*", "tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*", "tgcalls/tgcalls/platform/darwin/VideoSampleBufferViewMac.*", "tgcalls/tgcalls/platform/darwin/GLVideoView.*", "tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*", "tgcalls/tgcalls/platform/darwin/ScreenCapturer.*", "tgcalls/tgcalls/platform/darwin/DesktopSharingCapturer.*", "tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceViewMac.*", "tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceView.*", "tgcalls/tgcalls/platform/darwin/TGCMIODevice.*", "tgcalls/tgcalls/platform/darwin/TGCMIOCapturer.*", "tgcalls/tgcalls/platform/darwin/VideoCMIOCapture.*", "tgcalls/tgcalls/desktop_capturer/**", ]) sources = glob([ "Sources/**/*.m", "Sources/**/*.mm", "Sources/**/*.h", "tgcalls/tgcalls/**/*.h", "tgcalls/tgcalls/**/*.hpp", "tgcalls/tgcalls/platform/darwin/**/*.cpp", "tgcalls/tgcalls/platform/darwin/**/*.m", "tgcalls/tgcalls/platform/darwin/**/*.mm", "tgcalls/tgcalls/platform/darwin/**/*.cc", "tgcalls/tgcalls/platform/darwin/**/*.c", "tgcalls/tgcalls/third-party/**/*.cpp", "tgcalls/tgcalls/utils/**/*.cpp", ], exclude = [ "tgcalls/tgcalls/legacy/**", "tgcalls/tgcalls/platform/tdesktop/**", "tgcalls/tgcalls/platform/android/**", "tgcalls/tgcalls/platform/windows/**", "tgcalls/tgcalls/platform/uwp/**", "tgcalls/tgcalls/platform/darwin/SQueue*", "tgcalls/tgcalls/platform/darwin/macOS/**", "tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*", "tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*", "tgcalls/tgcalls/platform/darwin/VideoSampleBufferViewMac.*", "tgcalls/tgcalls/platform/darwin/GLVideoView.*", "tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*", "tgcalls/tgcalls/platform/darwin/ScreenCapturer.*", "tgcalls/tgcalls/platform/darwin/DesktopSharingCapturer.*", "tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceViewMac.*", "tgcalls/tgcalls/platform/darwin/DesktopCaptureSourceView.*", "tgcalls/tgcalls/platform/darwin/TGCMIODevice.*", "tgcalls/tgcalls/platform/darwin/TGCMIOCapturer.*", "tgcalls/tgcalls/platform/darwin/VideoCMIOCapture.*", "tgcalls/tgcalls/desktop_capturer/**", ]) + [ "tgcalls/tgcalls/Manager.cpp", "tgcalls/tgcalls/MediaManager.cpp", "tgcalls/tgcalls/AudioDeviceHelper.cpp", "tgcalls/tgcalls/ChannelManager.cpp", "tgcalls/tgcalls/CodecSelectHelper.cpp", "tgcalls/tgcalls/CryptoHelper.cpp", "tgcalls/tgcalls/EncryptedConnection.cpp", "tgcalls/tgcalls/FakeAudioDeviceModule.cpp", "tgcalls/tgcalls/FakeVideoTrackSource.cpp", "tgcalls/tgcalls/FieldTrialsConfig.cpp", "tgcalls/tgcalls/Instance.cpp", "tgcalls/tgcalls/InstanceImpl.cpp", "tgcalls/tgcalls/LogSinkImpl.cpp", "tgcalls/tgcalls/Message.cpp", "tgcalls/tgcalls/NetworkManager.cpp", "tgcalls/tgcalls/SctpDataChannelProviderInterfaceImpl.cpp", "tgcalls/tgcalls/StaticThreads.cpp", "tgcalls/tgcalls/ThreadLocalObject.cpp", "tgcalls/tgcalls/TurnCustomizerImpl.cpp", "tgcalls/tgcalls/VideoCaptureInterface.cpp", "tgcalls/tgcalls/VideoCaptureInterfaceImpl.cpp", "tgcalls/tgcalls/group/AudioStreamingPart.cpp", "tgcalls/tgcalls/group/AudioStreamingPartInternal.cpp", "tgcalls/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp", "tgcalls/tgcalls/group/AVIOContextImpl.cpp", "tgcalls/tgcalls/group/GroupInstanceCustomImpl.cpp", "tgcalls/tgcalls/group/GroupJoinPayloadInternal.cpp", "tgcalls/tgcalls/group/GroupNetworkManager.cpp", "tgcalls/tgcalls/group/StreamingMediaContext.cpp", "tgcalls/tgcalls/group/VideoStreamingPart.cpp", "tgcalls/tgcalls/v2/ContentNegotiation.cpp", "tgcalls/tgcalls/v2/DirectNetworkingImpl.cpp", "tgcalls/tgcalls/v2/ExternalSignalingConnection.cpp", "tgcalls/tgcalls/v2/InstanceV2Impl.cpp", "tgcalls/tgcalls/v2/InstanceV2ReferenceImpl.cpp", "tgcalls/tgcalls/v2/NativeNetworkingImpl.cpp", "tgcalls/tgcalls/v2/RawTcpSocket.cpp", "tgcalls/tgcalls/v2/ReflectorPort.cpp", "tgcalls/tgcalls/v2/ReflectorRelayPortFactory.cpp", "tgcalls/tgcalls/v2/Signaling.cpp", "tgcalls/tgcalls/v2/SignalingConnection.cpp", "tgcalls/tgcalls/v2/SignalingEncryption.cpp", "tgcalls/tgcalls/v2/SignalingSctpConnection.cpp", "tgcalls/tgcalls/v2/SignalingKcpConnection.cpp", "tgcalls/tgcalls/v2/ikcp.cpp", ] objc_library( name = "TgVoipWebrtc", enable_modules = True, module_name = "TgVoipWebrtc", srcs = sources, hdrs = glob([ "PublicHeaders/**/*.h", ]), copts = [ "-I{}/tgcalls/tgcalls".format(package_name()), "-Ithird-party/webrtc/webrtc", "-Ithird-party/webrtc/dependencies", "-Ithird-party/webrtc/dependencies/third_party/abseil-cpp", "-Ithird-party/webrtc/webrtc/sdk/objc", "-Ithird-party/webrtc/webrtc/sdk/objc/base", "-Ithird-party/webrtc/webrtc/sdk/objc/components/renderer/metal", "-Ithird-party/webrtc/webrtc/sdk/objc/components/renderer/opengl", "-Ithird-party/webrtc/webrtc/sdk/objc/components/video_codec", "-Ithird-party/libyuv/third_party/libyuv/include", "-Ithird-party/libyuv", "-Ithird-party/webrtc/webrtc/sdk/objc/api/video_codec", "-DWEBRTC_IOS", "-DWEBRTC_MAC", "-DWEBRTC_POSIX", "-DRTC_ENABLE_VP9", "-DTGVOIP_NAMESPACE=tgvoip_webrtc", "-std=c++17", ] + optimization_flags + (["-DTGCALLS_ENABLE_X264"] if enable_x264 else []), includes = [ "PublicHeaders", ], deps = [ "//third-party/webrtc:webrtc", "//submodules/MtProtoKit:MtProtoKit", "//third-party/boringssl:crypto", "//third-party/boringssl:ssl", "//third-party/ogg:ogg", "//third-party/opusfile:opusfile", "//submodules/ffmpeg:ffmpeg", "//third-party/rnnoise:rnnoise", "//third-party/libyuv:libyuv", "//third-party/td:TdBinding", ] + (["//third-party/libx264:libx264"] if enable_x264 else []), sdk_frameworks = [ "Foundation", "UIKit", "AudioToolbox", "VideoToolbox", "CoreTelephony", "CoreMedia", "GLKit", "AVFoundation", ], sdk_dylibs = [ "libz", ], visibility = [ "//visibility:public", ], ) objc_library( name = "TgCallsTestsLib", copts = [ "-I{}/tgcalls/tgcalls".format(package_name()), "-Ithird-party/webrtc/webrtc", "-Ithird-party/webrtc/dependencies", "-Ithird-party/webrtc/dependencies/third_party/abseil-cpp", "-Ithird-party/webrtc/webrtc/sdk/objc", "-Ithird-party/webrtc/webrtc/sdk/objc/base", "-Ithird-party/webrtc/webrtc/sdk/objc/components/renderer/metal", "-Ithird-party/webrtc/webrtc/sdk/objc/components/renderer/opengl", "-Ithird-party/webrtc/webrtc/sdk/objc/components/video_codec", "-Ithird-party/libyuv/third_party/libyuv/include", "-Ithird-party/libyuv", "-Ithird-party/webrtc/webrtc/sdk/objc/api/video_codec", "-DWEBRTC_IOS", "-DWEBRTC_MAC", "-DWEBRTC_POSIX", "-DRTC_ENABLE_VP9", "-DRTC_ENABLE_H265", "-DTGVOIP_NAMESPACE=tgvoip_webrtc", "-std=c++17", ], srcs = glob([ "tests/*.m", "tests/*.mm", ]), deps = [ ":TgVoipWebrtc" ], ) ios_unit_test( name = "TgCallsTests", minimum_os_version = "9.0", deps = [ ":TgCallsTestsLib", ], visibility = [ "//visibility:public", ], )