blob: 7fbcb5dab2a5a2b411d717118a20d2c1293352a6 [file] [log] [blame]
# 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("../build/webrtc.gni")
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
group("api") {
public_deps = [
":libjingle_peerconnection",
]
}
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",
"../base:rtc_base_approved",
"../modules/audio_coding:audio_decoder_factory_interface",
"../modules/audio_coding:audio_encoder_interface",
]
}
config("libjingle_peerconnection_warnings_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.
if (!is_win && !is_clang) {
cflags = [ "-Wno-maybe-uninitialized" ] # Only exists for GCC.
}
}
rtc_static_library("libjingle_peerconnection") {
check_includes = false # TODO(kjellander): Remove (bugs.webrtc.org/6828)
cflags = []
sources = [
"audiotrack.cc",
"audiotrack.h",
"datachannel.cc",
"datachannel.h",
"datachannelinterface.h",
"dtmfsender.cc",
"dtmfsender.h",
"dtmfsenderinterface.h",
"jsep.h",
"jsepicecandidate.cc",
"jsepicecandidate.h",
"jsepsessiondescription.cc",
"jsepsessiondescription.h",
"localaudiosource.cc",
"localaudiosource.h",
"mediaconstraintsinterface.cc",
"mediaconstraintsinterface.h",
"mediacontroller.cc",
"mediacontroller.h",
"mediastream.cc",
"mediastream.h",
"mediastreaminterface.h",
"mediastreamobserver.cc",
"mediastreamobserver.h",
"mediastreamproxy.h",
"mediastreamtrack.h",
"mediastreamtrackproxy.h",
"notifier.h",
"peerconnection.cc",
"peerconnection.h",
"peerconnectionfactory.cc",
"peerconnectionfactory.h",
"peerconnectionfactoryproxy.h",
"peerconnectioninterface.h",
"peerconnectionproxy.h",
"proxy.h",
"remoteaudiosource.cc",
"remoteaudiosource.h",
"rtcstatscollector.cc",
"rtcstatscollector.h",
"rtpparameters.h",
"rtpreceiver.cc",
"rtpreceiver.h",
"rtpreceiverinterface.h",
"rtpsender.cc",
"rtpsender.h",
"rtpsenderinterface.h",
"sctputils.cc",
"sctputils.h",
"statscollector.cc",
"statscollector.h",
"statstypes.cc",
"statstypes.h",
"streamcollection.h",
"videocapturertracksource.cc",
"videocapturertracksource.h",
"videosourceproxy.h",
"videotrack.cc",
"videotrack.h",
"videotracksource.cc",
"videotracksource.h",
"webrtcsdp.cc",
"webrtcsdp.h",
"webrtcsession.cc",
"webrtcsession.h",
"webrtcsessiondescriptionfactory.cc",
"webrtcsessiondescriptionfactory.h",
]
configs += [ ":libjingle_peerconnection_warnings_config" ]
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 = [
":call_api",
":rtc_stats_api",
"../call",
"../media",
"../pc",
"../stats",
]
if (rtc_use_quic) {
sources += [
"quicdatachannel.cc",
"quicdatachannel.h",
"quicdatatransport.cc",
"quicdatatransport.h",
]
deps += [ "//third_party/libquic" ]
public_deps = [
"//third_party/libquic",
]
}
}
rtc_source_set("rtc_stats_api") {
cflags = []
sources = [
"stats/rtcstats.h",
"stats/rtcstats_objects.h",
"stats/rtcstatsreport.h",
]
deps = [
"../base:rtc_base_approved",
]
}
rtc_source_set("audio_mixer_api") {
sources = [
"audio/audio_mixer.h",
]
deps = [
"../base:rtc_base_approved",
]
}
rtc_source_set("transport_api") {
sources = [
"call/transport.h",
]
}
rtc_source_set("video_frame_api") {
sources = [
"video/video_rotation.h",
]
deps = [
"../base:rtc_base_approved",
]
# 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" ]
}
}
if (rtc_include_tests) {
config("peerconnection_unittests_config") {
# The warnings below are enabled by default. Since GN orders compiler flags
# for a target before flags from configs, the only way to disable such
# warnings is by having them in a separate config, loaded from the target.
# TODO(kjellander): Make the code compile without disabling these flags.
# See https://bugs.webrtc.org/3307.
if (is_clang && is_win) {
cflags = [
# See https://bugs.chromium.org/p/webrtc/issues/detail?id=6267
# for -Wno-sign-compare
"-Wno-sign-compare",
"-Wno-unused-function",
]
}
if (!is_win) {
cflags = [ "-Wno-sign-compare" ]
}
}
rtc_test("peerconnection_unittests") {
check_includes = false # TODO(kjellander): Remove (bugs.webrtc.org/6828)
testonly = true
sources = [
"datachannel_unittest.cc",
"dtmfsender_unittest.cc",
"jsepsessiondescription_unittest.cc",
"localaudiosource_unittest.cc",
"mediaconstraintsinterface_unittest.cc",
"mediastream_unittest.cc",
"peerconnection_unittest.cc",
"peerconnectionendtoend_unittest.cc",
"peerconnectionfactory_unittest.cc",
"peerconnectioninterface_unittest.cc",
"proxy_unittest.cc",
"rtcstats_integrationtest.cc",
"rtcstatscollector_unittest.cc",
"rtpsenderreceiver_unittest.cc",
"sctputils_unittest.cc",
"statscollector_unittest.cc",
"test/fakeaudiocapturemodule.cc",
"test/fakeaudiocapturemodule.h",
"test/fakeaudiocapturemodule_unittest.cc",
"test/fakeconstraints.h",
"test/fakedatachannelprovider.h",
"test/fakeperiodicvideocapturer.h",
"test/fakertccertificategenerator.h",
"test/fakevideotrackrenderer.h",
"test/mock_datachannel.h",
"test/mock_peerconnection.h",
"test/mock_webrtcsession.h",
"test/mockpeerconnectionobservers.h",
"test/peerconnectiontestwrapper.cc",
"test/peerconnectiontestwrapper.h",
"test/rtcstatsobtainer.h",
"test/testsdpstrings.h",
"videocapturertracksource_unittest.cc",
"videotrack_unittest.cc",
"webrtcsdp_unittest.cc",
"webrtcsession_unittest.cc",
]
if (rtc_enable_sctp) {
defines = [ "HAVE_SCTP" ]
}
configs += [ ":peerconnection_unittests_config" ]
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(jschuh): Bug 1348: fix this warning.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
if (is_win) {
cflags = [
"/wd4245", # conversion from int to size_t, signed/unsigned mismatch.
"/wd4389", # signed/unsigned mismatch.
]
}
if (rtc_use_quic) {
public_deps = [
"//third_party/libquic",
]
sources += [
"quicdatachannel_unittest.cc",
"quicdatatransport_unittest.cc",
]
}
deps = []
if (is_android) {
sources += [
"test/androidtestinitializer.cc",
"test/androidtestinitializer.h",
]
deps += [
"//testing/android/native_test:native_test_support",
"//webrtc/sdk/android:libjingle_peerconnection_java",
"//webrtc/sdk/android:libjingle_peerconnection_jni",
]
}
deps += [
":fakemetricsobserver",
":libjingle_peerconnection",
"..:webrtc_common",
"../base:rtc_base_tests_utils",
"../media:rtc_unittest_main",
"../pc:rtc_pc",
"../system_wrappers:metrics_default",
"//testing/gmock",
]
if (is_android) {
deps += [ "//testing/android/native_test:native_test_support" ]
shard_timeout = 900
}
}
rtc_source_set("mock_audio_mixer") {
testonly = true
sources = [
"test/mock_audio_mixer.h",
]
public_deps = [
":audio_mixer_api",
]
deps = [
"//testing/gmock",
"//webrtc/test:test_support",
]
}
rtc_source_set("fakemetricsobserver") {
testonly = true
sources = [
"fakemetricsobserver.cc",
"fakemetricsobserver.h",
]
deps = [
":libjingle_peerconnection",
"../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" ]
}
}
}