| # 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") | 
 |  | 
 | # 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 = [ | 
 |       # overrides must be included first as that is the mechanism for | 
 |       # selecting the override headers in Chromium. | 
 |       "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_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_enable_android_opensl) { | 
 |       defines += [ "WEBRTC_ANDROID_OPENSLES" ] | 
 |     } | 
 |   } | 
 | } | 
 |  | 
 | 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 (rtc_enable_video) { | 
 |     defines += [ "WEBRTC_MODULE_UTILITY_VIDEO" ] | 
 |   } | 
 |  | 
 |   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 (cpu_arch != "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 (cpu_arch == "arm64") { | 
 |     defines += [ "WEBRTC_ARCH_ARM" ] | 
 |     # TODO(zhongwei) Defining an unique WEBRTC_NEON and | 
 |     # distinguishing ARMv7 NEON and ARM64 NEON by | 
 |     # WEBRTC_ARCH_ARM_V7 and WEBRTC_ARCH_ARM64 should be better. | 
 |  | 
 |     # This macro is used to distinguish ARMv7 NEON and ARM64 NEON | 
 |     defines += [ "WEBRTC_ARCH_ARM64_NEON" ] | 
 |   } | 
 |  | 
 |   if (cpu_arch == "arm") { | 
 |     defines += [ "WEBRTC_ARCH_ARM" ] | 
 |     if (arm_version >= 7) { | 
 |       defines += [ "WEBRTC_ARCH_ARM_V7" ] | 
 |       if (arm_use_neon) { | 
 |         defines += [ "WEBRTC_ARCH_ARM_NEON" ] | 
 |       } else if (is_android) { | 
 |         defines += [ "WEBRTC_DETECT_ARM_NEON" ] | 
 |       } | 
 |     } | 
 |   } | 
 |  | 
 |   if (cpu_arch == "mipsel") { | 
 |     defines += [ "MIPS32_LE" ] | 
 |     if (mips_fpu) { | 
 |       defines += [ "MIPS_FPU_LE" ] | 
 |       cflags += [ "-mhard-float" ] | 
 |     } else { | 
 |       cflags += [ "-msoft-float" ] | 
 |     } | 
 |     if (mips_arch_variant == "r2") { | 
 |       defines += [ "MIPS32_R2_LE" ] | 
 |       cflags += [ "-mips32r2" ] | 
 |       cflags_cc += [ "-mips32r2" ] | 
 |     } | 
 |     if (mips_dsp_rev == 1) { | 
 |       defines += [ "MIPS_DSP_R1_LE" ] | 
 |       cflags += [ "-mdsp" ] | 
 |       cflags_cc += [ "-mdsp" ] | 
 |     } else if (mips_dsp_rev == 2) { | 
 |       defines += [ | 
 |         "MIPS_DSP_R1_LE", | 
 |         "MIPS_DSP_R2_LE", | 
 |       ] | 
 |       cflags += [ "-mdspr2" ] | 
 |       cflags_cc += [ "-mdspr2" ] | 
 |     } | 
 |   } | 
 |  | 
 |   # TODO(kjellander): Handle warnings on Windows where WebRTC differ from the | 
 |   # default warnings set in build/config/compiler/BUILD.gn. | 
 |  | 
 |   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", | 
 |     "experiments.h", | 
 |     "frame_callback.h", | 
 |     "transport.h", | 
 |   ] | 
 |  | 
 |   configs += [ ":common_config" ] | 
 |   public_configs = [ ":common_inherited_config"] | 
 |  | 
 |   deps = [ | 
 |     ":webrtc_common", | 
 |     "base:rtc_base", | 
 |     "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", | 
 |     "video_engine", | 
 |     "voice_engine", | 
 |   ] | 
 |  | 
 |   if (build_with_chromium) { | 
 |     deps += [ | 
 |     "modules/video_capture", | 
 |     "modules/video_render", | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | 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.h", | 
 |     "config.h", | 
 |     "config.cc", | 
 |     "engine_configurations.h", | 
 |     "typedefs.h", | 
 |   ] | 
 |  | 
 |   if (is_clang) { | 
 |     # 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" ] | 
 |   } | 
 |  | 
 |   configs += [ ":common_config" ] | 
 |   public_configs = [ ":common_inherited_config" ] | 
 | } | 
 |  | 
 | source_set("gtest_prod") { | 
 |   sources = [ | 
 |     "test/testsupport/gtest_prod_util.h", | 
 |   ] | 
 | } |