# Copyright (c) 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_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
} else if (is_mac) {
  import("//build/config/mac/rules.gni")
} else if (is_ios) {
  import("//build/config/ios/rules.gni")
}

group("examples") {
  # This target shall build all targets in examples.
  testonly = true
  deps = []

  if (is_android) {
    deps += [
      ":AppRTCMobile",
      ":AppRTCMobileTest",
      ":AppRTCMobileTestStubbedVideoIO",
    ]
  }

  if (!build_with_chromium) {
    deps += [ ":stun_prober" ]
  }

  if (is_ios || (is_mac && target_cpu != "x86")) {
    deps += [ ":AppRTCMobile" ]
  }

  if (is_linux || is_win) {
    deps += [
      ":peerconnection_client",
      ":peerconnection_server",
      ":relayserver",
      ":stunserver",
      ":turnserver",
    ]
  }
}

if (is_android) {
  rtc_android_apk("AppRTCMobile") {
    testonly = true
    apk_name = "AppRTCMobile"
    android_manifest = "androidapp/AndroidManifest.xml"

    deps = [
      ":AppRTCMobile_javalib",
      ":AppRTCMobile_resources",
      "../rtc_base:base_java",
      "//base:base_java",
    ]

    shared_libraries = [ "../sdk/android:libjingle_peerconnection_so" ]
  }

  rtc_android_library("AppRTCMobile_javalib") {
    testonly = true
    android_manifest_for_lint = "androidapp/AndroidManifest.xml"

    java_files = [
      "androidapp/src/org/appspot/apprtc/AppRTCAudioManager.java",
      "androidapp/src/org/appspot/apprtc/AppRTCBluetoothManager.java",
      "androidapp/src/org/appspot/apprtc/AppRTCClient.java",
      "androidapp/src/org/appspot/apprtc/AppRTCProximitySensor.java",
      "androidapp/src/org/appspot/apprtc/CallActivity.java",
      "androidapp/src/org/appspot/apprtc/CallFragment.java",
      "androidapp/src/org/appspot/apprtc/CaptureQualityController.java",
      "androidapp/src/org/appspot/apprtc/ConnectActivity.java",
      "androidapp/src/org/appspot/apprtc/CpuMonitor.java",
      "androidapp/src/org/appspot/apprtc/DirectRTCClient.java",
      "androidapp/src/org/appspot/apprtc/HudFragment.java",
      "androidapp/src/org/appspot/apprtc/PeerConnectionClient.java",
      "androidapp/src/org/appspot/apprtc/RoomParametersFetcher.java",
      "androidapp/src/org/appspot/apprtc/RtcEventLog.java",
      "androidapp/src/org/appspot/apprtc/SettingsActivity.java",
      "androidapp/src/org/appspot/apprtc/SettingsFragment.java",
      "androidapp/src/org/appspot/apprtc/TCPChannelClient.java",
      "androidapp/src/org/appspot/apprtc/UnhandledExceptionHandler.java",
      "androidapp/src/org/appspot/apprtc/WebSocketChannelClient.java",
      "androidapp/src/org/appspot/apprtc/WebSocketRTCClient.java",
      "androidapp/src/org/appspot/apprtc/util/AppRTCUtils.java",
      "androidapp/src/org/appspot/apprtc/util/AsyncHttpURLConnection.java",
    ]

    deps = [
      ":AppRTCMobile_resources",
      "../modules/audio_device:audio_device_java",
      "../rtc_base:base_java",
      "../sdk/android:libjingle_peerconnection_java",
      "../sdk/android:libjingle_peerconnection_metrics_default_java",
      "androidapp/third_party/autobanh:autobanh_java",
    ]
  }

  android_resources("AppRTCMobile_resources") {
    testonly = true
    resource_dirs = [ "androidapp/res" ]
    custom_package = "org.appspot.apprtc"
  }

  rtc_instrumentation_test_apk("AppRTCMobileTest") {
    apk_name = "AppRTCMobileTest"
    android_manifest = "androidtests/AndroidManifest.xml"

    java_files = [
      "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java",
    ]

    apk_under_test = ":AppRTCMobile"

    deps = [
      ":AppRTCMobile_javalib",
      "../sdk/android:libjingle_peerconnection_java",
      "//third_party/android_support_test_runner:runner_java",
      "//third_party/junit",
    ]
  }

  rtc_instrumentation_test_apk("AppRTCMobileTestStubbedVideoIO") {
    apk_name = "AppRTCMobileTestStubbedVideoIO"
    android_manifest = "androidtests/AndroidManifest.xml"

    java_files = [ "androidtests/src/org/appspot/apprtc/test/CallActivityStubbedInputOutputTest.java" ]

    apk_under_test = ":AppRTCMobile"

    deps = [
      ":AppRTCMobile_javalib",
      "../sdk/android:libjingle_peerconnection_java",
      "//third_party/android_support_test_runner:rules_java",
      "//third_party/android_support_test_runner:runner_java",
      "//third_party/espresso:espresso_all_java",
      "//third_party/hamcrest:hamcrest_java",
      "//third_party/junit",
    ]

    data = [
      "../build/android/adb_reverse_forwarder.py",
      "../examples/androidtests/video_quality_loopback_test.py",
      "../resources/reference_video_640x360_30fps.y4m",
      "../rtc_tools/barcode_tools/barcode_decoder.py",
      "../rtc_tools/barcode_tools/helper_functions.py",
      "../rtc_tools/compare_videos.py",
      "../rtc_tools/testing/prebuilt_apprtc.zip",
      "../rtc_tools/testing/golang/linux/go.tar.gz",
      "../rtc_tools/testing/build_apprtc.py",
      "../rtc_tools/testing/utils.py",
      "../tools_webrtc/video_quality_toolchain/linux/ffmpeg",
      "../tools_webrtc/video_quality_toolchain/linux/frame_analyzer",
      "../tools_webrtc/video_quality_toolchain/linux/zxing",
    ]
  }
}

if (is_ios || (is_mac && target_cpu != "x86")) {
  config("apprtc_common_config") {
    include_dirs = [ "objc/AppRTCMobile/common" ]
  }

  rtc_static_library("apprtc_common") {
    testonly = true
    sources = [
      "objc/AppRTCMobile/common/ARDUtilities.h",
      "objc/AppRTCMobile/common/ARDUtilities.m",
    ]
    public_configs = [ ":apprtc_common_config" ]

    if (is_ios) {
      deps = [
        "../sdk:framework_objc",
        "../system_wrappers:field_trial_default",
        "../system_wrappers:runtime_enabled_features_default",
      ]
    } else {
      deps = [
        "../sdk:common_objc",
        "../system_wrappers:field_trial_default",
        "../system_wrappers:metrics_default",
        "../system_wrappers:runtime_enabled_features_default",
      ]
    }
  }

  config("apprtc_signaling_config") {
    include_dirs = [ "objc/AppRTCMobile" ]

    # GN orders flags on a target before flags from configs. The default config
    # adds these flags so to cancel them out they need to come from a config and
    # cannot be on the target directly.
    cflags = [
      "-Wno-sign-compare",
      "-Wno-unused-variable",
    ]
  }

  rtc_static_library("apprtc_signaling") {
    testonly = true
    sources = [
      "objc/AppRTCMobile/ARDAppClient+Internal.h",
      "objc/AppRTCMobile/ARDAppClient.h",
      "objc/AppRTCMobile/ARDAppClient.m",
      "objc/AppRTCMobile/ARDAppEngineClient.h",
      "objc/AppRTCMobile/ARDAppEngineClient.m",
      "objc/AppRTCMobile/ARDBitrateTracker.h",
      "objc/AppRTCMobile/ARDBitrateTracker.m",
      "objc/AppRTCMobile/ARDCaptureController.h",
      "objc/AppRTCMobile/ARDCaptureController.m",
      "objc/AppRTCMobile/ARDJoinResponse+Internal.h",
      "objc/AppRTCMobile/ARDJoinResponse.h",
      "objc/AppRTCMobile/ARDJoinResponse.m",
      "objc/AppRTCMobile/ARDMessageResponse+Internal.h",
      "objc/AppRTCMobile/ARDMessageResponse.h",
      "objc/AppRTCMobile/ARDMessageResponse.m",
      "objc/AppRTCMobile/ARDRoomServerClient.h",
      "objc/AppRTCMobile/ARDSettingsModel+Private.h",
      "objc/AppRTCMobile/ARDSettingsModel.h",
      "objc/AppRTCMobile/ARDSettingsModel.m",
      "objc/AppRTCMobile/ARDSettingsStore.h",
      "objc/AppRTCMobile/ARDSettingsStore.m",
      "objc/AppRTCMobile/ARDSignalingChannel.h",
      "objc/AppRTCMobile/ARDSignalingMessage.h",
      "objc/AppRTCMobile/ARDSignalingMessage.m",
      "objc/AppRTCMobile/ARDStatsBuilder.h",
      "objc/AppRTCMobile/ARDStatsBuilder.m",
      "objc/AppRTCMobile/ARDTURNClient+Internal.h",
      "objc/AppRTCMobile/ARDTURNClient.h",
      "objc/AppRTCMobile/ARDTURNClient.m",
      "objc/AppRTCMobile/ARDWebSocketChannel.h",
      "objc/AppRTCMobile/ARDWebSocketChannel.m",
      "objc/AppRTCMobile/RTCIceCandidate+JSON.h",
      "objc/AppRTCMobile/RTCIceCandidate+JSON.m",
      "objc/AppRTCMobile/RTCIceServer+JSON.h",
      "objc/AppRTCMobile/RTCIceServer+JSON.m",
      "objc/AppRTCMobile/RTCMediaConstraints+JSON.h",
      "objc/AppRTCMobile/RTCMediaConstraints+JSON.m",
      "objc/AppRTCMobile/RTCSessionDescription+JSON.h",
      "objc/AppRTCMobile/RTCSessionDescription+JSON.m",
    ]
    public_configs = [ ":apprtc_signaling_config" ]
    deps = [
      ":apprtc_common",
      ":socketrocket",
    ]
    if (is_ios) {
      deps += [
        ":AppRTCMobile_ios_frameworks",
        "../sdk:framework_objc",
      ]
    } else {
      deps += [ "../sdk:peerconnectionfactory_base_objc" ]
    }
    libs = [ "QuartzCore.framework" ]
  }

  if (is_ios) {
    rtc_static_library("AppRTCMobile_lib") {
      testonly = true
      sources = [
        "objc/AppRTCMobile/ios/ARDAppDelegate.h",
        "objc/AppRTCMobile/ios/ARDAppDelegate.m",
        "objc/AppRTCMobile/ios/ARDFileCaptureController.h",
        "objc/AppRTCMobile/ios/ARDFileCaptureController.m",
        "objc/AppRTCMobile/ios/ARDMainView.h",
        "objc/AppRTCMobile/ios/ARDMainView.m",
        "objc/AppRTCMobile/ios/ARDMainViewController.h",
        "objc/AppRTCMobile/ios/ARDMainViewController.m",
        "objc/AppRTCMobile/ios/ARDSettingsViewController.h",
        "objc/AppRTCMobile/ios/ARDSettingsViewController.m",
        "objc/AppRTCMobile/ios/ARDStatsView.h",
        "objc/AppRTCMobile/ios/ARDStatsView.m",
        "objc/AppRTCMobile/ios/ARDVideoCallView.h",
        "objc/AppRTCMobile/ios/ARDVideoCallView.m",
        "objc/AppRTCMobile/ios/ARDVideoCallViewController.h",
        "objc/AppRTCMobile/ios/ARDVideoCallViewController.m",
        "objc/AppRTCMobile/ios/RTCVideoCodecInfo+HumanReadable.h",
        "objc/AppRTCMobile/ios/RTCVideoCodecInfo+HumanReadable.m",
        "objc/AppRTCMobile/ios/UIImage+ARDUtilities.h",
        "objc/AppRTCMobile/ios/UIImage+ARDUtilities.m",
      ]

      deps = [
        ":AppRTCMobile_ios_frameworks",
        ":apprtc_common",
        ":apprtc_signaling",
        "../sdk:framework_objc",
      ]
    }

    ios_app_bundle("AppRTCMobile") {
      testonly = true
      sources = [
        "objc/AppRTCMobile/ios/main.m",
      ]

      info_plist = "objc/AppRTCMobile/ios/Info.plist"

      configs += [ "..:common_config" ]
      public_configs = [ "..:common_inherited_config" ]

      deps = [
        ":AppRTCMobile_ios_bundle_data",
        ":AppRTCMobile_ios_frameworks",
        ":AppRTCMobile_lib",
        "../sdk:framework_objc",
      ]

      if (target_cpu == "x86") {
        deps += [ "//testing/iossim:iossim" ]
      }
    }

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

    bundle_data("AppRTCMobile_ios_bundle_data") {
      sources = [
        "objc/AppRTCMobile/ios/resources/Roboto-Regular.ttf",

        # Sample video taken from https://media.xiph.org/video/derf/
        "objc/AppRTCMobile/ios/resources/foreman.mp4",
        "objc/AppRTCMobile/ios/resources/iPhone5@2x.png",
        "objc/AppRTCMobile/ios/resources/iPhone6@2x.png",
        "objc/AppRTCMobile/ios/resources/iPhone6p@3x.png",
        "objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp.png",
        "objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp@2x.png",
        "objc/AppRTCMobile/ios/resources/ic_clear_black_24dp.png",
        "objc/AppRTCMobile/ios/resources/ic_clear_black_24dp@2x.png",
        "objc/AppRTCMobile/ios/resources/ic_settings_black_24dp.png",
        "objc/AppRTCMobile/ios/resources/ic_settings_black_24dp@2x.png",
        "objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp.png",
        "objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp@2x.png",
        "objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp.png",
        "objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp@2x.png",
        "objc/AppRTCMobile/ios/resources/mozart.mp3",
        "objc/Icon-120.png",
        "objc/Icon-180.png",
        "objc/Icon.png",
      ]
      outputs = [
        "{{bundle_resources_dir}}/{{source_file_part}}",
      ]
    }
  }

  if (is_mac) {
    rtc_static_library("AppRTCMobile_lib") {
      testonly = true
      sources = [
        "objc/AppRTCMobile/mac/APPRTCAppDelegate.h",
        "objc/AppRTCMobile/mac/APPRTCAppDelegate.m",
        "objc/AppRTCMobile/mac/APPRTCViewController.h",
        "objc/AppRTCMobile/mac/APPRTCViewController.m",
      ]
      configs += [ "..:common_objc" ]
      deps = [
        ":apprtc_common",
        ":apprtc_signaling",
        "../sdk:default_codec_factory_objc",
        "../sdk:metal_objc",
        "../sdk:ui_objc",
        "../sdk:videocodec_objc",
        "../sdk:videotoolbox_objc",
      ]
    }

    mac_app_bundle("AppRTCMobile") {
      testonly = true
      output_name = "AppRTCMobile"

      sources = [
        "objc/AppRTCMobile/mac/main.m",
      ]

      public_configs = [ "..:common_inherited_config" ]

      info_plist = "objc/AppRTCMobile/mac/Info.plist"

      libs = [ "AppKit.framework" ]

      deps = [
        ":AppRTCMobile_lib",
      ]
    }
  }

  config("socketrocket_include_config") {
    include_dirs = [ "objc/AppRTCMobile/third_party/SocketRocket" ]
  }

  config("socketrocket_warning_config") {
    # GN orders flags on a target before flags from configs. The default config
    # adds these flags so to cancel them out they need to come from a config and
    # cannot be on the target directly.
    cflags = [
      "-Wno-deprecated-declarations",
      "-Wno-nonnull",
      "-Wno-semicolon-before-method-body",
      "-Wno-unused-variable",
    ]

    cflags_objc = [
      # Enabled for cflags_objc in build/config/compiler/BUILD.gn.
      "-Wno-objc-missing-property-synthesis",
    ]
  }

  rtc_static_library("socketrocket") {
    testonly = true
    sources = [
      "objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.h",
      "objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m",
    ]
    configs += [ ":socketrocket_warning_config" ]
    public_configs = [ ":socketrocket_include_config" ]

    libs = [
      "CFNetwork.framework",
      "icucore",
    ]
  }

  if (rtc_include_tests) {
    # TODO(kthelgason): compile xctests on mac when chromium supports it.
    if (is_ios) {
      rtc_source_set("apprtcmobile_test_sources") {
        testonly = true
        include_dirs = [
          "objc/AppRTCMobile",
          "objc/AppRTCMobile/ios",
        ]
        testonly = true
        sources = [
          "objc/AppRTCMobile/tests/ARDAppClient_xctest.mm",
          "objc/AppRTCMobile/tests/ARDFileCaptureController_xctest.mm",
          "objc/AppRTCMobile/tests/ARDSettingsModel_xctest.mm",
        ]
        deps = [
          ":AppRTCMobile_ios_frameworks",
          ":AppRTCMobile_lib",
          "../rtc_base:rtc_base",
          "../sdk:framework_objc",
          "//build/config/ios:xctest",
          "//third_party/ocmock",
        ]
      }

      rtc_ios_xctest_test("apprtcmobile_tests") {
        info_plist = "objc/AppRTCMobile/ios/Info.plist"
        sources = [
          "objc/AppRTCMobile/ios/main.m",
        ]
        deps = [
          ":apprtcmobile_test_sources",
          "../sdk:framework_objc",
        ]
        ldflags = [ "-all_load" ]
      }
    }
  }
}

if (is_linux || is_win) {
  config("peerconnection_client_warnings_config") {
    cflags = []
    if (is_win && is_clang) {
      cflags += [
        # Disable warnings failing when compiling with Clang on Windows.
        # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
        "-Wno-format",

        # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6271
        # for -Wno-reorder and -Wno-sign-compare
        "-Wno-reorder",
        "-Wno-sign-compare",
      ]
    }
    if (is_linux && target_cpu == "x86") {
      cflags += [
        # Needed to compile on Linux 32-bit.
        "-Wno-sentinel",
      ]
    }

    if (is_clang) {
      # TODO(ehmaldonado): Make peerconnection_client compile with the standard
      # set of warnings.
      # See https://bugs.chromium.org/p/webrtc/issues/detail?id=6306
      cflags += [ "-Wno-inconsistent-missing-override" ]
    }
  }

  rtc_executable("peerconnection_client") {
    testonly = true
    sources = [
      "peerconnection/client/conductor.cc",
      "peerconnection/client/conductor.h",
      "peerconnection/client/defaults.cc",
      "peerconnection/client/defaults.h",
      "peerconnection/client/peer_connection_client.cc",
      "peerconnection/client/peer_connection_client.h",
    ]

    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 = [
      "../api:libjingle_peerconnection_api",
      "../api:video_frame_api_i420",
      "../rtc_base:checks",
      "../rtc_base:stringutils",
    ]
    if (is_win) {
      sources += [
        "peerconnection/client/flagdefs.h",
        "peerconnection/client/main.cc",
        "peerconnection/client/main_wnd.cc",
        "peerconnection/client/main_wnd.h",
      ]
      cflags = [ "/wd4245" ]
      configs += [ "//build/config/win:windowed" ]
      deps += [ "../media:rtc_media_base" ]
    }
    if (is_linux) {
      sources += [
        "peerconnection/client/linux/main.cc",
        "peerconnection/client/linux/main_wnd.cc",
        "peerconnection/client/linux/main_wnd.h",
      ]
      cflags = [ "-Wno-deprecated-declarations" ]
      libs = [
        "X11",
        "Xcomposite",
        "Xext",
        "Xrender",
      ]
      deps += [ "//build/config/linux/gtk" ]
    }
    configs += [ ":peerconnection_client_warnings_config" ]

    deps += [
      "../api:libjingle_peerconnection_api",
      "../api:libjingle_peerconnection_test_api",
      "../api:video_frame_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../media:rtc_audio_video",
      "../modules/video_capture:video_capture_module",
      "../pc:libjingle_peerconnection",
      "../rtc_base:rtc_base",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:rtc_json",
      "../system_wrappers:field_trial_default",
      "../system_wrappers:metrics_default",
      "../system_wrappers:runtime_enabled_features_default",
      "//third_party/libyuv",
    ]
  }

  rtc_executable("peerconnection_server") {
    testonly = true
    sources = [
      "peerconnection/server/data_socket.cc",
      "peerconnection/server/data_socket.h",
      "peerconnection/server/main.cc",
      "peerconnection/server/peer_channel.cc",
      "peerconnection/server/peer_channel.h",
      "peerconnection/server/utils.cc",
      "peerconnection/server/utils.h",
    ]
    deps = [
      "..:webrtc_common",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:stringutils",
      "../rtc_tools:command_line_parser",
    ]
    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_executable("relayserver") {
    testonly = true
    sources = [
      "relayserver/relayserver_main.cc",
    ]
    deps = [
      "../p2p:rtc_p2p",
      "../pc:rtc_pc",
      "../rtc_base:rtc_base",
      "../rtc_base:rtc_base_approved",
      "../system_wrappers:field_trial_default",
      "../system_wrappers:metrics_default",
      "../system_wrappers:runtime_enabled_features_default",
    ]
    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_executable("turnserver") {
    testonly = true
    sources = [
      "turnserver/turnserver_main.cc",
    ]
    deps = [
      "../p2p:rtc_p2p",
      "../pc:rtc_pc",
      "../rtc_base:rtc_base",
      "../rtc_base:rtc_base_approved",
      "../system_wrappers:field_trial_default",
      "../system_wrappers:metrics_default",
      "../system_wrappers:runtime_enabled_features_default",
    ]
    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_executable("stunserver") {
    testonly = true
    sources = [
      "stunserver/stunserver_main.cc",
    ]
    deps = [
      "../p2p:rtc_p2p",
      "../pc:rtc_pc",
      "../rtc_base:rtc_base",
      "../rtc_base:rtc_base_approved",
      "../system_wrappers:field_trial_default",
      "../system_wrappers:metrics_default",
      "../system_wrappers:runtime_enabled_features_default",
    ]
    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" ]
    }
  }
}

if (is_win || is_android) {
  rtc_shared_library("webrtc_unity_plugin") {
    testonly = true
    sources = [
      "unityplugin/simple_peer_connection.cc",
      "unityplugin/simple_peer_connection.h",
      "unityplugin/unity_plugin_apis.cc",
      "unityplugin/unity_plugin_apis.h",
      "unityplugin/video_observer.cc",
      "unityplugin/video_observer.h",
    ]

    if (is_android) {
      sources += [
        "unityplugin/classreferenceholder.cc",
        "unityplugin/classreferenceholder.h",
        "unityplugin/jni_onload.cc",
      ]
      suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ]
    }

    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" ]
    }
    if (is_win) {
      cflags = [ "/wd4245" ]
      configs += [
        "//build/config/win:windowed",
        ":peerconnection_client_warnings_config",
      ]
    }
    deps = [
      "../api:libjingle_peerconnection_api",
      "../api:libjingle_peerconnection_test_api",
      "../api:video_frame_api",
      "../api/audio_codecs:builtin_audio_decoder_factory",
      "../api/audio_codecs:builtin_audio_encoder_factory",
      "../media:rtc_audio_video",
      "../media:rtc_internal_video_codecs",
      "../media:rtc_media",
      "../media:rtc_media_base",
      "../modules/audio_device:audio_device",
      "../modules/audio_processing:audio_processing",
      "../modules/video_capture:video_capture_module",
      "../pc:libjingle_peerconnection",
      "../rtc_base:rtc_base",
      "../system_wrappers:field_trial_default",
      "../system_wrappers:metrics_default",
      "../system_wrappers:runtime_enabled_features_default",
    ]
    if (is_android) {
      deps += [ "../sdk/android:libjingle_peerconnection_jni" ]
    }
  }
}

if (is_android) {
  rtc_android_library("webrtc_unity_java") {
    java_files = [ "unityplugin/java/src/org/webrtc/UnityUtility.java" ]
    deps = [
      "../rtc_base:base_java",
      "../sdk/android:libjingle_peerconnection_java",
    ]
  }

  dist_jar("libwebrtc_unity") {
    _target_dir_name = get_label_info(":$target_name", "dir")
    output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar"
    direct_deps_only = true
    use_interface_jars = false
    use_unprocessed_jars = true
    requires_android = true
    deps = [
      ":webrtc_unity_java",
      "../modules/audio_device:audio_device_java",
      "../rtc_base:base_java",
      "../sdk/android:libjingle_peerconnection_java",
      "../sdk/android:libjingle_peerconnection_metrics_default_java",
    ]
  }
}

if (!build_with_chromium) {
  # Doesn't build within Chrome on Win.
  rtc_executable("stun_prober") {
    testonly = true
    sources = [
      "stunprober/main.cc",
    ]

    if (!build_with_chromium && is_clang) {
      # Suppress warnings from Chrome's Clang plugins.
      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }

    deps = [
      "../p2p:libstunprober",
      "../p2p:rtc_p2p",
      "../rtc_base:checks",
      "../rtc_base:rtc_base",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:stringutils",
      "../system_wrappers:field_trial_default",
    ]
  }
}
