|  | # 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") { | 
|  | # Cannot have GN check enabled since that would introduce dependency cycles | 
|  | # TODO(kjellander): Remove (bugs.webrtc.org/7504) | 
|  | check_includes = false | 
|  | cflags = [] | 
|  | sources = [ | 
|  | "datachannel.h", | 
|  | "datachannelinterface.h", | 
|  | "dtmfsenderinterface.h", | 
|  | "jsep.h", | 
|  | "jsepicecandidate.h", | 
|  | "jsepsessiondescription.h", | 
|  | "mediaconstraintsinterface.cc", | 
|  | "mediaconstraintsinterface.h", | 
|  | "mediastream.h", | 
|  | "mediastreaminterface.cc", | 
|  | "mediastreaminterface.h", | 
|  | "mediastreamproxy.h", | 
|  | "mediastreamtrack.h", | 
|  | "mediastreamtrackproxy.h", | 
|  | "mediatypes.cc", | 
|  | "mediatypes.h", | 
|  | "notifier.h", | 
|  | "peerconnectionfactoryproxy.h", | 
|  | "peerconnectioninterface.h", | 
|  | "peerconnectionproxy.h", | 
|  | "proxy.h", | 
|  | "rtcerror.cc", | 
|  | "rtcerror.h", | 
|  | "rtpparameters.cc", | 
|  | "rtpparameters.h", | 
|  | "rtpreceiverinterface.h", | 
|  | "rtpsender.h", | 
|  | "rtpsenderinterface.h", | 
|  | "statstypes.cc", | 
|  | "statstypes.h", | 
|  | "streamcollection.h", | 
|  | "umametrics.h", | 
|  | "videosourceproxy.h", | 
|  | "videotracksource.h", | 
|  | "webrtcsdp.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 = [ | 
|  | ":rtc_stats_api", | 
|  | "..:webrtc_common", | 
|  | "../rtc_base:rtc_base", | 
|  | "../rtc_base:rtc_base_approved", | 
|  | "audio_codecs:audio_codecs_api", | 
|  | ] | 
|  |  | 
|  | # This is needed until bugs.webrtc.org/7504 is removed so this target can | 
|  | # properly depend on ../media:rtc_media_base | 
|  | # TODO(kjellander): Remove this dependency. | 
|  | if (is_nacl) { | 
|  | deps += [ "//native_client_sdk/src/libraries/nacl_io" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | rtc_source_set("ortc_api") { | 
|  | check_includes = false  # TODO(deadbeef): Remove (bugs.webrtc.org/6828) | 
|  | 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. | 
|  | public_deps = [ | 
|  | ":libjingle_peerconnection_api", | 
|  | ] | 
|  | 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" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | # TODO(ossu): Remove once downstream projects have updated. | 
|  | rtc_source_set("libjingle_peerconnection") { | 
|  | public_deps = [ | 
|  | "../pc:libjingle_peerconnection", | 
|  | ] | 
|  | } | 
|  |  | 
|  | rtc_source_set("rtc_stats_api") { | 
|  | cflags = [] | 
|  | sources = [ | 
|  | "stats/rtcstats.h", | 
|  | "stats/rtcstats_objects.h", | 
|  | "stats/rtcstatscollectorcallback.h", | 
|  | "stats/rtcstatsreport.h", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | "../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/i420_buffer.cc", | 
|  | "video/i420_buffer.h", | 
|  | "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:rtc_base_approved", | 
|  | "../system_wrappers", | 
|  | ] | 
|  |  | 
|  | # TODO(nisse): This logic is duplicated in multiple places. | 
|  | # Define in a single place. | 
|  | if (rtc_build_libyuv) { | 
|  | deps += [ "$rtc_libyuv_dir" ] | 
|  | public_deps = [ | 
|  | "$rtc_libyuv_dir", | 
|  | ] | 
|  | } else { | 
|  | # Need to add a directory normally exported by libyuv. | 
|  | include_dirs = [ "$rtc_libyuv_dir/include" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | rtc_source_set("array_view") { | 
|  | sources = [ | 
|  | "array_view.h", | 
|  | ] | 
|  | deps = [ | 
|  | "../rtc_base:rtc_base_approved", | 
|  | ] | 
|  | } | 
|  |  | 
|  | rtc_source_set("optional") { | 
|  | sources = [ | 
|  | "optional.cc", | 
|  | "optional.h", | 
|  | ] | 
|  | deps = [ | 
|  | ":array_view", | 
|  | "../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("fakemetricsobserver") { | 
|  | testonly = true | 
|  | sources = [ | 
|  | "fakemetricsobserver.cc", | 
|  | "fakemetricsobserver.h", | 
|  | ] | 
|  | deps = [ | 
|  | ":libjingle_peerconnection_api", | 
|  | "../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 | 
|  |  | 
|  | # Skip restricting visibility on mobile platforms since the tests on those | 
|  | # gets additional generated targets which would require many lines here to | 
|  | # cover (which would be confusing to read and hard to maintain). | 
|  | if (!is_android && !is_ios) { | 
|  | visibility = [ "..:rtc_unittests" ] | 
|  | } | 
|  | 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", | 
|  | ":optional", | 
|  | ":ortc_api", | 
|  | "../rtc_base:rtc_base_approved", | 
|  | "../rtc_base:rtc_base_tests_utils", | 
|  | "../test:test_support", | 
|  | ] | 
|  | } | 
|  | } |