# 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.h", "datachannelinterface.h", "dtmfsenderinterface.h", "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.h", "rtcerror.cc", "rtcerror.h", "rtpparameters.cc", "rtpparameters.h", "rtpreceiverinterface.h", "rtpsenderinterface.h", "statstypes.cc", "statstypes.h", "turncustomizer.h", "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", ":mediastream_interface_and_implicit_video_frame_api", ":peerconnection_and_implicit_call_api", ] deps = [ # Basically, don't add stuff here. You might break sensitive downstream # targets like pnacl. API should not depend on anything, really. All these # should go away, in time. ":optional", ":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("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/7504. check_includes = false sources = [ "peerconnectioninterface.h", ] } rtc_source_set("mediastream_interface_and_implicit_video_frame_api") { # The mediastreaminterface.h file pulls in in video_frame.h, but the # system_wrappers dependency that comes with that breaks pnacl downstream. # TODO(phoglund): solve this (see bugs.webrtc.org/7504). check_includes = false sources = [ "mediastreaminterface.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 = [ "datachannel.h", "mediastream.h", "mediastreamtrack.h", "rtpsender.h", "streamcollection.h", "videotracksource.h", "webrtcsdp.h", ] } rtc_source_set("libjingle_logging_api") { sources = [ "rtceventlogoutput.h", ] } 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", ] } }