# 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") import("//testing/test.gni") group("api") { deps = [ ":libjingle_peerconnection", ] } 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. } } source_set("libjingle_peerconnection") { cflags = [] sources = [ "audiotrack.cc", "audiotrack.h", "datachannel.cc", "datachannel.h", "datachannelinterface.h", "dtlsidentitystore.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", "mediastreamprovider.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", "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 += [ "..:common_config", ":libjingle_peerconnection_warnings_config", ] public_configs = [ "..:common_inherited_config" ] if (is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). configs -= [ "//build/config/clang:find_bad_constructs" ] } deps = [ "../call", "../media", "../pc", ] if (rtc_use_quic) { sources += [ "quicdatachannel.cc", "quicdatachannel.h", "quicdatatransport.cc", "quicdatatransport.h", ] deps += [ "//third_party/libquic" ] public_deps = [ "//third_party/libquic", ] } } # Exclude the targets below from the Chromium build since they cannot be built # due to incompability with Chromium's logging implementation. if (is_android && !build_with_chromium) { config("libjingle_peerconnection_jni_warnings_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. if (!is_win) { cflags = [ "-Wno-sign-compare", "-Wno-unused-variable", ] } } source_set("libjingle_peerconnection_jni") { sources = [ "androidvideocapturer.cc", "androidvideocapturer.h", "java/jni/androidmediacodeccommon.h", "java/jni/androidmediadecoder_jni.cc", "java/jni/androidmediadecoder_jni.h", "java/jni/androidmediaencoder_jni.cc", "java/jni/androidmediaencoder_jni.h", "java/jni/androidmetrics_jni.cc", "java/jni/androidnetworkmonitor_jni.cc", "java/jni/androidnetworkmonitor_jni.h", "java/jni/androidvideocapturer_jni.cc", "java/jni/androidvideocapturer_jni.h", "java/jni/classreferenceholder.cc", "java/jni/classreferenceholder.h", "java/jni/jni_helpers.cc", "java/jni/jni_helpers.h", "java/jni/native_handle_impl.cc", "java/jni/native_handle_impl.h", "java/jni/peerconnection_jni.cc", "java/jni/surfacetexturehelper_jni.cc", "java/jni/surfacetexturehelper_jni.h", ] configs += [ "..:common_config", ":libjingle_peerconnection_jni_warnings_config", ] public_configs = [ "..:common_inherited_config" ] if (is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). configs -= [ "//build/config/clang:extra_warnings", "//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. ] } deps = [ ":libjingle_peerconnection", "../system_wrappers:field_trial_default", "../system_wrappers:metrics_default", ] 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 = [ "-Wno-unused-function" ] } if (!is_win) { cflags = [ "-Wno-sign-compare" ] cflags_cc = [ "-Wno-overloaded-virtual" ] } } test("peerconnection_unittests") { testonly = true sources = [ "datachannel_unittest.cc", "dtmfsender_unittest.cc", "fakemetricsobserver.cc", "fakemetricsobserver.h", "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", "rtpsenderreceiver_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/mockpeerconnectionobservers.h", "test/peerconnectiontestwrapper.cc", "test/peerconnectiontestwrapper.h", "test/testsdpstrings.h", "videocapturertracksource_unittest.cc", "videotrack_unittest.cc", "webrtcsdp_unittest.cc", "webrtcsession_unittest.cc", ] defines = [ "HAVE_SCTP" ] configs += [ "..:common_config", ":peerconnection_unittests_config", ] public_configs = [ "..:common_inherited_config" ] if (is_clang) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). 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 += [ ":libjingle_peerconnection_jni", "//testing/android/native_test:native_test_support", ] } deps += [ ":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" ] } } }