These parts were commented out to avoid breaking the Chromium WebRTC FYI bots. Include them in the WebRTC build to make our bots build as many as possible of our GN targets. BUG=webrtc:5949 NOTRY=True TBR=phoglund@webrtc.org Review-Url: https://codereview.webrtc.org/2054903002 Cr-Commit-Position: refs/heads/master@{#13097}
606 lines
16 KiB
Plaintext
606 lines
16 KiB
Plaintext
# Copyright (c) 2014 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.
|
|
|
|
# TODO(kjellander): Rebase this to webrtc/build/common.gypi changes after r6330.
|
|
|
|
import("//build/config/linux/pkg_config.gni")
|
|
import("//build/config/sanitizers/sanitizers.gni")
|
|
import("build/webrtc.gni")
|
|
import("//testing/test.gni")
|
|
import("//third_party/protobuf/proto_library.gni")
|
|
|
|
# Contains the defines and includes in common.gypi that are duplicated both as
|
|
# target_defaults and direct_dependent_settings.
|
|
config("common_inherited_config") {
|
|
defines = []
|
|
if (build_with_mozilla) {
|
|
defines += [ "WEBRTC_MOZILLA_BUILD" ]
|
|
}
|
|
if (build_with_chromium) {
|
|
defines = [
|
|
# TODO(kjellander): Cleanup unused ones and move defines closer to
|
|
# the source when webrtc:4256 is completed.
|
|
"FEATURE_ENABLE_SSL",
|
|
"FEATURE_ENABLE_VOICEMAIL",
|
|
"EXPAT_RELATIVE_PATH",
|
|
"GTEST_RELATIVE_PATH",
|
|
"NO_MAIN_THREAD_WRAPPING",
|
|
"NO_SOUND_SYSTEM",
|
|
"WEBRTC_CHROMIUM_BUILD",
|
|
]
|
|
include_dirs = [
|
|
# The overrides must be included first as that is the mechanism for
|
|
# selecting the override headers in Chromium.
|
|
"../webrtc_overrides",
|
|
|
|
# Allow includes to be prefixed with webrtc/ in case it is not an
|
|
# immediate subdirectory of the top-level.
|
|
"..",
|
|
]
|
|
}
|
|
if (is_posix) {
|
|
defines += [ "WEBRTC_POSIX" ]
|
|
}
|
|
if (is_ios) {
|
|
defines += [
|
|
"WEBRTC_MAC",
|
|
"WEBRTC_IOS",
|
|
]
|
|
}
|
|
if (is_ios && rtc_use_objc_h264) {
|
|
defines += [ "WEBRTC_OBJC_H264" ]
|
|
}
|
|
if (is_linux) {
|
|
defines += [ "WEBRTC_LINUX" ]
|
|
}
|
|
if (is_mac) {
|
|
defines += [ "WEBRTC_MAC" ]
|
|
}
|
|
if (is_win) {
|
|
defines += [
|
|
"WEBRTC_WIN",
|
|
"_CRT_SECURE_NO_WARNINGS", # Suppress warnings about _vsnprinf
|
|
]
|
|
}
|
|
if (is_android) {
|
|
defines += [
|
|
"WEBRTC_LINUX",
|
|
"WEBRTC_ANDROID",
|
|
]
|
|
}
|
|
if (is_chromeos) {
|
|
defines += [ "CHROMEOS" ]
|
|
}
|
|
|
|
# TODO(GYP): Support these in GN.
|
|
# if (is_bsd) {
|
|
# defines += [ "BSD" ]
|
|
# }
|
|
# if (is_openbsd) {
|
|
# defines += [ "OPENBSD" ]
|
|
# }
|
|
# if (is_freebsd) {
|
|
# defines += [ "FREEBSD" ]
|
|
# }
|
|
}
|
|
|
|
if (rtc_have_dbus_glib) {
|
|
pkg_config("dbus-glib") {
|
|
packages = [ "dbus-glib-1" ]
|
|
}
|
|
}
|
|
|
|
config("common_config") {
|
|
cflags = []
|
|
cflags_cc = []
|
|
defines = []
|
|
|
|
if (rtc_restrict_logging) {
|
|
defines += [ "WEBRTC_RESTRICT_LOGGING" ]
|
|
}
|
|
|
|
if (rtc_have_dbus_glib) {
|
|
defines += [ "HAVE_DBUS_GLIB" ]
|
|
|
|
# TODO(kjellander): Investigate this, it seems like include <dbus/dbus.h>
|
|
# is still not found even if the execution of
|
|
# build/config/linux/pkg-config.py dbus-glib-1 returns correct include
|
|
# dirs on Linux.
|
|
all_dependent_configs = [ "dbus-glib" ]
|
|
}
|
|
|
|
if (rtc_relative_path) {
|
|
defines += [ "EXPAT_RELATIVE_PATH" ]
|
|
}
|
|
|
|
if (build_with_chromium) {
|
|
defines += [
|
|
# NOTICE: Since common_inherited_config is used in public_configs for our
|
|
# targets, there's no point including the defines in that config here.
|
|
# TODO(kjellander): Cleanup unused ones and move defines closer to the
|
|
# source when webrtc:4256 is completed.
|
|
"ENABLE_EXTERNAL_AUTH",
|
|
"HAVE_OPENSSL_SSL_H",
|
|
"HAVE_SCTP",
|
|
"HAVE_SRTP",
|
|
"HAVE_WEBRTC_VIDEO",
|
|
"HAVE_WEBRTC_VOICE",
|
|
"LOGGING_INSIDE_WEBRTC",
|
|
"SRTP_RELATIVE_PATH",
|
|
"SSL_USE_OPENSSL",
|
|
"USE_WEBRTC_DEV_BRANCH",
|
|
]
|
|
} else {
|
|
if (is_posix) {
|
|
# -Wextra is currently disabled in Chromium"s common.gypi. Enable
|
|
# for targets that can handle it. For Android/arm64 right now
|
|
# there will be an "enumeral and non-enumeral type in conditional
|
|
# expression" warning in android_tools/ndk_experimental"s version
|
|
# of stlport.
|
|
# See: https://code.google.com/p/chromium/issues/detail?id=379699
|
|
if (current_cpu != "arm64" || !is_android) {
|
|
cflags = [
|
|
"-Wextra",
|
|
|
|
# We need to repeat some flags from Chromium"s common.gypi
|
|
# here that get overridden by -Wextra.
|
|
"-Wno-unused-parameter",
|
|
"-Wno-missing-field-initializers",
|
|
"-Wno-strict-overflow",
|
|
]
|
|
cflags_cc = [
|
|
"-Wnon-virtual-dtor",
|
|
|
|
# This is enabled for clang; enable for gcc as well.
|
|
"-Woverloaded-virtual",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (is_clang) {
|
|
cflags += [
|
|
"-Wimplicit-fallthrough",
|
|
"-Wthread-safety",
|
|
"-Winconsistent-missing-override",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (rtc_enable_libevent) {
|
|
defines += [ "WEBRTC_BUILD_LIBEVENT" ]
|
|
}
|
|
|
|
if (current_cpu == "arm64") {
|
|
defines += [ "WEBRTC_ARCH_ARM64" ]
|
|
defines += [ "WEBRTC_HAS_NEON" ]
|
|
}
|
|
|
|
if (current_cpu == "arm") {
|
|
defines += [ "WEBRTC_ARCH_ARM" ]
|
|
if (arm_version >= 7) {
|
|
defines += [ "WEBRTC_ARCH_ARM_V7" ]
|
|
if (arm_use_neon) {
|
|
defines += [ "WEBRTC_HAS_NEON" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (current_cpu == "mipsel") {
|
|
defines += [ "MIPS32_LE" ]
|
|
if (mips_float_abi == "hard") {
|
|
defines += [ "MIPS_FPU_LE" ]
|
|
}
|
|
if (mips_arch_variant == "r2") {
|
|
defines += [ "MIPS32_R2_LE" ]
|
|
}
|
|
if (mips_dsp_rev == 1) {
|
|
defines += [ "MIPS_DSP_R1_LE" ]
|
|
} else if (mips_dsp_rev == 2) {
|
|
defines += [
|
|
"MIPS_DSP_R1_LE",
|
|
"MIPS_DSP_R2_LE",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (is_android && !is_clang) {
|
|
# The Android NDK doesn"t provide optimized versions of these
|
|
# functions. Ensure they are disabled for all compilers.
|
|
cflags += [
|
|
"-fno-builtin-cos",
|
|
"-fno-builtin-sin",
|
|
"-fno-builtin-cosf",
|
|
"-fno-builtin-sinf",
|
|
]
|
|
}
|
|
|
|
if (use_libfuzzer || use_drfuzz) {
|
|
# Used in Chromium's overrides to disable logging
|
|
defines += [ "WEBRTC_UNSAFE_FUZZER_MODE" ]
|
|
}
|
|
}
|
|
|
|
config("common_objc") {
|
|
cflags = [ "-Wobjc-missing-property-synthesis" ]
|
|
|
|
precompiled_header = "sdk/objc/WebRTC-Prefix.pch"
|
|
precompiled_source = "sdk/objc/WebRTC-Prefix.pch"
|
|
}
|
|
|
|
source_set("webrtc") {
|
|
sources = [
|
|
"call.h",
|
|
"config.h",
|
|
"transport.h",
|
|
]
|
|
|
|
defines = []
|
|
configs += [ ":common_config" ]
|
|
public_configs = [ ":common_inherited_config" ]
|
|
|
|
deps = [
|
|
":webrtc_common",
|
|
"audio",
|
|
"base:rtc_base",
|
|
"call",
|
|
"common_audio",
|
|
"common_video",
|
|
"modules/audio_coding",
|
|
"modules/audio_conference_mixer",
|
|
"modules/audio_device",
|
|
"modules/audio_processing",
|
|
"modules/bitrate_controller",
|
|
"modules/desktop_capture",
|
|
"modules/media_file",
|
|
"modules/rtp_rtcp",
|
|
"modules/utility",
|
|
"modules/video_coding",
|
|
"modules/video_processing",
|
|
"system_wrappers",
|
|
"tools",
|
|
"video",
|
|
"voice_engine",
|
|
]
|
|
|
|
if (build_with_chromium) {
|
|
deps += [ "modules/video_capture" ]
|
|
} else {
|
|
# TODO(kjellander): Enable for Chromium as well when bugs.webrtc.org/4256 is
|
|
# fixed. Right now it's not possible due to circular dependencies.
|
|
deps += [
|
|
"api",
|
|
"media",
|
|
"p2p",
|
|
"pc",
|
|
]
|
|
}
|
|
|
|
if (rtc_enable_protobuf) {
|
|
defines += [ "ENABLE_RTC_EVENT_LOG" ]
|
|
deps += [ ":rtc_event_log_proto" ]
|
|
}
|
|
}
|
|
|
|
if (!build_with_chromium) {
|
|
executable("webrtc_tests") {
|
|
testonly = true
|
|
deps = [
|
|
":webrtc",
|
|
"modules/video_capture:video_capture_internal_impl",
|
|
"test",
|
|
]
|
|
}
|
|
}
|
|
|
|
source_set("webrtc_common") {
|
|
sources = [
|
|
"audio_sink.h",
|
|
"common_types.cc",
|
|
"common_types.h",
|
|
"config.cc",
|
|
"config.h",
|
|
"engine_configurations.h",
|
|
"typedefs.h",
|
|
]
|
|
|
|
configs += [ ":common_config" ]
|
|
public_configs = [ ":common_inherited_config" ]
|
|
|
|
if (is_clang && !is_nacl) {
|
|
# Suppress warnings from Chrome's Clang plugins.
|
|
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
|
|
configs -= [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
}
|
|
|
|
if (rtc_enable_protobuf) {
|
|
proto_library("rtc_event_log_proto") {
|
|
sources = [
|
|
"call/rtc_event_log.proto",
|
|
]
|
|
proto_out_dir = "webrtc/call"
|
|
}
|
|
}
|
|
|
|
source_set("rtc_event_log") {
|
|
sources = [
|
|
"call/rtc_event_log.cc",
|
|
"call/rtc_event_log.h",
|
|
"call/rtc_event_log_helper_thread.cc",
|
|
"call/rtc_event_log_helper_thread.h",
|
|
]
|
|
|
|
defines = []
|
|
configs += [ ":common_config" ]
|
|
public_configs = [ ":common_inherited_config" ]
|
|
|
|
deps = [
|
|
":webrtc_common",
|
|
]
|
|
|
|
if (rtc_enable_protobuf) {
|
|
defines += [ "ENABLE_RTC_EVENT_LOG" ]
|
|
deps += [ ":rtc_event_log_proto" ]
|
|
}
|
|
if (is_clang && !is_nacl) {
|
|
# Suppress warnings from Chrome's Clang plugins.
|
|
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
|
|
configs -= [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
}
|
|
|
|
if (rtc_enable_protobuf) {
|
|
source_set("rtc_event_log_parser") {
|
|
sources = [
|
|
"call/rtc_event_log_parser.cc",
|
|
"call/rtc_event_log_parser.h",
|
|
]
|
|
|
|
configs += [ ":common_config" ]
|
|
public_configs = [ ":common_inherited_config" ]
|
|
|
|
deps = [
|
|
":rtc_event_log_proto",
|
|
":webrtc_common",
|
|
]
|
|
|
|
if (is_clang && !is_nacl) {
|
|
# Suppress warnings from Chrome's Clang plugins.
|
|
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
|
|
configs -= [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
if (use_libfuzzer || use_drfuzz) {
|
|
# This target is only here for gn to discover fuzzer build targets under
|
|
# webrtc/test/fuzzers/.
|
|
group("webrtc_fuzzers_dummy") {
|
|
testonly = true
|
|
deps = [
|
|
"test/fuzzers:webrtc_fuzzer_main",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (rtc_include_tests) {
|
|
config("rtc_unittests_config") {
|
|
# GN orders flags on a target before flags from configs. The default config
|
|
# adds -Wall, and this flag have to be after -Wall -- so they need to
|
|
# come from a config and can"t be on the target directly.
|
|
if (is_clang) {
|
|
cflags = [
|
|
"-Wno-missing-braces",
|
|
"-Wno-sign-compare",
|
|
"-Wno-unused-const-variable",
|
|
]
|
|
}
|
|
}
|
|
|
|
test("rtc_unittests") {
|
|
testonly = true
|
|
sources = [
|
|
"base/array_view_unittest.cc",
|
|
"base/atomicops_unittest.cc",
|
|
"base/autodetectproxy_unittest.cc",
|
|
"base/bandwidthsmoother_unittest.cc",
|
|
"base/base64_unittest.cc",
|
|
"base/basictypes_unittest.cc",
|
|
"base/bind_unittest.cc",
|
|
"base/bitbuffer_unittest.cc",
|
|
"base/buffer_unittest.cc",
|
|
"base/bufferqueue_unittest.cc",
|
|
"base/bytebuffer_unittest.cc",
|
|
"base/byteorder_unittest.cc",
|
|
"base/callback_unittest.cc",
|
|
"base/copyonwritebuffer_unittest.cc",
|
|
"base/crc32_unittest.cc",
|
|
"base/criticalsection_unittest.cc",
|
|
"base/event_tracer_unittest.cc",
|
|
"base/event_unittest.cc",
|
|
"base/exp_filter_unittest.cc",
|
|
"base/fakeclock.cc",
|
|
"base/fakeclock.h",
|
|
"base/filerotatingstream_unittest.cc",
|
|
"base/fileutils_unittest.cc",
|
|
"base/helpers_unittest.cc",
|
|
"base/httpbase_unittest.cc",
|
|
"base/httpcommon_unittest.cc",
|
|
"base/httpserver_unittest.cc",
|
|
"base/ipaddress_unittest.cc",
|
|
"base/logging_unittest.cc",
|
|
"base/md5digest_unittest.cc",
|
|
"base/messagedigest_unittest.cc",
|
|
"base/messagequeue_unittest.cc",
|
|
"base/mod_ops_unittest.cc",
|
|
"base/multipart_unittest.cc",
|
|
"base/nat_unittest.cc",
|
|
"base/network_unittest.cc",
|
|
"base/onetimeevent_unittest.cc",
|
|
"base/optional_unittest.cc",
|
|
"base/optionsfile_unittest.cc",
|
|
"base/pathutils_unittest.cc",
|
|
"base/platform_thread_unittest.cc",
|
|
"base/profiler_unittest.cc",
|
|
"base/proxy_unittest.cc",
|
|
"base/proxydetect_unittest.cc",
|
|
"base/random_unittest.cc",
|
|
"base/rate_statistics_unittest.cc",
|
|
"base/ratelimiter_unittest.cc",
|
|
"base/ratetracker_unittest.cc",
|
|
"base/referencecountedsingletonfactory_unittest.cc",
|
|
"base/rollingaccumulator_unittest.cc",
|
|
"base/rtccertificate_unittest.cc",
|
|
"base/rtccertificategenerator_unittest.cc",
|
|
"base/scopedptrcollection_unittest.cc",
|
|
"base/sha1digest_unittest.cc",
|
|
"base/sharedexclusivelock_unittest.cc",
|
|
"base/signalthread_unittest.cc",
|
|
"base/sigslot_unittest.cc",
|
|
"base/sigslottester.h",
|
|
"base/sigslottester.h.pump",
|
|
"base/stream_unittest.cc",
|
|
"base/stringencode_unittest.cc",
|
|
"base/stringutils_unittest.cc",
|
|
"base/swap_queue_unittest.cc",
|
|
|
|
# TODO(ronghuawu): Reenable this test.
|
|
# "systeminfo_unittest.cc",
|
|
"base/task_queue_unittest.cc",
|
|
"base/task_unittest.cc",
|
|
"base/testclient_unittest.cc",
|
|
"base/thread_checker_unittest.cc",
|
|
"base/thread_unittest.cc",
|
|
"base/timedelta.h",
|
|
"base/timeutils_unittest.cc",
|
|
"base/urlencode_unittest.cc",
|
|
"base/versionparsing_unittest.cc",
|
|
|
|
# TODO(ronghuawu): Reenable this test.
|
|
# "windowpicker_unittest.cc",
|
|
"p2p/base/dtlstransportchannel_unittest.cc",
|
|
"p2p/base/fakeportallocator.h",
|
|
"p2p/base/faketransportcontroller.h",
|
|
"p2p/base/p2ptransportchannel_unittest.cc",
|
|
"p2p/base/port_unittest.cc",
|
|
"p2p/base/portallocator_unittest.cc",
|
|
"p2p/base/pseudotcp_unittest.cc",
|
|
"p2p/base/relayport_unittest.cc",
|
|
"p2p/base/relayserver_unittest.cc",
|
|
"p2p/base/stun_unittest.cc",
|
|
"p2p/base/stunport_unittest.cc",
|
|
"p2p/base/stunrequest_unittest.cc",
|
|
"p2p/base/stunserver_unittest.cc",
|
|
"p2p/base/tcpport_unittest.cc",
|
|
"p2p/base/testrelayserver.h",
|
|
"p2p/base/teststunserver.h",
|
|
"p2p/base/testturnserver.h",
|
|
"p2p/base/transport_unittest.cc",
|
|
"p2p/base/transportcontroller_unittest.cc",
|
|
"p2p/base/transportdescriptionfactory_unittest.cc",
|
|
"p2p/base/turnport_unittest.cc",
|
|
"p2p/client/basicportallocator_unittest.cc",
|
|
"p2p/stunprober/stunprober_unittest.cc",
|
|
]
|
|
|
|
if (is_linux) {
|
|
sources += [
|
|
"base/latebindingsymboltable_unittest.cc",
|
|
|
|
# TODO(ronghuawu): Reenable this test.
|
|
# "linux_unittest.cc",
|
|
"base/linuxfdwalk_unittest.cc",
|
|
]
|
|
}
|
|
|
|
if (is_win) {
|
|
sources += [
|
|
"base/win32_unittest.cc",
|
|
"base/win32regkey_unittest.cc",
|
|
"base/win32window_unittest.cc",
|
|
"base/win32windowpicker_unittest.cc",
|
|
"base/winfirewall_unittest.cc",
|
|
]
|
|
}
|
|
|
|
if (is_mac) {
|
|
sources += [ "base/macutils_unittest.cc" ]
|
|
}
|
|
|
|
if (is_posix) {
|
|
sources += [
|
|
"base/ssladapter_unittest.cc",
|
|
"base/sslidentity_unittest.cc",
|
|
"base/sslstreamadapter_unittest.cc",
|
|
]
|
|
}
|
|
if (is_ios || (is_mac && target_cpu != "x86")) {
|
|
defines = [ "CARBON_DEPRECATED=YES" ]
|
|
}
|
|
|
|
if (rtc_use_quic) {
|
|
sources += [
|
|
"p2p/quic/quicconnectionhelper_unittest.cc",
|
|
"p2p/quic/quicsession_unittest.cc",
|
|
"p2p/quic/quictransport_unittest.cc",
|
|
"p2p/quic/quictransportchannel_unittest.cc",
|
|
"p2p/quic/reliablequicstream_unittest.cc",
|
|
]
|
|
}
|
|
|
|
configs += [
|
|
":common_config",
|
|
":rtc_unittests_config",
|
|
]
|
|
public_configs = [ ":common_inherited_config" ]
|
|
|
|
if (is_clang) {
|
|
# Suppress warnings from the Chromium Clang plugin.
|
|
# See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
|
|
configs -= [ "//build/config/clang:find_bad_constructs" ]
|
|
}
|
|
|
|
deps = [
|
|
"base:rtc_base",
|
|
"base:rtc_base_test_utils",
|
|
"base:rtc_task_queue",
|
|
"p2p:libstunprober",
|
|
"p2p:rtc_p2p",
|
|
"//testing/gmock",
|
|
"//testing/gtest",
|
|
]
|
|
|
|
if (is_android) {
|
|
deps += [ "//testing/android/native_test:native_test_support" ]
|
|
}
|
|
|
|
if (is_ios || (is_mac && mac_deployment_target == "10.7")) {
|
|
deps += [
|
|
"sdk:rtc_sdk_peerconnection_objc",
|
|
"system_wrappers:system_wrappers_default",
|
|
]
|
|
sources += [
|
|
"sdk/objc/Framework/UnitTests/RTCConfigurationTest.mm",
|
|
"sdk/objc/Framework/UnitTests/RTCDataChannelConfigurationTest.mm",
|
|
"sdk/objc/Framework/UnitTests/RTCIceCandidateTest.mm",
|
|
"sdk/objc/Framework/UnitTests/RTCIceServerTest.mm",
|
|
"sdk/objc/Framework/UnitTests/RTCMediaConstraintsTest.mm",
|
|
"sdk/objc/Framework/UnitTests/RTCSessionDescriptionTest.mm",
|
|
]
|
|
|
|
# TODO(tkchin): Cleanup this warning.
|
|
cflags = [ "-Wno-objc-property-no-attribute" ]
|
|
|
|
# |-ObjC| flag needed to make sure category method implementations
|
|
# are included:
|
|
# https://developer.apple.com/library/mac/qa/qa1490/_index.html
|
|
ldflags = [ "-ObjC" ]
|
|
}
|
|
}
|
|
}
|