aboutsummaryrefslogtreecommitdiff
path: root/webrtc/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'webrtc/BUILD.gn')
-rw-r--r--webrtc/BUILD.gn281
1 files changed, 281 insertions, 0 deletions
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
new file mode 100644
index 0000000000..ac14d7d528
--- /dev/null
+++ b/webrtc/BUILD.gn
@@ -0,0 +1,281 @@
+# 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/crypto.gni")
+import("//build/config/linux/pkg_config.gni")
+import("build/webrtc.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 = [ "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" ]
+ }
+ if (is_android) {
+ defines += [
+ "WEBRTC_LINUX",
+ "WEBRTC_ANDROID",
+ ]
+ }
+}
+
+if (rtc_have_dbus_glib) {
+ pkg_config("dbus-glib") {
+ packages = [ "dbus-glib-1" ]
+ }
+}
+
+config("common_config") {
+ cflags = []
+ cflags_cc = []
+ 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 (build_with_chromium) {
+ defines += [ "LOGGING_INSIDE_WEBRTC" ]
+ } 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 += [ "-Wthread-safety" ]
+ }
+ }
+
+ 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" ]
+ } else if (arm_optionally_use_neon) {
+ defines += [ "WEBRTC_DETECT_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",
+ ]
+ }
+}
+
+source_set("webrtc") {
+ sources = [
+ "call.h",
+ "config.h",
+ "frame_callback.h",
+ "transport.h",
+ ]
+
+ defines = []
+ configs += [ ":common_config" ]
+ public_configs = [ ":common_inherited_config" ]
+
+ deps = [
+ "audio",
+ ":webrtc_common",
+ "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",
+ "modules/video_render",
+ ]
+ }
+
+ 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_render:video_render_internal_impl",
+ "modules/video_capture:video_capture_internal_impl",
+ "test",
+ ]
+ }
+}
+
+source_set("webrtc_common") {
+ sources = [
+ "common_types.cc",
+ "common_types.h",
+ "config.cc",
+ "config.h",
+ "engine_configurations.h",
+ "typedefs.h",
+ ]
+
+ configs += [ ":common_config" ]
+ public_configs = [ ":common_inherited_config" ]
+}
+
+source_set("gtest_prod") {
+ sources = [
+ "test/testsupport/gtest_prod_util.h",
+ ]
+}
+
+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",
+ ]
+
+ 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" ]
+ }
+}