| # Copyright 2024 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/features.gni") # For `use_blink` |
| |
| declare_args() { |
| # Configure the environment for which to build. Could be either "device", |
| # "simulator" or "catalyst". Must be specified. |
| target_environment = "" |
| |
| # Valid values: "iphoneos" (default), "tvos", "watchos". |
| # Indicates the kind of iOS or iOS-based platform that is being targeted. |
| # Note that this value is available only when is_ios is also true (i.e. it |
| # cannot be used with the host toolchain). |
| target_platform = "iphoneos" |
| |
| # Control whether codesiging is enabled (ignored for simulator builds). |
| # TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_. |
| 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. |
| # TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_. |
| 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`. |
| # TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_. |
| 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. |
| # TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_. |
| ios_app_bundle_id_prefix = "org.chromium.ost" |
| |
| # Suffix for CFBundleIdentifier property of iOS Chrome signed bundles |
| # (main bundle and extensions). Code signing will fail if no mobile |
| # provisioning for the selected code signing identify support that suffix. |
| # For extension, the suffix will be added before the extension identifier. |
| # The suffix is not added to test applications. |
| # No dot is added before the suffix, so add one if needed. |
| apple_mobile_app_bundle_id_suffix = ".dev" |
| |
| # Paths to the mobileprovision files for the chosen code signing |
| # identity description and app bundle id prefix. |
| # TODO(crbug.com/378918882): Prefix with apple_mobile_ instead of ios_. |
| ios_mobileprovision_files = [] |
| } |
| |
| # As entitlements are tied to a specific bundle identifier, all the |
| # test applications share the same identifier. This simplifies adding |
| # new test application (since there is no need to investigate which |
| # entitlements they need, nor to wait for the mobile provision with |
| # those entitlements to be generated by Apple and then deployed to the |
| # infrastructure, ...). The drawback is that only one test application |
| # can be installed at a time on a device/simulator (as the bundle |
| # identifier uniquely identify an application). |
| # |
| # This variable corresponds to the test bundle identifier. |
| shared_bundle_id_for_test_apps = |
| "$ios_app_bundle_id_prefix.chrome.unittests.dev" |
| |
| # This file is included on all platforms, but the automatic configuration of |
| # the variables can only be executed if building for ios or watchos (as they |
| # either have no meaning or depend on tools that are only available on macOS). |
| if (is_ios || is_watchos) { |
| # Check that target_platform and target_environment are set to supported |
| # values. |
| _target_platforms = [] |
| if (is_ios) { |
| _target_platforms += [ |
| "iphoneos", |
| "tvos", |
| ] |
| } else if (is_watchos) { |
| _target_platforms += [ |
| "iphoneos", |
| "watchos", |
| ] |
| } |
| assert(filter_include([ target_platform ], _target_platforms) != [], |
| "target_platform '$target_platform' does not match a target value: " + |
| "$_target_platforms") |
| _target_environments = [ |
| "simulator", |
| "device", |
| ] |
| if (is_ios && target_platform == "iphoneos") { |
| _target_environments += [ "catalyst" ] |
| } |
| assert(filter_include([ target_environment ], _target_environments) != [], |
| "target_environment must be in $_target_environments: " + |
| "$target_environment") |
| |
| if (target_environment == "device" && ios_enable_code_signing) { |
| # If codesigning is enabled, user must configure either a codesigning |
| # identity or a filter to automatically select the codesigning identity. |
| 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).") |
| |
| # 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("//build/config/apple/find_signing_identity.py", |
| find_signing_identity_args, |
| "trim string") |
| } |
| } |
| |
| # Sanity check: tvOS builds require `use_blink`. |
| if (target_platform == "tvos") { |
| assert(use_blink, "tvOS builds require use_blink=true") |
| } |
| } |