1# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2# 3# Use of this source code is governed by a BSD-style license 4# that can be found in the LICENSE file in the root of the source 5# tree. An additional intellectual property rights grant can be found 6# in the file PATENTS. All contributing project authors may 7# be found in the AUTHORS file in the root of the source tree. 8 9import("//build/config/arm.gni") 10import("//build/config/crypto.gni") 11import("//build/config/linux/pkg_config.gni") 12import("build/webrtc.gni") 13 14# Contains the defines and includes in common.gypi that are duplicated both as 15# target_defaults and direct_dependent_settings. 16config("common_inherited_config") { 17 defines = [] 18 if (build_with_mozilla) { 19 defines += [ "WEBRTC_MOZILLA_BUILD" ] 20 } 21 if (build_with_chromium) { 22 defines = [ 23 "WEBRTC_CHROMIUM_BUILD", 24 "LOGGING_INSIDE_WEBRTC", 25 ] 26 include_dirs = [ 27 # overrides must be included first as that is the mechanism for 28 # selecting the override headers in Chromium. 29 "overrides", 30 # Allow includes to be prefixed with webrtc/ in case it is not an 31 # immediate subdirectory of the top-level. 32 "..", 33 ] 34 } 35 if (is_posix) { 36 defines += [ "WEBRTC_POSIX" ] 37 } 38 if (is_ios) { 39 defines += [ 40 "WEBRTC_MAC", 41 "WEBRTC_IOS", 42 ] 43 } 44 if (is_linux) { 45 defines += [ "WEBRTC_LINUX" ] 46 } 47 if (is_mac) { 48 defines += [ "WEBRTC_MAC" ] 49 } 50 if (is_win) { 51 defines += [ "WEBRTC_WIN" ] 52 } 53 if (is_android) { 54 defines += [ 55 "WEBRTC_LINUX", 56 "WEBRTC_ANDROID", 57 ] 58 if (enable_android_opensl) { 59 defines += [ "WEBRTC_ANDROID_OPENSLES" ] 60 } 61 } 62} 63 64pkg_config("dbus-glib") { 65 packages = [ "dbus-glib-1" ] 66} 67 68config("common_config") { 69 if (restrict_webrtc_logging) { 70 defines = [ "WEBRTC_RESTRICT_LOGGING" ] 71 } 72 73 if (have_dbus_glib) { 74 defines += [ "HAVE_DBUS_GLIB" ] 75 # TODO(kjellander): Investigate this, it seems like include <dbus/dbus.h> 76 # is still not found even if the execution of 77 # build/config/linux/pkg-config.py dbus-glib-1 returns correct include 78 # dirs on Linux. 79 all_dependent_configs = [ "dbus-glib" ] 80 } 81 82 if (enable_video) { 83 defines += [ "WEBRTC_MODULE_UTILITY_VIDEO" ] 84 } 85 86 if (!build_with_chromium) { 87 if (is_posix) { 88 # -Wextra is currently disabled in Chromium"s common.gypi. Enable 89 # for targets that can handle it. For Android/arm64 right now 90 # there will be an "enumeral and non-enumeral type in conditional 91 # expression" warning in android_tools/ndk_experimental"s version 92 # of stlport. 93 # See: https://code.google.com/p/chromium/issues/detail?id=379699 94 if (cpu_arch != "arm64" || !is_android) { 95 cflags = [ 96 "-Wextra", 97 # We need to repeat some flags from Chromium"s common.gypi 98 # here that get overridden by -Wextra. 99 "-Wno-unused-parameter", 100 "-Wno-missing-field-initializers", 101 "-Wno-strict-overflow", 102 ] 103 cflags_cc = [ 104 "-Wnon-virtual-dtor", 105 # This is enabled for clang; enable for gcc as well. 106 "-Woverloaded-virtual", 107 ] 108 } 109 } 110 111 if (is_clang) { 112 cflags += [ "-Wthread-safety" ] 113 } 114 } 115 116 if (cpu_arch == "arm") { 117 defines += [ "WEBRTC_ARCH_ARM" ] 118 if (arm_version == 7) { 119 defines += [ "WEBRTC_ARCH_ARM_V7" ] 120 if (arm_use_neon) { 121 defines += [ "WEBRTC_ARCH_ARM_NEON" ] 122 } else { 123 defines += [ "WEBRTC_DETECT_ARM_NEON" ] 124 } 125 } 126 } 127 128 if (cpu_arch == "mipsel") { 129 defines += [ "MIPS32_LE" ] 130 if (mips_fpu) { 131 defines += [ "MIPS_FPU_LE" ] 132 cflags += [ "-mhard-float" ] 133 } else { 134 cflags += [ "-msoft-float" ] 135 } 136 if (mips_arch_variant == "mips32r2") { 137 defines += [ "MIPS32_R2_LE" ] 138 cflags += [ "-mips32r2" ] 139 cflags_cc += [ "-mips32r2" ] 140 } 141 if (mips_dsp_rev == 1) { 142 defines += [ "MIPS_DSP_R1_LE" ] 143 cflags += [ "-mdsp" ] 144 cflags_cc += [ "-mdsp" ] 145 } else if (mips_dsp_rev == 2) { 146 defines += [ 147 "MIPS_DSP_R1_LE", 148 "MIPS_DSP_R2_LE", 149 ] 150 cflags += [ "-mdspr2" ] 151 cflags_cc += [ "-mdspr2" ] 152 } 153 } 154 155 # TODO(kjellander): Handle warnings on Windows where WebRTC differ from the 156 # default warnings set in build/config/compiler/BUILD.gn. 157 158 if (is_android && is_clang) { 159 # The Android NDK doesn"t provide optimized versions of these 160 # functions. Ensure they are disabled for all compilers. 161 cflags += [ 162 "-fno-builtin-cos", 163 "-fno-builtin-sin", 164 "-fno-builtin-cosf", 165 "-fno-builtin-sinf", 166 ] 167 } 168} 169 170static_library("webrtc") { 171 deps = [ 172 "base:webrtc_base", 173 ] 174} 175