# Copyright 2016 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../webrtc.gni")
if (is_ios) {
  import("//build/config/ios/rules.gni")
  import("//build/config/ios/ios_sdk.gni")
}
if (is_mac) {
  import("//build/config/mac/rules.gni")
}

group("sdk") {
  public_deps = []
  if (!build_with_chromium) {
    if (is_android) {
      public_deps += [ "android" ]
    }
    if (is_ios) {
      public_deps += [ ":framework_objc" ]
    }
  }
}

if (is_ios || is_mac) {
  config("common_config_objc") {
    include_dirs = [
      "objc",

      # This is needed so that framework headers can include base headers
      # without pathname (so it works from within the framework module).
      "objc/base",

      # This is here for backward compatiblity reasons.
      "objc/Framework/Headers",  # TODO(bugs.webrtc.org/9627): Remove this.
    ]
    cflags = [
      "-Wstrict-overflow",
      "-Wmissing-field-initializers",
    ]

    if (use_clang_coverage) {
      configs = [ "//build/config/coverage:default_coverage" ]
    }
  }

  config("used_from_extension") {
    if (is_ios && rtc_apprtcmobile_broadcast_extension) {
      cflags = [ "-fapplication-extension" ]
    }
  }

  # TODO(bugs.webrtc.org/9627): Remove this when unused. Targets should depend on base_objc
  # or helpers_objc directly instead.
  rtc_static_library("common_objc") {
    visibility = [ "*" ]

    sources = [
      "objc/helpers/noop.mm",
    ]

    public_configs = [ ":common_config_objc" ]

    deps = [
      ":base_objc",
      ":helpers_objc",
    ]
  }

  rtc_static_library("base_objc") {
    visibility = [ "*" ]
    sources = [
      "objc/base/RTCCodecSpecificInfo.h",
      "objc/base/RTCEncodedImage.h",
      "objc/base/RTCEncodedImage.m",
      "objc/base/RTCI420Buffer.h",
      "objc/base/RTCLogging.h",
      "objc/base/RTCLogging.mm",
      "objc/base/RTCMacros.h",
      "objc/base/RTCMutableI420Buffer.h",
      "objc/base/RTCMutableYUVPlanarBuffer.h",
      "objc/base/RTCRtpFragmentationHeader.h",
      "objc/base/RTCRtpFragmentationHeader.m",
      "objc/base/RTCVideoCapturer.h",
      "objc/base/RTCVideoCapturer.m",
      "objc/base/RTCVideoCodecInfo.h",
      "objc/base/RTCVideoCodecInfo.m",
      "objc/base/RTCVideoDecoder.h",
      "objc/base/RTCVideoDecoderFactory.h",
      "objc/base/RTCVideoEncoder.h",
      "objc/base/RTCVideoEncoderFactory.h",
      "objc/base/RTCVideoEncoderQpThresholds.h",
      "objc/base/RTCVideoEncoderQpThresholds.m",
      "objc/base/RTCVideoEncoderSettings.h",
      "objc/base/RTCVideoEncoderSettings.m",
      "objc/base/RTCVideoFrame.h",
      "objc/base/RTCVideoFrame.mm",
      "objc/base/RTCVideoFrameBuffer.h",
      "objc/base/RTCVideoRenderer.h",
      "objc/base/RTCYUVPlanarBuffer.h",
    ]

    deps = [
      "../rtc_base:checks",
      "../rtc_base:rtc_base",
    ]
    configs += [
      "..:common_objc",
      ":used_from_extension",
    ]

    public_configs = [ ":common_config_objc" ]
  }

  rtc_static_library("helpers_objc") {
    sources = [
      "objc/helpers/AVCaptureSession+DevicePosition.h",
      "objc/helpers/AVCaptureSession+DevicePosition.mm",
      "objc/helpers/NSString+StdString.h",
      "objc/helpers/NSString+StdString.mm",
      "objc/helpers/RTCDispatcher+Private.h",
      "objc/helpers/RTCDispatcher.h",
      "objc/helpers/RTCDispatcher.m",
      "objc/helpers/scoped_cftyperef.h",
    ]

    deps = [
      ":base_objc",
      "../rtc_base:checks",
    ]

    libs = [
      "AVFoundation.framework",
      "CoreMedia.framework",
    ]

    configs += [
      "..:common_objc",
      ":used_from_extension",
    ]

    public_configs = [ ":common_config_objc" ]

    if (is_ios) {
      sources += [
        "objc/helpers/RTCCameraPreviewView.h",
        "objc/helpers/RTCCameraPreviewView.m",
        "objc/helpers/UIDevice+RTCDevice.h",
        "objc/helpers/UIDevice+RTCDevice.mm",
      ]
    }
  }

  if (!build_with_chromium) {
    rtc_static_library("callback_logger_objc") {
      sources = [
        "objc/api/logging/RTCCallbackLogger.h",
        "objc/api/logging/RTCCallbackLogger.mm",
      ]

      deps = [
        ":base_objc",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:rtc_base",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }

    rtc_static_library("file_logger_objc") {
      sources = [
        "objc/api/peerconnection/RTCFileLogger.h",
        "objc/api/peerconnection/RTCFileLogger.mm",
      ]

      deps = [
        ":base_objc",
        "../rtc_base:checks",
        "../rtc_base:logging",
        "../rtc_base:rtc_base",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }
  }

  if (!build_with_chromium) {
    if (is_ios) {
      rtc_static_library("native_api_audio_device_module") {
        visibility = [ "*" ]

        sources = [
          "objc/native/api/audio_device_module.h",
          "objc/native/api/audio_device_module.mm",
        ]

        deps = [
          ":audio_device",
          "../modules/audio_device:audio_device_api",
          "../modules/audio_device:audio_device_generic",
          "../rtc_base:checks",
          "../rtc_base:rtc_base_approved",
          "../system_wrappers",
          "../system_wrappers:metrics_api",
        ]

        if (is_clang) {
          # Suppress warnings from the Chromium Clang plugin
          # (bugs.webrtc.org/163).
          suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
        }
      }

      rtc_source_set("audio_session_observer") {
        visibility = [ ":*" ]

        sources = [
          "objc/native/src/audio/audio_session_observer.h",
        ]

        deps = [
          "../rtc_base:rtc_base",
        ]
      }

      rtc_static_library("audio_device") {
        visibility = [ "*" ]

        sources = [
          "objc/native/src/audio/audio_device_ios.h",
          "objc/native/src/audio/audio_device_ios.mm",
          "objc/native/src/audio/audio_device_module_ios.h",
          "objc/native/src/audio/audio_device_module_ios.mm",
          "objc/native/src/audio/helpers.h",
          "objc/native/src/audio/helpers.mm",
          "objc/native/src/audio/voice_processing_audio_unit.h",
          "objc/native/src/audio/voice_processing_audio_unit.mm",
        ]

        deps = [
          ":audio_objc",
          ":audio_session_observer",
          ":base_objc",
          "../api:array_view",
          "../modules/audio_device:audio_device_api",
          "../modules/audio_device:audio_device_buffer",
          "../modules/audio_device:audio_device_generic",
          "../rtc_base:checks",
          "../rtc_base:rtc_base",
          "../rtc_base/system:fallthrough",
          "../system_wrappers:metrics_api",
        ]

        if (is_clang) {
          # Suppress warnings from the Chromium Clang plugin
          # (bugs.webrtc.org/163).
          suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
        }
      }

      rtc_static_library("audio_objc") {
        sources = [
          "objc/components/audio/RTCAudioSession+Configuration.mm",
          "objc/components/audio/RTCAudioSession+Private.h",
          "objc/components/audio/RTCAudioSession.h",
          "objc/components/audio/RTCAudioSession.mm",
          "objc/components/audio/RTCAudioSessionConfiguration.h",
          "objc/components/audio/RTCAudioSessionConfiguration.m",
          "objc/components/audio/RTCNativeAudioSessionDelegateAdapter.h",
          "objc/components/audio/RTCNativeAudioSessionDelegateAdapter.mm",
        ]
        configs += [
          "..:common_objc",
          ":used_from_extension",
        ]

        public_configs = [ ":common_config_objc" ]

        deps = [
          ":audio_session_observer",
          ":base_objc",
          ":helpers_objc",
          "../rtc_base:checks",
          "../rtc_base:rtc_base",
          "../rtc_base:rtc_base_approved",
        ]
      }
    }

    rtc_static_library("videosource_objc") {
      sources = [
        "objc/api/peerconnection/RTCVideoSource+Private.h",
        "objc/api/peerconnection/RTCVideoSource.h",
        "objc/api/peerconnection/RTCVideoSource.mm",
      ]

      deps = [
        ":base_objc",
        ":mediasource_objc",
        ":native_video",
        ":videoframebuffer_objc",
        "../api:libjingle_peerconnection_api",
        "../api/video:video_frame",
        "../api/video:video_frame_i420",
        "../common_video",
        "../media:rtc_media_base",
        "../rtc_base:checks",
        "../rtc_base:rtc_base",
        "//third_party/libyuv",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }

    rtc_static_library("videoframebuffer_objc") {
      visibility = [ "*" ]
      sources = [
        "objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h",
        "objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
        "objc/api/video_frame_buffer/RTCNativeI420Buffer.mm",
        "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
        "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.mm",
        "objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
        "objc/components/video_frame_buffer/RTCCVPixelBuffer.mm",
      ]
      deps = [
        ":base_objc",
        "//api/video:video_frame",
        "//api/video:video_frame_i420",
        "//common_video",
        "//rtc_base:checks",
        "//rtc_base:rtc_base_approved",
        "//third_party/libyuv",
      ]
      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }

    rtc_static_library("video_objc") {
      sources = [
        "objc/components/renderer/opengl/RTCDefaultShader.h",
        "objc/components/renderer/opengl/RTCDefaultShader.mm",
        "objc/components/renderer/opengl/RTCI420TextureCache.h",
        "objc/components/renderer/opengl/RTCI420TextureCache.mm",
        "objc/components/renderer/opengl/RTCOpenGLDefines.h",
        "objc/components/renderer/opengl/RTCShader.h",
        "objc/components/renderer/opengl/RTCShader.mm",
        "objc/components/renderer/opengl/RTCVideoViewShading.h",
      ]
      libs = []
      if (is_ios) {
        sources += [
          "objc/components/renderer/opengl/RTCNV12TextureCache.h",
          "objc/components/renderer/opengl/RTCNV12TextureCache.m",
        ]
        libs += [
          "GLKit.framework",
          "OpenGLES.framework",
          "QuartzCore.framework",
        ]
      } else if (is_mac) {
        libs += [
          "CoreMedia.framework",
          "CoreVideo.framework",
          "OpenGL.framework",
        ]
      }

      deps = [
        ":base_objc",
        ":helpers_objc",
        ":mediaconstraints_objc",
        ":native_video",
        ":videoframebuffer_objc",
        ":videosource_objc",
        "../api:libjingle_peerconnection_api",
        "../api/video:video_frame",
        "../common_video",
        "../media:rtc_media_base",
        "../rtc_base:checks",
        "../rtc_base:rtc_base",
        "//third_party/abseil-cpp/absl/types:optional",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
    }

    rtc_static_library("ui_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      if (is_ios) {
        sources = [
          "objc/components/renderer/opengl/RTCDisplayLinkTimer.h",
          "objc/components/renderer/opengl/RTCDisplayLinkTimer.m",
          "objc/components/renderer/opengl/RTCEAGLVideoView.h",
          "objc/components/renderer/opengl/RTCEAGLVideoView.m",
        ]
      }
      if (is_mac) {
        sources = [
          "objc/components/renderer/opengl/RTCNSGLVideoView.h",
          "objc/components/renderer/opengl/RTCNSGLVideoView.m",
        ]
      }
      configs += [ "..:common_objc" ]
      deps = [
        ":base_objc",
        ":helpers_objc",
        ":video_objc",
        ":videocapture_objc",
        ":videoframebuffer_objc",
      ]
    }

    if (rtc_use_metal_rendering) {
      rtc_static_library("metal_objc") {
        visibility = [ "*" ]
        allow_poison = [
          "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
          "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
        ]
        sources = [
          "objc/components/renderer/metal/RTCMTLI420Renderer.h",
          "objc/components/renderer/metal/RTCMTLI420Renderer.mm",
          "objc/components/renderer/metal/RTCMTLRenderer+Private.h",
          "objc/components/renderer/metal/RTCMTLRenderer.h",
          "objc/components/renderer/metal/RTCMTLRenderer.mm",
        ]
        if (is_ios) {
          sources += [
            "objc/components/renderer/metal/RTCMTLNV12Renderer.h",
            "objc/components/renderer/metal/RTCMTLNV12Renderer.mm",
            "objc/components/renderer/metal/RTCMTLRGBRenderer.h",
            "objc/components/renderer/metal/RTCMTLRGBRenderer.mm",
            "objc/components/renderer/metal/RTCMTLVideoView.h",
            "objc/components/renderer/metal/RTCMTLVideoView.m",
          ]
        }
        if (is_mac) {
          sources += [
            "objc/components/renderer/metal/RTCMTLNSVideoView.h",
            "objc/components/renderer/metal/RTCMTLNSVideoView.m",
          ]
        }
        libs = [
          "CoreVideo.framework",
          "Metal.framework",
          "MetalKit.framework",
        ]
        deps = [
          ":base_objc",
          ":peerconnectionfactory_base_objc",
          ":video_objc",
          ":videoframebuffer_objc",
          "../api/video:video_frame",
          "../rtc_base:checks",
          "../rtc_base:rtc_base_approved",
        ]
        configs += [ "..:common_objc" ]
        public_configs = [ ":common_config_objc" ]
      }
    }

    # TODO(bugs.webrtc.org/9627): Remove this target.
    rtc_static_library("videocapturebase_objc") {
      visibility = [ "*" ]
      sources = [
        "objc/helpers/noop.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":videoframebuffer_objc",
      ]
    }

    rtc_static_library("videocapture_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      sources = [
        "objc/components/capturer/RTCCameraVideoCapturer.h",
        "objc/components/capturer/RTCCameraVideoCapturer.m",
      ]
      if (is_ios) {
        sources += [
          "objc/components/capturer/RTCFileVideoCapturer.h",
          "objc/components/capturer/RTCFileVideoCapturer.m",
        ]
      }
      libs = [ "AVFoundation.framework" ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        ":video_objc",
        ":videoframebuffer_objc",
      ]
    }

    rtc_static_library("videocodec_objc") {
      visibility = [ "*" ]
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/components/video_codec/RTCCodecSpecificInfoH264+Private.h",
        "objc/components/video_codec/RTCCodecSpecificInfoH264.h",
        "objc/components/video_codec/RTCCodecSpecificInfoH264.mm",
        "objc/components/video_codec/RTCH264ProfileLevelId.h",
        "objc/components/video_codec/RTCH264ProfileLevelId.mm",
      ]
      if (is_ios) {
        sources += [
          "objc/components/video_codec/UIDevice+H264Profile.h",
          "objc/components/video_codec/UIDevice+H264Profile.mm",
        ]
      }
      if (!build_with_chromium && is_clang) {
        # Suppress warnings from the Chromium Clang plugin
        # (bugs.webrtc.org/163).
        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
      }
      public_configs = [ ":common_config_objc" ]
      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../media:rtc_h264_profile_id",
        "../media:rtc_media_base",
        "../modules:module_api",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:checks",
        "../rtc_base:rtc_base_approved",
        "../system_wrappers:field_trial_api",
      ]
    }

    rtc_static_library("default_codec_factory_objc") {
      sources = [
        "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h",
        "objc/components/video_codec/RTCDefaultVideoDecoderFactory.m",
        "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h",
        "objc/components/video_codec/RTCDefaultVideoEncoderFactory.m",
      ]

      deps = [
        ":base_objc",
        ":native_video",
        ":videocodec_objc",
        ":videotoolbox_objc",
        ":vp8",
        ":vp9",
        ":vpx_codec_constants",
      ]
    }

    rtc_static_library("vpx_codec_constants") {
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/api/video_codec/RTCVideoCodecConstants.h",
        "objc/api/video_codec/RTCVideoCodecConstants.mm",
      ]

      deps = [
        ":base_objc",
        "../media:rtc_media_base",
      ]
    }

    rtc_static_library("vp8") {
      visibility = [ "*" ]
      allow_poison = [ "software_video_codecs" ]
      sources = [
        "objc/api/video_codec/RTCVideoDecoderVP8.h",
        "objc/api/video_codec/RTCVideoDecoderVP8.mm",
        "objc/api/video_codec/RTCVideoEncoderVP8.h",
        "objc/api/video_codec/RTCVideoEncoderVP8.mm",
      ]

      deps = [
        ":base_objc",
        ":wrapped_native_codec_objc",
        "../modules/video_coding:webrtc_vp8",
        "../system_wrappers:metrics_default",
      ]
    }

    rtc_static_library("vp9") {
      visibility = [ "*" ]
      allow_poison = [ "software_video_codecs" ]
      sources = [
        "objc/api/video_codec/RTCVideoDecoderVP9.h",
        "objc/api/video_codec/RTCVideoDecoderVP9.mm",
        "objc/api/video_codec/RTCVideoEncoderVP9.h",
        "objc/api/video_codec/RTCVideoEncoderVP9.mm",
      ]

      deps = [
        ":base_objc",
        ":wrapped_native_codec_objc",
        "../media:rtc_media_base",
        "../modules/video_coding:webrtc_vp9",
        "../system_wrappers:metrics_default",
      ]
    }

    # Build the PeerConnectionFactory without audio/video support.
    # This target depends on the objc_peeerconnectionfactory_base which still
    # includes some audio/video related objects such as RTCAudioSource because
    # these objects are just thin wrappers of native C++ interfaces required
    # when implementing webrtc::PeerConnectionFactoryInterface and
    # webrtc::PeerConnectionInterface.
    # The applications which only use WebRTC DataChannel can depend on this.
    rtc_static_library("peerconnectionfactory_no_media_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      defines = [ "HAVE_NO_MEDIA" ]

      sources = [
        "objc/helpers/noop.mm",
      ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":native_api",
        ":native_video",
        ":peerconnectionfactory_base_objc",
        "../api:libjingle_peerconnection_api",
        "../rtc_base:rtc_base",
      ]
    }

    rtc_static_library("mediaconstraints_objc") {
      configs += [ "..:no_global_constructors" ]
      sources = [
        "objc/api/peerconnection/RTCMediaConstraints+Private.h",
        "objc/api/peerconnection/RTCMediaConstraints.h",
        "objc/api/peerconnection/RTCMediaConstraints.mm",
      ]

      public_configs = [ ":common_config_objc" ]
      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api:libjingle_peerconnection_api",
      ]
    }

    # TODO(bugs.webrtc.org/9627): Remove, targets should depend on base_objc.
    rtc_source_set("videorenderer_objc") {
      visibility = [ "*" ]
      sources = [
        "objc/helpers/noop.mm",
      ]

      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
      ]
    }

    rtc_static_library("videorendereradapter_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      sources = [
        "objc/api/RTCVideoRendererAdapter+Private.h",
        "objc/api/RTCVideoRendererAdapter.h",
        "objc/api/RTCVideoRendererAdapter.mm",
      ]

      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":native_api",
        ":videoframebuffer_objc",
        "../api:libjingle_peerconnection_api",
      ]
    }

    rtc_static_library("mediasource_objc") {
      sources = [
        "objc/api/peerconnection/RTCMediaSource+Private.h",
        "objc/api/peerconnection/RTCMediaSource.h",
        "objc/api/peerconnection/RTCMediaSource.mm",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        "../api:libjingle_peerconnection_api",
        "../rtc_base:checks",
      ]
    }

    rtc_static_library("base_native_additions_objc") {
      sources = [
        "objc/api/peerconnection/RTCEncodedImage+Private.h",
        "objc/api/peerconnection/RTCEncodedImage+Private.mm",
        "objc/api/peerconnection/RTCRtpFragmentationHeader+Private.h",
        "objc/api/peerconnection/RTCRtpFragmentationHeader+Private.mm",
        "objc/api/peerconnection/RTCVideoCodecInfo+Private.h",
        "objc/api/peerconnection/RTCVideoCodecInfo+Private.mm",
        "objc/api/peerconnection/RTCVideoEncoderSettings+Private.h",
        "objc/api/peerconnection/RTCVideoEncoderSettings+Private.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../modules:module_api",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:rtc_base",
      ]

      if (!build_with_chromium && is_clang) {
        # Suppress warnings from the Chromium Clang plugin
        # (bugs.webrtc.org/163).
        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
      }
    }

    rtc_static_library("peerconnectionfactory_base_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      configs += [
        "..:no_exit_time_destructors",
        "..:no_global_constructors",
      ]
      sources = [
        "objc/api/peerconnection/RTCAudioSource+Private.h",
        "objc/api/peerconnection/RTCAudioSource.h",
        "objc/api/peerconnection/RTCAudioSource.mm",
        "objc/api/peerconnection/RTCAudioTrack+Private.h",
        "objc/api/peerconnection/RTCAudioTrack.h",
        "objc/api/peerconnection/RTCAudioTrack.mm",
        "objc/api/peerconnection/RTCCertificate.h",
        "objc/api/peerconnection/RTCCertificate.mm",
        "objc/api/peerconnection/RTCConfiguration+Native.h",
        "objc/api/peerconnection/RTCConfiguration+Private.h",
        "objc/api/peerconnection/RTCConfiguration.h",
        "objc/api/peerconnection/RTCConfiguration.mm",
        "objc/api/peerconnection/RTCDataChannel+Private.h",
        "objc/api/peerconnection/RTCDataChannel.h",
        "objc/api/peerconnection/RTCDataChannel.mm",
        "objc/api/peerconnection/RTCDataChannelConfiguration+Private.h",
        "objc/api/peerconnection/RTCDataChannelConfiguration.h",
        "objc/api/peerconnection/RTCDataChannelConfiguration.mm",
        "objc/api/peerconnection/RTCDtmfSender+Private.h",
        "objc/api/peerconnection/RTCDtmfSender.h",
        "objc/api/peerconnection/RTCDtmfSender.mm",
        "objc/api/peerconnection/RTCFieldTrials.h",
        "objc/api/peerconnection/RTCFieldTrials.mm",
        "objc/api/peerconnection/RTCIceCandidate+Private.h",
        "objc/api/peerconnection/RTCIceCandidate.h",
        "objc/api/peerconnection/RTCIceCandidate.mm",
        "objc/api/peerconnection/RTCIceServer+Private.h",
        "objc/api/peerconnection/RTCIceServer.h",
        "objc/api/peerconnection/RTCIceServer.mm",
        "objc/api/peerconnection/RTCIntervalRange+Private.h",
        "objc/api/peerconnection/RTCIntervalRange.h",
        "objc/api/peerconnection/RTCIntervalRange.mm",
        "objc/api/peerconnection/RTCLegacyStatsReport+Private.h",
        "objc/api/peerconnection/RTCLegacyStatsReport.h",
        "objc/api/peerconnection/RTCLegacyStatsReport.mm",
        "objc/api/peerconnection/RTCMediaStream+Private.h",
        "objc/api/peerconnection/RTCMediaStream.h",
        "objc/api/peerconnection/RTCMediaStream.mm",
        "objc/api/peerconnection/RTCMediaStreamTrack+Private.h",
        "objc/api/peerconnection/RTCMediaStreamTrack.h",
        "objc/api/peerconnection/RTCMediaStreamTrack.mm",
        "objc/api/peerconnection/RTCMetrics.h",
        "objc/api/peerconnection/RTCMetrics.mm",
        "objc/api/peerconnection/RTCMetricsSampleInfo+Private.h",
        "objc/api/peerconnection/RTCMetricsSampleInfo.h",
        "objc/api/peerconnection/RTCMetricsSampleInfo.mm",
        "objc/api/peerconnection/RTCPeerConnection+DataChannel.mm",
        "objc/api/peerconnection/RTCPeerConnection+Native.h",
        "objc/api/peerconnection/RTCPeerConnection+Private.h",
        "objc/api/peerconnection/RTCPeerConnection+Stats.mm",
        "objc/api/peerconnection/RTCPeerConnection.h",
        "objc/api/peerconnection/RTCPeerConnection.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactory+Native.h",
        "objc/api/peerconnection/RTCPeerConnectionFactory+Private.h",
        "objc/api/peerconnection/RTCPeerConnectionFactory.h",
        "objc/api/peerconnection/RTCPeerConnectionFactory.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm",
        "objc/api/peerconnection/RTCPeerConnectionFactoryOptions+Private.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
        "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.mm",
        "objc/api/peerconnection/RTCRtcpParameters+Private.h",
        "objc/api/peerconnection/RTCRtcpParameters.h",
        "objc/api/peerconnection/RTCRtcpParameters.mm",
        "objc/api/peerconnection/RTCRtpCodecParameters+Private.h",
        "objc/api/peerconnection/RTCRtpCodecParameters.h",
        "objc/api/peerconnection/RTCRtpCodecParameters.mm",
        "objc/api/peerconnection/RTCRtpEncodingParameters+Private.h",
        "objc/api/peerconnection/RTCRtpEncodingParameters.h",
        "objc/api/peerconnection/RTCRtpEncodingParameters.mm",
        "objc/api/peerconnection/RTCRtpHeaderExtension+Private.h",
        "objc/api/peerconnection/RTCRtpHeaderExtension.h",
        "objc/api/peerconnection/RTCRtpHeaderExtension.mm",
        "objc/api/peerconnection/RTCRtpParameters+Private.h",
        "objc/api/peerconnection/RTCRtpParameters.h",
        "objc/api/peerconnection/RTCRtpParameters.mm",
        "objc/api/peerconnection/RTCRtpReceiver+Private.h",
        "objc/api/peerconnection/RTCRtpReceiver.h",
        "objc/api/peerconnection/RTCRtpReceiver.mm",
        "objc/api/peerconnection/RTCRtpSender+Private.h",
        "objc/api/peerconnection/RTCRtpSender.h",
        "objc/api/peerconnection/RTCRtpSender.mm",
        "objc/api/peerconnection/RTCRtpTransceiver+Private.h",
        "objc/api/peerconnection/RTCRtpTransceiver.h",
        "objc/api/peerconnection/RTCRtpTransceiver.mm",
        "objc/api/peerconnection/RTCSSLAdapter.h",
        "objc/api/peerconnection/RTCSSLAdapter.mm",
        "objc/api/peerconnection/RTCSessionDescription+Private.h",
        "objc/api/peerconnection/RTCSessionDescription.h",
        "objc/api/peerconnection/RTCSessionDescription.mm",
        "objc/api/peerconnection/RTCTracing.h",
        "objc/api/peerconnection/RTCTracing.mm",
        "objc/api/peerconnection/RTCVideoTrack+Private.h",
        "objc/api/peerconnection/RTCVideoTrack.h",
        "objc/api/peerconnection/RTCVideoTrack.mm",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_native_additions_objc",
        ":base_objc",
        ":file_logger_objc",
        ":helpers_objc",
        ":legacy_header_paths",
        ":mediaconstraints_objc",
        ":mediasource_objc",
        ":native_api",
        ":native_video",
        ":video_objc",
        ":videoframebuffer_objc",
        ":videorendereradapter_objc",
        ":videosource_objc",
        ":videotoolbox_objc",
        "../api:libjingle_peerconnection_api",
        "../api/audio_codecs:audio_codecs_api",
        "../api/audio_codecs:builtin_audio_decoder_factory",
        "../api/audio_codecs:builtin_audio_encoder_factory",
        "../api/video:video_frame",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../media:rtc_media_base",
        "../modules:module_api",
        "../modules/audio_device:audio_device_api",
        "../modules/audio_processing:audio_processing",
        "../modules/video_coding:video_codec_interface",
        "../pc:create_pc_factory",
        "../pc:peerconnection",
        "../rtc_base:checks",
        "../rtc_base:rtc_base",
        "//third_party/abseil-cpp/absl/memory",
      ]

      if (is_ios) {
        deps += [ ":native_api_audio_device_module" ]
      }
    }

    # TODO(bugs.webrtc.org/9627): Remove this target.
    rtc_source_set("legacy_header_paths") {
      sources = [
        "objc/Framework/Classes/Common/NSString+StdString.h",
        "objc/Framework/Classes/Common/scoped_cftyperef.h",
        "objc/Framework/Classes/PeerConnection/RTCConfiguration+Native.h",
        "objc/Framework/Classes/PeerConnection/RTCPeerConnection+Native.h",
        "objc/Framework/Classes/PeerConnection/RTCPeerConnectionFactory+Native.h",
        "objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h",
        "objc/Framework/Classes/Video/RTCDefaultShader.h",
        "objc/Framework/Classes/Video/RTCNV12TextureCache.h",
        "objc/Framework/Classes/VideoToolbox/nalu_rewriter.h",
        "objc/Framework/Headers/WebRTC/RTCAudioSession.h",
        "objc/Framework/Headers/WebRTC/RTCAudioSessionConfiguration.h",
        "objc/Framework/Headers/WebRTC/RTCAudioSource.h",
        "objc/Framework/Headers/WebRTC/RTCAudioTrack.h",
        "objc/Framework/Headers/WebRTC/RTCCVPixelBuffer.h",
        "objc/Framework/Headers/WebRTC/RTCCallbackLogger.h",
        "objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h",
        "objc/Framework/Headers/WebRTC/RTCCameraVideoCapturer.h",
        "objc/Framework/Headers/WebRTC/RTCCertificate.h",
        "objc/Framework/Headers/WebRTC/RTCConfiguration.h",
        "objc/Framework/Headers/WebRTC/RTCDataChannel.h",
        "objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h",
        "objc/Framework/Headers/WebRTC/RTCDefaultVideoDecoderFactory.h",
        "objc/Framework/Headers/WebRTC/RTCDefaultVideoEncoderFactory.h",
        "objc/Framework/Headers/WebRTC/RTCDispatcher.h",
        "objc/Framework/Headers/WebRTC/RTCDtmfSender.h",
        "objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h",
        "objc/Framework/Headers/WebRTC/RTCFieldTrials.h",
        "objc/Framework/Headers/WebRTC/RTCFileLogger.h",
        "objc/Framework/Headers/WebRTC/RTCFileVideoCapturer.h",
        "objc/Framework/Headers/WebRTC/RTCH264ProfileLevelId.h",
        "objc/Framework/Headers/WebRTC/RTCIceCandidate.h",
        "objc/Framework/Headers/WebRTC/RTCIceServer.h",
        "objc/Framework/Headers/WebRTC/RTCIntervalRange.h",
        "objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h",
        "objc/Framework/Headers/WebRTC/RTCLogging.h",
        "objc/Framework/Headers/WebRTC/RTCMTLNSVideoView.h",
        "objc/Framework/Headers/WebRTC/RTCMTLVideoView.h",
        "objc/Framework/Headers/WebRTC/RTCMacros.h",
        "objc/Framework/Headers/WebRTC/RTCMediaConstraints.h",
        "objc/Framework/Headers/WebRTC/RTCMediaSource.h",
        "objc/Framework/Headers/WebRTC/RTCMediaStream.h",
        "objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h",
        "objc/Framework/Headers/WebRTC/RTCMetrics.h",
        "objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h",
        "objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h",
        "objc/Framework/Headers/WebRTC/RTCPeerConnection.h",
        "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h",
        "objc/Framework/Headers/WebRTC/RTCPeerConnectionFactoryOptions.h",
        "objc/Framework/Headers/WebRTC/RTCRtcpParameters.h",
        "objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h",
        "objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h",
        "objc/Framework/Headers/WebRTC/RTCRtpHeaderExtension.h",
        "objc/Framework/Headers/WebRTC/RTCRtpParameters.h",
        "objc/Framework/Headers/WebRTC/RTCRtpReceiver.h",
        "objc/Framework/Headers/WebRTC/RTCRtpSender.h",
        "objc/Framework/Headers/WebRTC/RTCRtpTransceiver.h",
        "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
        "objc/Framework/Headers/WebRTC/RTCSessionDescription.h",
        "objc/Framework/Headers/WebRTC/RTCTracing.h",
        "objc/Framework/Headers/WebRTC/RTCVideoCapturer.h",
        "objc/Framework/Headers/WebRTC/RTCVideoCodec.h",
        "objc/Framework/Headers/WebRTC/RTCVideoCodecFactory.h",
        "objc/Framework/Headers/WebRTC/RTCVideoCodecH264.h",
        "objc/Framework/Headers/WebRTC/RTCVideoCodecInfo.h",
        "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP8.h",
        "objc/Framework/Headers/WebRTC/RTCVideoDecoderVP9.h",
        "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP8.h",
        "objc/Framework/Headers/WebRTC/RTCVideoEncoderVP9.h",
        "objc/Framework/Headers/WebRTC/RTCVideoFrame.h",
        "objc/Framework/Headers/WebRTC/RTCVideoFrameBuffer.h",
        "objc/Framework/Headers/WebRTC/RTCVideoRenderer.h",
        "objc/Framework/Headers/WebRTC/RTCVideoSource.h",
        "objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
        "objc/Framework/Headers/WebRTC/RTCVideoViewShading.h",
        "objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h",
        "objc/Framework/Native/api/audio_device_module.h",
        "objc/Framework/Native/api/video_decoder_factory.h",
        "objc/Framework/Native/api/video_encoder_factory.h",
        "objc/Framework/Native/api/video_frame_buffer.h",
        "objc/Framework/Native/src/objc_video_decoder_factory.h",
        "objc/Framework/Native/src/objc_video_encoder_factory.h",
      ]
    }

    if (rtc_include_tests) {
      if (is_ios) {
        rtc_source_set("sdk_unittests_sources") {
          testonly = true
          include_dirs = [ "objc/" ]

          sources = [
            "objc/unittests/ObjCVideoTrackSource_xctest.mm",
            "objc/unittests/RTCCVPixelBuffer_xctest.mm",
            "objc/unittests/RTCCallbackLogger_xctest.m",
            "objc/unittests/RTCFileVideoCapturer_xctest.mm",
            "objc/unittests/RTCH264ProfileLevelId_xctest.m",
            "objc/unittests/RTCPeerConnectionFactory_xctest.m",
            "objc/unittests/frame_buffer_helpers.h",
            "objc/unittests/frame_buffer_helpers.mm",
          ]

          # TODO(peterhanspers): Reenable these tests on simulator.
          # See bugs.webrtc.org/7812
          if (!use_ios_simulator) {
            sources += [
              "objc/unittests/RTCAudioDeviceModule_xctest.mm",
              "objc/unittests/RTCAudioDevice_xctest.mm",
            ]
          }

          deps = [
            ":audio_device",
            ":audio_objc",
            ":base_objc",
            ":callback_logger_objc",
            ":framework_objc",
            ":mediaconstraints_objc",
            ":native_api",
            ":native_api_audio_device_module",
            ":native_video",
            ":peerconnectionfactory_base_objc",
            ":videocapture_objc",
            ":videocodec_objc",
            ":videoframebuffer_objc",
            ":videosource_objc",
            ":videotoolbox_objc",
            "../api/video:video_frame_i420",
            "../common_video:common_video",
            "../media:rtc_media_base",
            "../media:rtc_media_tests_utils",
            "../modules:module_api",
            "../rtc_base:rtc_base",
            "../rtc_base:rtc_base_tests_utils",
            "../system_wrappers:system_wrappers",
            "../system_wrappers:system_wrappers_default",
            "//third_party/libyuv",
          ]

          if (rtc_use_metal_rendering) {
            sources += [ "objc/unittests/RTCMTLVideoView_xctest.m" ]
            deps += [ ":metal_objc" ]
          }

          public_deps = [
            "//build/config/ios:xctest",
            "//third_party/ocmock",
          ]
        }

        bundle_data("sdk_unittests_bundle_data") {
          sources = [
            "objc/unittests/audio_short16.pcm",
            "objc/unittests/audio_short44.pcm",
            "objc/unittests/audio_short48.pcm",

            # Sample video taken from https://media.xiph.org/video/derf/
            "objc/unittests/foreman.mp4",
          ]
          outputs = [
            "{{bundle_resources_dir}}/{{source_file_part}}",
          ]
        }

        # These tests use static linking.
        rtc_ios_xctest_test("sdk_unittests") {
          info_plist = "//test/ios/Info.plist"
          sources = [
            "objc/unittests/main.m",
          ]

          _bundle_id_suffix = ios_generic_test_bundle_id_suffix
          extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=$_bundle_id_suffix" ]
          deps = [
            ":peerconnectionfactory_base_objc",
            ":sdk_unittests_bundle_data",
            ":sdk_unittests_sources",
          ]
          ldflags = [ "-all_load" ]
        }

        # These tests link to the framework.
        rtc_ios_xctest_test("sdk_framework_unittests") {
          info_plist = "//test/ios/Info.plist"
          sources = [
            "objc/unittests/RTCDoNotPutCPlusPlusInFrameworkHeaders_xctest.m",
            "objc/unittests/main.m",
          ]

          _bundle_id_suffix = ios_generic_test_bundle_id_suffix
          extra_substitutions = [ "GTEST_BUNDLE_ID_SUFFIX=$_bundle_id_suffix" ]
          deps = [
            ":framework_objc+link",
            ":ios_framework_bundle",
          ]
        }
      }

      # TODO(denicija): once all tests are migrated to xctest remove this source set.
      rtc_source_set("rtc_unittests_objc") {
        testonly = true

        sources = [
          "objc/unittests/RTCCertificateTest.mm",
          "objc/unittests/RTCConfigurationTest.mm",
          "objc/unittests/RTCDataChannelConfigurationTest.mm",
          "objc/unittests/RTCIceCandidateTest.mm",
          "objc/unittests/RTCIceServerTest.mm",
          "objc/unittests/RTCIntervalRangeTests.mm",
          "objc/unittests/RTCMediaConstraintsTest.mm",
          "objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm",
          "objc/unittests/RTCPeerConnectionTest.mm",
          "objc/unittests/RTCSessionDescriptionTest.mm",
          "objc/unittests/RTCTracingTest.mm",
          "objc/unittests/objc_video_decoder_factory_tests.mm",
          "objc/unittests/objc_video_encoder_factory_tests.mm",
          "objc/unittests/scoped_cftyperef_tests.mm",
        ]
        if (is_ios) {
          sources += [ "objc/unittests/RTCCameraVideoCapturerTests.mm" ]
        }

        # |-ObjC| flag needed to make sure category method implementations
        # are included:
        # https://developer.apple.com/library/mac/qa/qa1490/_index.html
        ldflags = [ "-ObjC" ]

        deps = [
          ":base_objc",
          ":helpers_objc",
          ":mediaconstraints_objc",
          ":native_api",
          ":native_video",
          ":peerconnectionfactory_base_objc",
          ":video_objc",
          ":videocapture_objc",
          ":videocodec_objc",
          ":videoframebuffer_objc",
          ":videosource_objc",
          ":videotoolbox_objc",
          "../api/audio_codecs:audio_codecs_api",
          "../api/audio_codecs:builtin_audio_decoder_factory",
          "../api/audio_codecs:builtin_audio_encoder_factory",
          "../api/video_codecs:video_codecs_api",
          "../media:rtc_media_base",
          "../modules:module_api",
          "../modules/audio_device:audio_device_api",
          "../modules/audio_processing:audio_processing",
          "../modules/video_coding:video_codec_interface",
          "../rtc_base:rtc_base_tests_utils",
          "../rtc_base/system:unused",
          "../system_wrappers:system_wrappers_default",
          "//test:test_support",
          "//third_party/ocmock",
        ]

        if (is_ios) {
          sources += [ "objc/unittests/RTCAudioSessionTest.mm" ]
          deps += [ ":audio_objc" ]
        }
      }
    }

    if (is_ios) {
      ios_framework_bundle_with_umbrella_header("framework_objc") {
        info_plist = "objc/Info.plist"
        output_name = "WebRTC"

        common_objc_headers = [
          "objc/base/RTCCodecSpecificInfo.h",
          "objc/base/RTCEncodedImage.h",
          "objc/base/RTCI420Buffer.h",
          "objc/base/RTCLogging.h",
          "objc/base/RTCMacros.h",
          "objc/base/RTCMutableI420Buffer.h",
          "objc/base/RTCMutableYUVPlanarBuffer.h",
          "objc/base/RTCRtpFragmentationHeader.h",
          "objc/base/RTCVideoCapturer.h",
          "objc/base/RTCVideoCodecInfo.h",
          "objc/base/RTCVideoDecoder.h",
          "objc/base/RTCVideoDecoderFactory.h",
          "objc/base/RTCVideoEncoder.h",
          "objc/base/RTCVideoEncoderFactory.h",
          "objc/base/RTCVideoEncoderQpThresholds.h",
          "objc/base/RTCVideoEncoderSettings.h",
          "objc/base/RTCVideoFrame.h",
          "objc/base/RTCVideoFrameBuffer.h",
          "objc/base/RTCVideoRenderer.h",
          "objc/base/RTCYUVPlanarBuffer.h",
          "objc/components/audio/RTCAudioSession.h",
          "objc/components/audio/RTCAudioSessionConfiguration.h",
          "objc/components/capturer/RTCCameraVideoCapturer.h",
          "objc/components/capturer/RTCFileVideoCapturer.h",
          "objc/components/renderer/metal/RTCMTLVideoView.h",
          "objc/components/renderer/opengl/RTCEAGLVideoView.h",
          "objc/components/renderer/opengl/RTCVideoViewShading.h",
          "objc/components/video_codec/RTCCodecSpecificInfoH264.h",
          "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h",
          "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h",
          "objc/components/video_codec/RTCH264ProfileLevelId.h",
          "objc/components/video_codec/RTCVideoDecoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoDecoderH264.h",
          "objc/components/video_codec/RTCVideoEncoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoEncoderH264.h",
          "objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
          "objc/helpers/RTCCameraPreviewView.h",
          "objc/helpers/RTCDispatcher.h",
          "objc/helpers/UIDevice+RTCDevice.h",
          "objc/api/peerconnection/RTCAudioSource.h",
          "objc/api/peerconnection/RTCAudioTrack.h",
          "objc/api/peerconnection/RTCConfiguration.h",
          "objc/api/peerconnection/RTCDataChannel.h",
          "objc/api/peerconnection/RTCDataChannelConfiguration.h",
          "objc/api/peerconnection/RTCFieldTrials.h",
          "objc/api/peerconnection/RTCIceCandidate.h",
          "objc/api/peerconnection/RTCIceServer.h",
          "objc/api/peerconnection/RTCIntervalRange.h",
          "objc/api/peerconnection/RTCLegacyStatsReport.h",
          "objc/api/peerconnection/RTCMediaConstraints.h",
          "objc/api/peerconnection/RTCMediaSource.h",
          "objc/api/peerconnection/RTCMediaStream.h",
          "objc/api/peerconnection/RTCMediaStreamTrack.h",
          "objc/api/peerconnection/RTCMetrics.h",
          "objc/api/peerconnection/RTCMetricsSampleInfo.h",
          "objc/api/peerconnection/RTCPeerConnection.h",
          "objc/api/peerconnection/RTCPeerConnectionFactory.h",
          "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
          "objc/api/peerconnection/RTCRtcpParameters.h",
          "objc/api/peerconnection/RTCRtpCodecParameters.h",
          "objc/api/peerconnection/RTCRtpEncodingParameters.h",
          "objc/api/peerconnection/RTCRtpHeaderExtension.h",
          "objc/api/peerconnection/RTCRtpParameters.h",
          "objc/api/peerconnection/RTCRtpReceiver.h",
          "objc/api/peerconnection/RTCRtpSender.h",
          "objc/api/peerconnection/RTCRtpTransceiver.h",
          "objc/api/peerconnection/RTCDtmfSender.h",
          "objc/api/peerconnection/RTCSSLAdapter.h",
          "objc/api/peerconnection/RTCSessionDescription.h",
          "objc/api/peerconnection/RTCTracing.h",
          "objc/api/peerconnection/RTCCertificate.h",
          "objc/api/peerconnection/RTCVideoSource.h",
          "objc/api/peerconnection/RTCVideoTrack.h",
          "objc/api/video_codec/RTCVideoCodecConstants.h",
          "objc/api/video_codec/RTCVideoDecoderVP8.h",
          "objc/api/video_codec/RTCVideoDecoderVP9.h",
          "objc/api/video_codec/RTCVideoEncoderVP8.h",
          "objc/api/video_codec/RTCVideoEncoderVP9.h",
          "objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
          "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
        ]

        if (!build_with_chromium) {
          common_objc_headers += [
            "objc/api/logging/RTCCallbackLogger.h",
            "objc/api/peerconnection/RTCFileLogger.h",
          ]
        }

        sources = common_objc_headers
        public_headers = common_objc_headers

        ldflags = [
          "-all_load",
          "-install_name",
          "@rpath/$output_name.framework/$output_name",
        ]

        deps = [
          ":audio_objc",
          ":base_objc",
          ":default_codec_factory_objc",
          ":native_api",
          ":native_video",
          ":peerconnectionfactory_base_objc",
          ":ui_objc",
          ":videocapture_objc",
          ":videocodec_objc",
          ":videotoolbox_objc",
          "../rtc_base:rtc_base_approved",
          "../system_wrappers:field_trial_default",
          "../system_wrappers:metrics_default",
          "../system_wrappers:runtime_enabled_features_default",
        ]
        if (rtc_use_metal_rendering) {
          deps += [ ":metal_objc" ]
        }
        if (!build_with_chromium) {
          deps += [
            ":callback_logger_objc",
            ":file_logger_objc",
          ]
        }

        libs = [
          "AVFoundation.framework",
          "CoreGraphics.framework",
          "CoreMedia.framework",
          "GLKit.framework",
        ]

        configs += [
          "..:common_objc",
          ":used_from_extension",
        ]

        public_configs = [ ":common_config_objc" ]
      }

      bundle_data("ios_framework_bundle") {
        deps = [
          "../sdk:framework_objc",
        ]
        sources = [
          "$root_build_dir/WebRTC.framework",
        ]
        outputs = [
          "{{bundle_resources_dir}}/Frameworks/{{source_file_part}}",
        ]
      }
    }

    if (is_mac) {
      mac_framework_bundle_with_umbrella_header("mac_framework_objc") {
        info_plist = "objc/Info.plist"
        output_name = "WebRTC"

        sources = [
          "objc/api/peerconnection/RTCAudioSource.h",
          "objc/api/peerconnection/RTCAudioTrack.h",
          "objc/api/peerconnection/RTCCertificate.h",
          "objc/api/peerconnection/RTCConfiguration.h",
          "objc/api/peerconnection/RTCDataChannel.h",
          "objc/api/peerconnection/RTCDataChannelConfiguration.h",
          "objc/api/peerconnection/RTCDtmfSender.h",
          "objc/api/peerconnection/RTCFieldTrials.h",
          "objc/api/peerconnection/RTCIceCandidate.h",
          "objc/api/peerconnection/RTCIceServer.h",
          "objc/api/peerconnection/RTCIntervalRange.h",
          "objc/api/peerconnection/RTCLegacyStatsReport.h",
          "objc/api/peerconnection/RTCMediaConstraints.h",
          "objc/api/peerconnection/RTCMediaSource.h",
          "objc/api/peerconnection/RTCMediaStream.h",
          "objc/api/peerconnection/RTCMediaStreamTrack.h",
          "objc/api/peerconnection/RTCMetrics.h",
          "objc/api/peerconnection/RTCMetricsSampleInfo.h",
          "objc/api/peerconnection/RTCPeerConnection.h",
          "objc/api/peerconnection/RTCPeerConnectionFactory.h",
          "objc/api/peerconnection/RTCPeerConnectionFactoryOptions.h",
          "objc/api/peerconnection/RTCRtcpParameters.h",
          "objc/api/peerconnection/RTCRtpCodecParameters.h",
          "objc/api/peerconnection/RTCRtpEncodingParameters.h",
          "objc/api/peerconnection/RTCRtpHeaderExtension.h",
          "objc/api/peerconnection/RTCRtpParameters.h",
          "objc/api/peerconnection/RTCRtpReceiver.h",
          "objc/api/peerconnection/RTCRtpSender.h",
          "objc/api/peerconnection/RTCRtpTransceiver.h",
          "objc/api/peerconnection/RTCSSLAdapter.h",
          "objc/api/peerconnection/RTCSessionDescription.h",
          "objc/api/peerconnection/RTCTracing.h",
          "objc/api/peerconnection/RTCVideoSource.h",
          "objc/api/peerconnection/RTCVideoTrack.h",
          "objc/api/video_codec/RTCVideoDecoderVP8.h",
          "objc/api/video_codec/RTCVideoDecoderVP9.h",
          "objc/api/video_codec/RTCVideoEncoderVP8.h",
          "objc/api/video_codec/RTCVideoEncoderVP9.h",
          "objc/api/video_frame_buffer/RTCNativeI420Buffer.h",
          "objc/api/video_frame_buffer/RTCNativeMutableI420Buffer.h",
          "objc/base/RTCCodecSpecificInfo.h",
          "objc/base/RTCEncodedImage.h",
          "objc/base/RTCI420Buffer.h",
          "objc/base/RTCLogging.h",
          "objc/base/RTCMacros.h",
          "objc/base/RTCMutableI420Buffer.h",
          "objc/base/RTCMutableYUVPlanarBuffer.h",
          "objc/base/RTCRtpFragmentationHeader.h",
          "objc/base/RTCVideoCapturer.h",
          "objc/base/RTCVideoCodecInfo.h",
          "objc/base/RTCVideoDecoder.h",
          "objc/base/RTCVideoDecoderFactory.h",
          "objc/base/RTCVideoEncoder.h",
          "objc/base/RTCVideoEncoderFactory.h",
          "objc/base/RTCVideoEncoderQpThresholds.h",
          "objc/base/RTCVideoEncoderSettings.h",
          "objc/base/RTCVideoFrame.h",
          "objc/base/RTCVideoFrameBuffer.h",
          "objc/base/RTCVideoRenderer.h",
          "objc/base/RTCYUVPlanarBuffer.h",
          "objc/components/capturer/RTCCameraVideoCapturer.h",
          "objc/components/capturer/RTCFileVideoCapturer.h",
          "objc/components/renderer/metal/RTCMTLNSVideoView.h",
          "objc/components/renderer/opengl/RTCNSGLVideoView.h",
          "objc/components/renderer/opengl/RTCVideoViewShading.h",
          "objc/components/video_codec/RTCCodecSpecificInfoH264.h",
          "objc/components/video_codec/RTCDefaultVideoDecoderFactory.h",
          "objc/components/video_codec/RTCDefaultVideoEncoderFactory.h",
          "objc/components/video_codec/RTCH264ProfileLevelId.h",
          "objc/components/video_codec/RTCVideoDecoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoDecoderH264.h",
          "objc/components/video_codec/RTCVideoEncoderFactoryH264.h",
          "objc/components/video_codec/RTCVideoEncoderH264.h",
          "objc/components/video_frame_buffer/RTCCVPixelBuffer.h",
          "objc/helpers/RTCDispatcher.h",
        ]
        if (!build_with_chromium) {
          sources += [
            "objc/api/logging/RTCCallbackLogger.h",
            "objc/api/peerconnection/RTCFileLogger.h",
          ]
        }

        deps = [
          ":base_objc",
          ":default_codec_factory_objc",
          ":native_api",
          ":native_video",
          ":peerconnectionfactory_base_objc",
          ":ui_objc",
          ":videocapture_objc",
          ":videocodec_objc",
          ":videotoolbox_objc",
          "../rtc_base:rtc_base_approved",
          "../system_wrappers:field_trial_default",
          "../system_wrappers:metrics_default",
          "../system_wrappers:runtime_enabled_features_default",
        ]
        if (rtc_use_metal_rendering) {
          deps += [ ":metal_objc" ]
        }
        if (!build_with_chromium) {
          deps += [
            ":callback_logger_objc",
            ":file_logger_objc",
          ]
        }

        libs = [
          "AVFoundation.framework",
          "CoreGraphics.framework",
          "CoreMedia.framework",
          "OpenGL.framework",
        ]

        configs = [ "..:common_objc" ]

        public_configs = [ ":common_config_objc" ]
      }

      bundle_data("mac_framework_bundle") {
        deps = [
          "../sdk:mac_framework_objc",
        ]
        sources = [
          "$root_build_dir/WebRTC.framework",
        ]
        outputs = [
          "{{bundle_resources_dir}}/Frameworks/{{source_file_part}}",
        ]
      }
    }

    rtc_static_library("wrapped_native_codec_objc") {
      sources = [
        "objc/api/video_codec/RTCWrappedNativeVideoDecoder.h",
        "objc/api/video_codec/RTCWrappedNativeVideoDecoder.mm",
        "objc/api/video_codec/RTCWrappedNativeVideoEncoder.h",
        "objc/api/video_codec/RTCWrappedNativeVideoEncoder.mm",
      ]

      configs += [ "..:common_objc" ]
      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":helpers_objc",
        "../api/video_codecs:video_codecs_api",
        "../media:rtc_media_base",
      ]
    }

    # The native API is currently experimental and may change without notice.
    rtc_static_library("native_api") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      sources = [
        "objc/native/api/video_capturer.h",
        "objc/native/api/video_capturer.mm",
        "objc/native/api/video_decoder_factory.h",
        "objc/native/api/video_decoder_factory.mm",
        "objc/native/api/video_encoder_factory.h",
        "objc/native/api/video_encoder_factory.mm",
        "objc/native/api/video_frame.h",
        "objc/native/api/video_frame.mm",
        "objc/native/api/video_frame_buffer.h",
        "objc/native/api/video_frame_buffer.mm",
        "objc/native/api/video_renderer.h",
        "objc/native/api/video_renderer.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      deps = [
        ":base_objc",
        ":native_video",
        ":videoframebuffer_objc",
        "../api:libjingle_peerconnection_api",
        "../api/video:video_frame",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../rtc_base:rtc_base",
        "//third_party/abseil-cpp/absl/memory",
      ]
    }

    rtc_static_library("native_video") {
      sources = [
        "objc/native/src/objc_frame_buffer.h",
        "objc/native/src/objc_frame_buffer.mm",
        "objc/native/src/objc_video_decoder_factory.h",
        "objc/native/src/objc_video_decoder_factory.mm",
        "objc/native/src/objc_video_encoder_factory.h",
        "objc/native/src/objc_video_encoder_factory.mm",
        "objc/native/src/objc_video_frame.h",
        "objc/native/src/objc_video_frame.mm",
        "objc/native/src/objc_video_renderer.h",
        "objc/native/src/objc_video_renderer.mm",
        "objc/native/src/objc_video_track_source.h",
        "objc/native/src/objc_video_track_source.mm",
      ]

      configs += [ "..:common_objc" ]

      public_configs = [ ":common_config_objc" ]

      if (!build_with_chromium && is_clang) {
        # Suppress warnings from the Chromium Clang plugin
        # (bugs.webrtc.org/163).
        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
      }

      deps = [
        ":base_native_additions_objc",
        ":base_objc",
        ":helpers_objc",
        ":videocodec_objc",
        ":videoframebuffer_objc",
        ":vpx_codec_constants",
        ":wrapped_native_codec_objc",
        "../api/video:video_frame",
        "../api/video:video_frame_i420",
        "../api/video_codecs:video_codecs_api",
        "../common_video",
        "../media:rtc_audio_video",
        "../media:rtc_media_base",
        "../modules:module_api",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:checks",
        "../rtc_base:rtc_base",
        "//third_party/abseil-cpp/absl/memory",
      ]
    }

    rtc_static_library("video_toolbox_cc") {
      visibility = [ ":videotoolbox_objc" ]
      sources = [
        "objc/components/video_codec/helpers.cc",
        "objc/components/video_codec/helpers.h",
        "objc/components/video_codec/nalu_rewriter.cc",
        "objc/components/video_codec/nalu_rewriter.h",
      ]
      deps = [
        "../common_video",
        "../modules:module_api",
        "../modules/video_coding:webrtc_h264",
        "../rtc_base:checks",
        "../rtc_base:rtc_base_approved",
      ]
    }

    rtc_static_library("videotoolbox_objc") {
      visibility = [ "*" ]
      allow_poison = [
        "audio_codecs",  # TODO(bugs.webrtc.org/8396): Remove.
        "software_video_codecs",  # TODO(bugs.webrtc.org/7925): Remove.
      ]
      sources = [
        "objc/components/video_codec/RTCVideoDecoderFactoryH264.h",
        "objc/components/video_codec/RTCVideoDecoderFactoryH264.m",
        "objc/components/video_codec/RTCVideoDecoderH264.h",
        "objc/components/video_codec/RTCVideoDecoderH264.mm",
        "objc/components/video_codec/RTCVideoEncoderFactoryH264.h",
        "objc/components/video_codec/RTCVideoEncoderFactoryH264.m",
        "objc/components/video_codec/RTCVideoEncoderH264.h",
        "objc/components/video_codec/RTCVideoEncoderH264.mm",
      ]

      configs += [
        "..:common_objc",
        ":used_from_extension",
      ]

      if (is_ios && rtc_apprtcmobile_broadcast_extension) {
        defines = [ "RTC_APPRTCMOBILE_BROADCAST_EXTENSION" ]
      }

      deps = [
        ":base_native_additions_objc",
        ":base_objc",
        ":helpers_objc",
        ":video_toolbox_cc",
        ":videocodec_objc",
        ":videoframebuffer_objc",
        "../common_video",
        "../modules:module_api",
        "../modules/video_coding:video_codec_interface",
        "../rtc_base:checks",
        "../rtc_base:rtc_base_approved",
        "//third_party/libyuv",
      ]

      libs = [
        "CoreFoundation.framework",
        "CoreMedia.framework",
        "CoreVideo.framework",
        "VideoToolbox.framework",
      ]
    }
  }
}
