summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/webrtc/build/config/ios/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/webrtc/build/config/ios/BUILD.gn')
-rw-r--r--third_party/libwebrtc/webrtc/build/config/ios/BUILD.gn155
1 files changed, 155 insertions, 0 deletions
diff --git a/third_party/libwebrtc/webrtc/build/config/ios/BUILD.gn b/third_party/libwebrtc/webrtc/build/config/ios/BUILD.gn
new file mode 100644
index 0000000000..f8091d155b
--- /dev/null
+++ b/third_party/libwebrtc/webrtc/build/config/ios/BUILD.gn
@@ -0,0 +1,155 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/ios/ios_sdk.gni")
+import("//build/config/sysroot.gni")
+import("//build/toolchain/toolchain.gni")
+
+declare_args() {
+ # Enabling this option makes clang compile to an intermediate
+ # representation ("bitcode"), and not to native code. This is preferred
+ # when including WebRTC in the apps that will be sent to Apple's App Store
+ # and mandatory for the apps that run on watchOS or tvOS.
+ # The option only works when building with Xcode (use_xcode_clang = true).
+ # Mimicking how Xcode handles it, the production builds (is_debug = false)
+ # get real bitcode sections added, while the debug builds (is_debug = true)
+ # only get bitcode-section "markers" added in them.
+ # NOTE: This option is ignored when building versions for the iOS simulator,
+ # where a part of libvpx is compiled from the assembly code written using
+ # Intel assembly syntax; Yasm / Nasm do not support emitting bitcode parts.
+ # That is not a limitation for now as Xcode mandates the presence of bitcode
+ # only when building bitcode-enabled projects for real devices (ARM CPUs).
+ enable_ios_bitcode = false
+}
+
+# This is included by reference in the //build/config/compiler config that
+# is applied to all targets. It is here to separate out the logic.
+config("compiler") {
+ # These flags are shared between the C compiler and linker.
+ common_ios_flags = []
+
+ # CPU architecture.
+ if (current_cpu == "x64") {
+ common_ios_flags += [
+ "-arch",
+ "x86_64",
+ ]
+ } else if (current_cpu == "x86") {
+ common_ios_flags += [
+ "-arch",
+ "i386",
+ ]
+ } else if (current_cpu == "armv7" || current_cpu == "arm") {
+ common_ios_flags += [
+ "-arch",
+ "armv7",
+ ]
+ } else if (current_cpu == "arm64") {
+ common_ios_flags += [
+ "-arch",
+ "arm64",
+ ]
+ }
+
+ # This is here so that all files get recompiled after an Xcode update.
+ # (defines are passed via the command line, and build system rebuild things
+ # when their commandline changes). Nothing should ever read this define.
+ defines = [ "CR_XCODE_VERSION=$xcode_version" ]
+
+ asmflags = common_ios_flags
+ cflags = common_ios_flags
+
+ # Without this, the constructors and destructors of a C++ object inside
+ # an Objective C struct won't be called, which is very bad.
+ cflags_objcc = [ "-fobjc-call-cxx-cdtors" ]
+
+ cflags_c = [ "-std=c99" ]
+ cflags_objc = cflags_c
+
+ ldflags = common_ios_flags
+}
+
+# This is included by reference in the //build/config/compiler:runtime_library
+# config that is applied to all targets. It is here to separate out the logic
+# that is iOS-only. Please see that target for advice on what should go in
+# :runtime_library vs. :compiler.
+config("runtime_library") {
+ common_flags = [
+ "-isysroot",
+ sysroot,
+
+ "-stdlib=libc++",
+ ]
+
+ if (use_ios_simulator) {
+ common_flags += [ "-mios-simulator-version-min=$ios_deployment_target" ]
+ } else {
+ common_flags += [ "-miphoneos-version-min=$ios_deployment_target" ]
+ }
+
+ if (use_xcode_clang && enable_ios_bitcode && !use_ios_simulator) {
+ if (is_debug) {
+ common_flags += [ "-fembed-bitcode-marker" ]
+ } else {
+ common_flags += [ "-fembed-bitcode" ]
+ }
+ }
+
+ asmflags = common_flags
+ cflags = common_flags
+ ldflags = common_flags
+
+ # TODO(crbug.com/634373): Remove once Xcode's libc++ has LLVM r256325. Most
+ # likely this means one Xcode 8 is released and required.
+ if (use_xcode_clang && get_path_info(ios_sdk_version, "name") != "10") {
+ common_cc_flags = [
+ "-isystem",
+ rebase_path("//third_party/llvm-build/Release+Asserts/include/c++/v1",
+ root_build_dir),
+ ]
+
+ cflags_cc = common_cc_flags
+ cflags_objcc = common_cc_flags
+ }
+
+ if (ios_enable_coverage) {
+ configs = [ ":enable_coverage" ]
+ }
+}
+
+config("ios_executable_flags") {
+}
+
+config("ios_dynamic_flags") {
+ ldflags = [ "-Wl,-ObjC" ] # Always load Objective-C categories and class.
+}
+
+config("xctest_config") {
+ common_flags = [
+ "-F",
+ "$ios_sdk_platform_path/Developer/Library/Frameworks",
+ ]
+
+ cflags = common_flags
+ ldflags = common_flags
+
+ libs = [
+ "Foundation.framework",
+ "XCTest.framework",
+ ]
+}
+
+# This enables support for LLVM code coverage. See
+# http://llvm.org/docs/CoverageMappingFormat.html.
+config("enable_coverage") {
+ cflags = [
+ "-fprofile-instr-generate",
+ "-fcoverage-mapping",
+ ]
+ ldflags = [ "-fprofile-instr-generate" ]
+}
+
+group("xctest") {
+ public_configs = [ ":xctest_config" ]
+}