summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/ios/ios_sdk.gni
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/config/ios/ios_sdk.gni')
-rw-r--r--third_party/libwebrtc/build/config/ios/ios_sdk.gni185
1 files changed, 185 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/config/ios/ios_sdk.gni b/third_party/libwebrtc/build/config/ios/ios_sdk.gni
new file mode 100644
index 0000000000..ffff5921d8
--- /dev/null
+++ b/third_party/libwebrtc/build/config/ios/ios_sdk.gni
@@ -0,0 +1,185 @@
+# Copyright 2015 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/config.gni")
+import("//build/config/ios/ios_sdk_overrides.gni")
+import("//build/toolchain/goma.gni")
+import("//build/toolchain/goma.gni")
+import("//build/toolchain/toolchain.gni")
+import("//build_overrides/build.gni")
+
+assert(current_os == "ios")
+assert(use_system_xcode, "Hermetic xcode doesn't work for ios.")
+
+declare_args() {
+ # SDK path to use. When empty this will use the default SDK based on the
+ # value of target_environment.
+ ios_bin_path = ""
+ ios_sdk_path = ""
+ ios_sdk_name = ""
+ ios_sdk_version = ""
+ ios_sdk_platform = ""
+ ios_sdk_platform_path = ""
+ ios_toolchains_path = ""
+ xcode_version = ""
+ xcode_version_int = 0
+ xcode_build = ""
+ machine_os_build = ""
+
+ # Set DEVELOPER_DIR while running sdk_info.py.
+ ios_sdk_developer_dir = ""
+
+ # Control whether codesiging is enabled (ignored for simulator builds).
+ ios_enable_code_signing = true
+
+ # Explicitly select the identity to use for codesigning. If defined, must
+ # be set to a non-empty string that will be passed to codesigning. Can be
+ # left unspecified if ios_code_signing_identity_description is used instead.
+ ios_code_signing_identity = ""
+
+ # Pattern used to select the identity to use for codesigning. If defined,
+ # must be a substring of the description of exactly one of the identities by
+ # `security find-identity -v -p codesigning`.
+ ios_code_signing_identity_description = "Apple Development"
+
+ # Prefix for CFBundleIdentifier property of iOS bundles (correspond to the
+ # "Organization Identifier" in Xcode). Code signing will fail if no mobile
+ # provisioning for the selected code signing identify support that prefix.
+ ios_app_bundle_id_prefix = "org.chromium"
+
+ # If non-empty, this list must contain valid cpu architecture, and the final
+ # build will be a multi-architecture build (aka fat build) supporting the
+ # main $target_cpu architecture and all of $additional_target_cpus.
+ #
+ # For example to build an application that will run on both arm64 and armv7
+ # devices, you would use the following in args.gn file when running "gn args":
+ #
+ # target_os = "ios"
+ # target_cpu = "arm64"
+ # additional_target_cpus = [ "arm" ]
+ #
+ # You can also pass the value via "--args" parameter for "gn gen" command by
+ # using the syntax --args='additional_target_cpus=["arm"] target_cpu="arm64"'.
+ additional_target_cpus = []
+}
+
+declare_args() {
+ # This variable is set by the toolchain. It is set to true if the toolchain
+ # is a secondary toolchain as part of a "fat" build.
+ is_fat_secondary_toolchain = false
+
+ # This variable is set by the toolchain. It is the name of the primary
+ # toolchain for the fat build (could be current_toolchain).
+ primary_fat_toolchain_name = ""
+}
+
+# Official builds may not use goma.
+assert(!(use_goma && is_chrome_branded && is_official_build &&
+ target_cpu == "arm64"),
+ "goma use is forbidden for official iOS builds.")
+
+assert(custom_toolchain == "" || additional_target_cpus == [],
+ "cannot define both custom_toolchain and additional_target_cpus")
+
+# If codesigning is enabled, use must configure either a codesigning identity
+# or a filter to automatically select the codesigning identity.
+if (target_environment == "device" && ios_enable_code_signing) {
+ assert(ios_code_signing_identity == "" ||
+ ios_code_signing_identity_description == "",
+ "You should either specify the precise identity to use with " +
+ "ios_code_signing_identity or let the code select an identity " +
+ "automatically (via find_signing_identity.py which use the " +
+ "variable ios_code_signing_identity_description to set the " +
+ "pattern to match the identity to use).")
+}
+
+# Initialize additional_toolchains from additional_target_cpus. Assert here
+# that the list does not contains $target_cpu nor duplicates as this would
+# cause weird errors during the build.
+additional_toolchains = []
+if (additional_target_cpus != [] && !is_fat_secondary_toolchain) {
+ foreach(_additional_target_cpu, additional_target_cpus) {
+ assert(_additional_target_cpu != target_cpu,
+ "target_cpu must not be listed in additional_target_cpus")
+
+ _toolchain = "${current_toolchain}_fat_${_additional_target_cpu}"
+ foreach(_additional_toolchain, additional_toolchains) {
+ assert(_toolchain != _additional_toolchain,
+ "additional_target_cpus must not contains duplicate values")
+ }
+
+ additional_toolchains += [ _toolchain ]
+ }
+}
+
+if (ios_sdk_path == "") {
+ # Compute default target.
+ if (target_environment == "simulator") {
+ ios_sdk_name = "iphonesimulator"
+ ios_sdk_platform = "iPhoneSimulator"
+ } else if (target_environment == "device") {
+ ios_sdk_name = "iphoneos"
+ ios_sdk_platform = "iPhoneOS"
+ } else if (target_environment == "catalyst") {
+ ios_sdk_name = "macosx"
+ ios_sdk_platform = "MacOSX"
+ } else {
+ assert(false, "unsupported environment: $target_environment")
+ }
+
+ ios_sdk_info_args = [
+ "--get_sdk_info",
+ "--get_machine_info",
+ ]
+ ios_sdk_info_args += [ ios_sdk_name ]
+ if (ios_sdk_developer_dir != "") {
+ ios_sdk_info_args += [
+ "--developer_dir",
+ ios_sdk_developer_dir,
+ ]
+ }
+ if (use_system_xcode && use_goma) {
+ ios_sdk_info_args += [
+ "--create_symlink_at",
+ "sdk/xcode_links",
+ ]
+ }
+ script_name = "//build/config/apple/sdk_info.py"
+ _ios_sdk_result = exec_script(script_name, ios_sdk_info_args, "scope")
+ ios_bin_path =
+ rebase_path("${_ios_sdk_result.toolchains_path}/usr/bin/", root_build_dir)
+ ios_sdk_path = _ios_sdk_result.sdk_path
+ ios_sdk_platform_path = _ios_sdk_result.sdk_platform_path
+ ios_sdk_version = _ios_sdk_result.sdk_version
+ ios_sdk_build = _ios_sdk_result.sdk_build
+ ios_toolchains_path = _ios_sdk_result.toolchains_path
+ xcode_version = _ios_sdk_result.xcode_version
+ xcode_version_int = _ios_sdk_result.xcode_version_int
+ xcode_build = _ios_sdk_result.xcode_build
+ machine_os_build = _ios_sdk_result.machine_os_build
+ if (target_environment == "simulator") {
+ # This is weird, but Xcode sets DTPlatformBuild to an empty field for
+ # simulator builds.
+ ios_platform_build = ""
+ } else {
+ ios_platform_build = ios_sdk_build
+ }
+}
+
+if (target_environment == "device" && ios_enable_code_signing) {
+ # Automatically select a codesigning identity if no identity is configured.
+ # This only applies to device build as simulator builds are not signed.
+ if (ios_code_signing_identity == "") {
+ find_signing_identity_args = []
+ if (ios_code_signing_identity_description != "") {
+ find_signing_identity_args = [
+ "--matching-pattern",
+ ios_code_signing_identity_description,
+ ]
+ }
+ ios_code_signing_identity = exec_script("find_signing_identity.py",
+ find_signing_identity_args,
+ "trim string")
+ }
+}