# Copyright (c) 2015 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")
}

group("api") {
  public_deps = [
    ":libjingle_peerconnection_api",
  ]
}

rtc_source_set("call_api") {
  sources = [
    "call/audio_sink.h",
  ]

  deps = [
    # TODO(kjellander): Add remaining dependencies when webrtc:4243 is done.
    ":audio_mixer_api",
    ":transport_api",
    "..:webrtc_common",
    "../rtc_base:rtc_base_approved",
    "audio_codecs:audio_codecs_api",
  ]
}

rtc_static_library("libjingle_peerconnection_api") {
  cflags = []
  sources = [
    "candidate.cc",
    "candidate.h",
    "cryptoparams.h",
    "datachannelinterface.h",
    "dtmfsenderinterface.h",
    "jsep.cc",
    "jsep.h",
    "jsepicecandidate.h",
    "jsepsessiondescription.h",
    "mediaconstraintsinterface.cc",
    "mediaconstraintsinterface.h",
    "mediastreaminterface.cc",
    "mediastreamproxy.h",
    "mediastreamtrackproxy.h",
    "mediatypes.cc",
    "mediatypes.h",
    "notifier.h",
    "peerconnectionfactoryproxy.h",
    "peerconnectionproxy.h",
    "proxy.cc",
    "proxy.h",
    "rtcerror.cc",
    "rtcerror.h",
    "rtp_headers.cc",
    "rtp_headers.h",
    "rtpparameters.cc",
    "rtpparameters.h",
    "rtpreceiverinterface.h",
    "rtpsenderinterface.h",
    "rtptransceiverinterface.h",
    "setremotedescriptionobserverinterface.h",
    "statstypes.cc",
    "statstypes.h",
    "turncustomizer.h",
    "umametrics.cc",
    "umametrics.h",
    "videosourceproxy.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" ]
  }

  public_deps = [
    ":libjingle_api_deprecated_headers",
    ":peerconnection_and_implicit_call_api",
  ]

  deps = [
    ":array_view",
    ":optional",
    ":rtc_stats_api",
    ":video_frame_api",
    "audio_codecs:audio_codecs_api",

    # Basically, don't add stuff here. You might break sensitive downstream
    # targets like pnacl. API should not depend on anything outside of this
    # file, really. All these should arguably go away in time.
    "..:typedefs",
    "..:webrtc_common",
    "../modules/audio_processing:audio_processing_statistics",
    "../rtc_base:checks",
    "../rtc_base:deprecation",
    "../rtc_base:rtc_base",
    "../rtc_base:rtc_base_approved",
    "../rtc_base:stringutils",
  ]
  if (is_nacl) {
    # This is needed by .h files included from rtc_base.
    deps += [ "//native_client_sdk/src/libraries/nacl_io" ]
  }
}

rtc_source_set("peerconnection_and_implicit_call_api") {
  # The peerconnectioninterface.h file pulls in call/callfactoryinterface.h
  # and the entire call module with it. We need to either get rid of this
  # dependency or pull most of call/ into the API. For now, silence the warnings
  # this creates since it creates a circular dependency (call very much depends
  # on API). See bugs.webrtc.org/8667.
  check_includes = false
  sources = [
    "peerconnectioninterface.h",
  ]
}

rtc_source_set("libjingle_api_deprecated_headers") {
  # We need to include headers from undeclared targets here, since they cause
  # circular dependencies. These deprecated headers are going away anyway.
  # See http://bugs.webrtc.org/5883.
  check_includes = false
  sources = [
    "mediastreamtrack.h",
    "videotracksource.h",
    "webrtcsdp.h",
  ]
}

rtc_source_set("libjingle_logging_api") {
  sources = [
    "rtceventlogoutput.h",
  ]
}

rtc_source_set("ortc_api") {
  sources = [
    "ortc/mediadescription.cc",
    "ortc/mediadescription.h",
    "ortc/ortcfactoryinterface.h",
    "ortc/ortcrtpreceiverinterface.h",
    "ortc/ortcrtpsenderinterface.h",
    "ortc/packettransportinterface.h",
    "ortc/rtptransportcontrollerinterface.h",
    "ortc/rtptransportinterface.h",
    "ortc/sessiondescription.cc",
    "ortc/sessiondescription.h",
    "ortc/srtptransportinterface.h",
    "ortc/udptransportinterface.h",
  ]

  # For mediastreaminterface.h, etc.
  # TODO(deadbeef): Create a separate target for the common things ORTC and
  # PeerConnection code shares, so that ortc_api can depend on that instead of
  # libjingle_peerconnection_api.
  deps = [
    ":libjingle_peerconnection_api",
    ":optional",
    "..:webrtc_common",
    "../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_source_set("rtc_stats_api") {
  cflags = []
  sources = [
    "stats/rtcstats.h",
    "stats/rtcstats_objects.h",
    "stats/rtcstatscollectorcallback.h",
    "stats/rtcstatsreport.h",
  ]

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

rtc_source_set("audio_mixer_api") {
  sources = [
    "audio/audio_mixer.h",
  ]

  deps = [
    "../modules:module_api",
    "../rtc_base:rtc_base_approved",
  ]
}

rtc_source_set("transport_api") {
  sources = [
    "call/transport.h",
  ]
}

rtc_source_set("video_frame_api") {
  sources = [
    "video/video_content_type.cc",
    "video/video_content_type.h",
    "video/video_frame.cc",
    "video/video_frame.h",
    "video/video_frame_buffer.cc",
    "video/video_frame_buffer.h",
    "video/video_rotation.h",
    "video/video_timing.cc",
    "video/video_timing.h",
  ]

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

rtc_source_set("video_frame_api_i420") {
  sources = [
    "video/i420_buffer.cc",
    "video/i420_buffer.h",
  ]
  deps = [
    ":video_frame_api",
    "../rtc_base:checks",
    "../rtc_base:rtc_base",
    "../system_wrappers",
    "//third_party/libyuv",
  ]
}

rtc_source_set("array_view") {
  sources = [
    "array_view.h",
  ]
  deps = [
    "../rtc_base:checks",
    "../rtc_base:type_traits",
  ]
}

rtc_source_set("optional") {
  sources = [
    "optional.cc",
    "optional.h",
  ]
  deps = [
    ":array_view",
    "../rtc_base:checks",
    "../rtc_base:sanitizer",
  ]
}

rtc_source_set("refcountedbase") {
  sources = [
    "refcountedbase.h",
  ]
  deps = [
    "../rtc_base:rtc_base_approved",
  ]
}

rtc_source_set("libjingle_peerconnection_test_api") {
  testonly = true
  sources = [
    "test/fakeconstraints.h",
  ]

  public_deps = [
    ":libjingle_peerconnection_api",
  ]

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

if (rtc_include_tests) {
  rtc_source_set("mock_audio_mixer") {
    testonly = true
    sources = [
      "test/mock_audio_mixer.h",
    ]

    public_deps = [
      ":audio_mixer_api",
    ]

    deps = [
      "../test:test_support",
      "//testing/gmock",
    ]
  }

  rtc_source_set("mock_rtp") {
    testonly = true
    sources = [
      "test/mock_rtpreceiver.h",
      "test/mock_rtpsender.h",
    ]

    deps = [
      ":libjingle_peerconnection_api",
      "../test:test_support",
      "//testing/gmock",
    ]
  }

  rtc_source_set("mock_video_codec_factory") {
    testonly = true
    sources = [
      "test/mock_video_decoder_factory.h",
      "test/mock_video_encoder_factory.h",
    ]

    public_deps = [
      "../api/video_codecs:video_codecs_api",
    ]

    deps = [
      "../test:test_support",
      "//testing/gmock",
    ]
  }

  rtc_source_set("fakemetricsobserver") {
    testonly = true
    sources = [
      "fakemetricsobserver.cc",
      "fakemetricsobserver.h",
    ]
    deps = [
      ":libjingle_peerconnection_api",
      "../api:peerconnection_and_implicit_call_api",
      "../media:rtc_media_base",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_approved",
    ]
    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_source_set("rtc_api_unittests") {
    testonly = true

    sources = [
      "array_view_unittest.cc",
      "optional_unittest.cc",
      "ortc/mediadescription_unittest.cc",
      "ortc/sessiondescription_unittest.cc",
      "rtcerror_unittest.cc",
      "rtpparameters_unittest.cc",
    ]

    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 = [
      ":array_view",
      ":libjingle_peerconnection_api",
      ":libjingle_peerconnection_test_api",
      ":optional",
      ":ortc_api",
      "../rtc_base:checks",
      "../rtc_base:rtc_base_approved",
      "../rtc_base:rtc_base_tests_utils",
      "../test:test_support",
    ]
  }
}
