# 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. import("//build/config/crypto.gni") import("//build/config/ui.gni") import("../build/webrtc.gni") # Enable OpenSSL (BoringSSL) for iOS. This is covered in webrtc/supplement.gypi # for the GYP build. import("//build_overrides/webrtc.gni") if (is_ios && !build_with_chromium) { use_openssl = true } config("rtc_base_config") { include_dirs = [ "//third_party/jsoncpp/overrides/include", "//third_party/jsoncpp/source/include", ] defines = [ "FEATURE_ENABLE_SSL", "LOGGING=1", ] if (is_posix) { # TODO(henrike): issue 3307, make rtc_base build without disabling # these flags. cflags_cc = [ "-Wno-non-virtual-dtor" ] } } config("rtc_base_chromium_config") { defines = [ "NO_MAIN_THREAD_WRAPPING" ] } config("openssl_config") { defines = [ "SSL_USE_OPENSSL", "HAVE_OPENSSL_SSL_H", ] } config("ios_config") { libs = [ "AVFoundation.framework", "CFNetwork.framework", #"Foundation.framework", # Already included in //build/config:default_libs. "Security.framework", "SystemConfiguration.framework", #"UIKit.framework", # Already included in //build/config:default_libs. ] } config("mac_config") { libs = [ "Cocoa.framework", #"Foundation.framework", # Already included in //build/config:default_libs. #"IOKit.framework", # Already included in //build/config:default_libs. #"Security.framework", # Already included in //build/config:default_libs. "SystemConfiguration.framework", ] } config("mac_x86_config") { libs = [ #"Carbon.framework", # Already included in //build/config:default_libs. ] } if (is_linux && !build_with_chromium) { # Provides the same functionality as the //crypto:platform target, which # WebRTC cannot use as we don't sync src/crypto from Chromium. group("linux_system_ssl") { if (use_openssl) { deps = [ "//third_party/boringssl", ] } } } if (rtc_build_ssl == 0) { config("external_ssl_library") { assert(rtc_ssl_root != "", "You must specify rtc_ssl_root when rtc_build_ssl==0.") include_dirs = [ rtc_ssl_root ] } } # The subset of rtc_base approved for use outside of libjingle. static_library("rtc_base_approved") { deps = [] configs += [ "..:common_config" ] public_configs = [ "..:common_inherited_config" ] sources = [ "array_view.h", "atomicops.h", "bitbuffer.cc", "bitbuffer.h", "buffer.cc", "buffer.h", "bufferqueue.cc", "bufferqueue.h", "bytebuffer.cc", "bytebuffer.h", "byteorder.h", "checks.cc", "checks.h", "constructormagic.h", "criticalsection.cc", "criticalsection.h", "deprecation.h", "event.cc", "event.h", "event_tracer.cc", "event_tracer.h", "exp_filter.cc", "exp_filter.h", "md5.cc", "md5.h", "md5digest.cc", "md5digest.h", "optional.h", "platform_file.cc", "platform_file.h", "platform_thread.cc", "platform_thread.h", "platform_thread_types.h", "random.cc", "random.h", "safe_conversions.h", "safe_conversions_impl.h", "scoped_ptr.h", "stringencode.cc", "stringencode.h", "stringutils.cc", "stringutils.h", "systeminfo.cc", "systeminfo.h", "template_util.h", "thread_annotations.h", "thread_checker.h", "thread_checker_impl.cc", "thread_checker_impl.h", "timeutils.cc", "timeutils.h", "trace_event.h", ] if (build_with_chromium) { # Dependency on chromium's logging (in //base). deps += [ "//base:base" ] sources += [ "../../webrtc_overrides/webrtc/base/logging.cc", "../../webrtc_overrides/webrtc/base/logging.h", ] include_dirs = [ "../../webrtc_overrides" ] } else { sources += [ "logging.cc", "logging.h", ] } } static_library("rtc_base") { cflags = [] cflags_cc = [] libs = [] deps = [] public_deps = [ ":rtc_base_approved", ] configs += [ "..:common_config", ":rtc_base_config", ] public_configs = [ "..:common_inherited_config", ":rtc_base_config", ] defines = [ "LOGGING=1" ] sources = [ "arraysize.h", "asyncfile.cc", "asyncfile.h", "asyncinvoker-inl.h", "asyncinvoker.cc", "asyncinvoker.h", "asyncpacketsocket.cc", "asyncpacketsocket.h", "asyncresolverinterface.cc", "asyncresolverinterface.h", "asyncsocket.cc", "asyncsocket.h", "asynctcpsocket.cc", "asynctcpsocket.h", "asyncudpsocket.cc", "asyncudpsocket.h", "autodetectproxy.cc", "autodetectproxy.h", "base64.cc", "base64.h", "common.cc", "common.h", "crc32.cc", "crc32.h", "cryptstring.cc", "cryptstring.h", "diskcache.cc", "diskcache.h", "filerotatingstream.cc", "filerotatingstream.h", "fileutils.cc", "fileutils.h", "firewallsocketserver.cc", "firewallsocketserver.h", "flags.cc", "flags.h", "format_macros.h", "gunit_prod.h", "helpers.cc", "helpers.h", "httpbase.cc", "httpbase.h", "httpclient.cc", "httpclient.h", "httpcommon-inl.h", "httpcommon.cc", "httpcommon.h", "httprequest.cc", "httprequest.h", "iosfilesystem.mm", "ipaddress.cc", "ipaddress.h", "linked_ptr.h", "mathutils.h", "messagedigest.cc", "messagedigest.h", "messagehandler.cc", "messagehandler.h", "messagequeue.cc", "messagequeue.h", "nethelpers.cc", "nethelpers.h", "network.cc", "network.h", "networkmonitor.cc", "networkmonitor.h", "nullsocketserver.h", "pathutils.cc", "pathutils.h", "physicalsocketserver.cc", "physicalsocketserver.h", "proxydetect.cc", "proxydetect.h", "proxyinfo.cc", "proxyinfo.h", "ratelimiter.cc", "ratelimiter.h", "ratetracker.cc", "ratetracker.h", "rtccertificate.cc", "rtccertificate.h", "scoped_autorelease_pool.h", "scoped_autorelease_pool.mm", "sha1.cc", "sha1.h", "sha1digest.cc", "sha1digest.h", "signalthread.cc", "signalthread.h", "sigslot.cc", "sigslot.h", "sigslotrepeater.h", "socket.h", "socketadapters.cc", "socketadapters.h", "socketaddress.cc", "socketaddress.h", "socketaddresspair.cc", "socketaddresspair.h", "socketfactory.h", "socketpool.cc", "socketpool.h", "socketserver.h", "socketstream.cc", "socketstream.h", "ssladapter.cc", "ssladapter.h", "sslfingerprint.cc", "sslfingerprint.h", "sslidentity.cc", "sslidentity.h", "sslsocketfactory.cc", "sslsocketfactory.h", "sslstreamadapter.cc", "sslstreamadapter.h", "sslstreamadapterhelper.cc", "sslstreamadapterhelper.h", "stream.cc", "stream.h", "task.cc", "task.h", "taskparent.cc", "taskparent.h", "taskrunner.cc", "taskrunner.h", "thread.cc", "thread.h", "timing.cc", "timing.h", "urlencode.cc", "urlencode.h", "worker.cc", "worker.h", ] if (is_posix) { sources += [ "ifaddrs-android.h", "ifaddrs_converter.cc", "unixfilesystem.cc", "unixfilesystem.h", ] } if (build_with_chromium) { deps += [ "..:webrtc_common" ] if (is_mac) { sources += [ "macifaddrs_converter.cc" ] } if (is_win) { sources += [ "../../webrtc_overrides/webrtc/base/win32socketinit.cc" ] } include_dirs = [ "../../webrtc_overrides", "../../boringssl/src/include", ] public_configs += [ ":rtc_base_chromium_config" ] } else { sources += [ "bandwidthsmoother.cc", "bandwidthsmoother.h", "bind.h", "bind.h.pump", "callback.h", "callback.h.pump", "fileutils_mock.h", "genericslot.h", "genericslot.h.pump", "httpserver.cc", "httpserver.h", "json.cc", "json.h", "logsinks.cc", "logsinks.h", "mathutils.h", "multipart.cc", "multipart.h", "natserver.cc", "natserver.h", "natsocketfactory.cc", "natsocketfactory.h", "nattypes.cc", "nattypes.h", "optionsfile.cc", "optionsfile.h", "profiler.cc", "profiler.h", "proxyserver.cc", "proxyserver.h", "refcount.h", "referencecountedsingletonfactory.h", "rollingaccumulator.h", "scoped_ref_ptr.h", "scopedptrcollection.h", "sec_buffer.h", "sharedexclusivelock.cc", "sharedexclusivelock.h", "sslconfig.h", "sslroots.h", "testclient.cc", "testclient.h", "transformadapter.cc", "transformadapter.h", "versionparsing.cc", "versionparsing.h", "virtualsocketserver.cc", "virtualsocketserver.h", "window.h", "windowpicker.h", "windowpickerfactory.h", ] deps += [ "..:webrtc_common" ] if (is_posix) { sources += [ "latebindingsymboltable.cc", "latebindingsymboltable.cc.def", "latebindingsymboltable.h", "latebindingsymboltable.h.def", "posix.cc", "posix.h", ] } if (is_linux) { sources += [ "dbus.cc", "dbus.h", "libdbusglibsymboltable.cc", "libdbusglibsymboltable.h", "linuxfdwalk.c", "linuxfdwalk.h", ] } if (is_mac) { sources += [ "macasyncsocket.cc", "macasyncsocket.h", "maccocoasocketserver.h", "maccocoasocketserver.mm", "macsocketserver.cc", "macsocketserver.h", "macwindowpicker.cc", "macwindowpicker.h", ] } if (is_win) { sources += [ "diskcache_win32.cc", "diskcache_win32.h", "win32regkey.cc", "win32regkey.h", "win32socketinit.cc", "win32socketinit.h", "win32socketserver.cc", "win32socketserver.h", ] } if (rtc_build_json) { deps += [ "//third_party/jsoncpp" ] } else { include_dirs += [ rtc_jsoncpp_root ] # When defined changes the include path for json.h to where it is # expected to be when building json outside of the standalone build. defines += [ "WEBRTC_EXTERNAL_JSON" ] } } # !build_with_chromium # TODO(henrike): issue 3307, make rtc_base build with the Chromium default # compiler settings. configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] if (!is_win) { cflags += [ "-Wno-uninitialized" ] cflags_cc += [ "-Wno-non-virtual-dtor" ] } if (use_openssl) { public_configs += [ ":openssl_config" ] if (rtc_build_ssl) { deps += [ "//third_party/boringssl" ] } else { configs += [ "external_ssl_library" ] } sources += [ "openssl.h", "openssladapter.cc", "openssladapter.h", "openssldigest.cc", "openssldigest.h", "opensslidentity.cc", "opensslidentity.h", "opensslstreamadapter.cc", "opensslstreamadapter.h", ] } if (is_android) { sources += [ "ifaddrs-android.cc", "ifaddrs-android.h", ] libs += [ "log", "GLESv2", ] } if (is_ios) { all_dependent_configs = [ ":ios_config" ] sources += [ "macconversion.cc", "macconversion.h", ] } if (use_x11) { sources += [ "x11windowpicker.cc", "x11windowpicker.h", ] libs += [ "dl", "rt", "Xext", "X11", "Xcomposite", "Xrender", ] } if (is_linux) { libs += [ "dl", "rt", ] } if (is_mac) { sources += [ "maccocoathreadhelper.h", "maccocoathreadhelper.mm", "macconversion.cc", "macconversion.h", "macutils.cc", "macutils.h", ] all_dependent_configs = [ ":mac_config" ] if (current_cpu == "x86") { all_dependent_configs += [ ":mac_x86_config" ] } } if (is_win) { sources += [ "win32.cc", "win32.h", "win32filesystem.cc", "win32filesystem.h", "win32securityerrors.cc", "win32window.cc", "win32window.h", "win32windowpicker.cc", "win32windowpicker.h", "winfirewall.cc", "winfirewall.h", "winping.cc", "winping.h", ] libs += [ "crypt32.lib", "iphlpapi.lib", "secur32.lib", ] cflags += [ # Suppress warnings about WIN32_LEAN_AND_MEAN. "/wd4005", "/wd4703", ] defines += [ "_CRT_NONSTDC_NO_DEPRECATE" ] } if (is_posix && is_debug) { # The Chromium build/common.gypi defines this for all posix # _except_ for ios & mac. We want it there as well, e.g. # because ASSERT and friends trigger off of it. defines += [ "_DEBUG" ] } if (is_ios || (is_mac && current_cpu != "x86")) { defines += [ "CARBON_DEPRECATED=YES" ] } if (is_linux || is_android) { sources += [ "linux.cc", "linux.h", ] } if (is_nacl) { deps += [ "//native_client_sdk/src/libraries/nacl_io" ] defines += [ "timezone=_timezone" ] sources -= [ "ifaddrs_converter.cc" ] } } if (is_ios) { source_set("rtc_base_objc") { deps = [ ":rtc_base", ] cflags = [ "-fobjc-arc" ] configs += [ "..:common_config" ] public_configs = [ "..:common_inherited_config" ] sources = [ "objc/NSString+StdString.h", "objc/NSString+StdString.mm", "objc/RTCCameraPreviewView.h", "objc/RTCCameraPreviewView.m", "objc/RTCDispatcher.h", "objc/RTCDispatcher.m", "objc/RTCLogging.h", "objc/RTCLogging.mm", ] } }