xref: /aosp_15_r20/external/cronet/build/config/ios/ios_sdk.gni (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2015 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerimport("//build/config/ios/config.gni")
6*6777b538SAndroid Build Coastguard Workerimport("//build/config/ios/ios_sdk_overrides.gni")
7*6777b538SAndroid Build Coastguard Workerimport("//build/toolchain/rbe.gni")
8*6777b538SAndroid Build Coastguard Workerimport("//build/toolchain/siso.gni")
9*6777b538SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni")
10*6777b538SAndroid Build Coastguard Workerimport("//build_overrides/build.gni")
11*6777b538SAndroid Build Coastguard Worker
12*6777b538SAndroid Build Coastguard Workerassert(current_os == "ios")
13*6777b538SAndroid Build Coastguard Workerassert(use_system_xcode, "Hermetic xcode doesn't work for ios.")
14*6777b538SAndroid Build Coastguard Worker
15*6777b538SAndroid Build Coastguard Workerdeclare_args() {
16*6777b538SAndroid Build Coastguard Worker  # SDK path to use. When empty this will use the default SDK based on the
17*6777b538SAndroid Build Coastguard Worker  # value of target_environment.
18*6777b538SAndroid Build Coastguard Worker  ios_bin_path = ""
19*6777b538SAndroid Build Coastguard Worker  ios_sdk_path = ""
20*6777b538SAndroid Build Coastguard Worker  ios_sdk_name = ""
21*6777b538SAndroid Build Coastguard Worker  ios_sdk_version = ""
22*6777b538SAndroid Build Coastguard Worker  ios_sdk_platform = ""
23*6777b538SAndroid Build Coastguard Worker  ios_sdk_platform_path = ""
24*6777b538SAndroid Build Coastguard Worker  ios_toolchains_path = ""
25*6777b538SAndroid Build Coastguard Worker  xcode_version = ""
26*6777b538SAndroid Build Coastguard Worker  xcode_version_int = 0
27*6777b538SAndroid Build Coastguard Worker  xcode_build = ""
28*6777b538SAndroid Build Coastguard Worker  machine_os_build = ""
29*6777b538SAndroid Build Coastguard Worker
30*6777b538SAndroid Build Coastguard Worker  # Set DEVELOPER_DIR while running sdk_info.py.
31*6777b538SAndroid Build Coastguard Worker  ios_sdk_developer_dir = ""
32*6777b538SAndroid Build Coastguard Worker
33*6777b538SAndroid Build Coastguard Worker  # Control whether codesiging is enabled (ignored for simulator builds).
34*6777b538SAndroid Build Coastguard Worker  ios_enable_code_signing = true
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker  # Explicitly select the identity to use for codesigning. If defined, must
37*6777b538SAndroid Build Coastguard Worker  # be set to a non-empty string that will be passed to codesigning. Can be
38*6777b538SAndroid Build Coastguard Worker  # left unspecified if ios_code_signing_identity_description is used instead.
39*6777b538SAndroid Build Coastguard Worker  ios_code_signing_identity = ""
40*6777b538SAndroid Build Coastguard Worker
41*6777b538SAndroid Build Coastguard Worker  # Pattern used to select the identity to use for codesigning. If defined,
42*6777b538SAndroid Build Coastguard Worker  # must be a substring of the description of exactly one of the identities by
43*6777b538SAndroid Build Coastguard Worker  # `security find-identity -v -p codesigning`.
44*6777b538SAndroid Build Coastguard Worker  ios_code_signing_identity_description = "Apple Development"
45*6777b538SAndroid Build Coastguard Worker
46*6777b538SAndroid Build Coastguard Worker  # Prefix for CFBundleIdentifier property of iOS bundles (correspond to the
47*6777b538SAndroid Build Coastguard Worker  # "Organization Identifier" in Xcode). Code signing will fail if no mobile
48*6777b538SAndroid Build Coastguard Worker  # provisioning for the selected code signing identify support that prefix.
49*6777b538SAndroid Build Coastguard Worker  ios_app_bundle_id_prefix = "org.chromium.ost"
50*6777b538SAndroid Build Coastguard Worker
51*6777b538SAndroid Build Coastguard Worker  # Paths to the mobileprovision files for the chosen code signing
52*6777b538SAndroid Build Coastguard Worker  # identity description and app bundle id prefix.
53*6777b538SAndroid Build Coastguard Worker  ios_mobileprovision_files = []
54*6777b538SAndroid Build Coastguard Worker
55*6777b538SAndroid Build Coastguard Worker  # Set to true if building an app extension.
56*6777b538SAndroid Build Coastguard Worker  ios_is_app_extension = false
57*6777b538SAndroid Build Coastguard Worker}
58*6777b538SAndroid Build Coastguard Worker
59*6777b538SAndroid Build Coastguard Worker# If codesigning is enabled, use must configure either a codesigning identity
60*6777b538SAndroid Build Coastguard Worker# or a filter to automatically select the codesigning identity.
61*6777b538SAndroid Build Coastguard Workerif (target_environment == "device" && ios_enable_code_signing) {
62*6777b538SAndroid Build Coastguard Worker  assert(ios_code_signing_identity == "" ||
63*6777b538SAndroid Build Coastguard Worker             ios_code_signing_identity_description == "",
64*6777b538SAndroid Build Coastguard Worker         "You should either specify the precise identity to use with " +
65*6777b538SAndroid Build Coastguard Worker             "ios_code_signing_identity or let the code select an identity " +
66*6777b538SAndroid Build Coastguard Worker             "automatically (via find_signing_identity.py which use the " +
67*6777b538SAndroid Build Coastguard Worker             "variable ios_code_signing_identity_description to set the " +
68*6777b538SAndroid Build Coastguard Worker             "pattern to match the identity to use).")
69*6777b538SAndroid Build Coastguard Worker}
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Workerif (ios_sdk_path == "") {
72*6777b538SAndroid Build Coastguard Worker  # Compute default target.
73*6777b538SAndroid Build Coastguard Worker  if (target_environment == "simulator") {
74*6777b538SAndroid Build Coastguard Worker    ios_sdk_name = "iphonesimulator"
75*6777b538SAndroid Build Coastguard Worker    ios_sdk_platform = "iPhoneSimulator"
76*6777b538SAndroid Build Coastguard Worker  } else if (target_environment == "device") {
77*6777b538SAndroid Build Coastguard Worker    ios_sdk_name = "iphoneos"
78*6777b538SAndroid Build Coastguard Worker    ios_sdk_platform = "iPhoneOS"
79*6777b538SAndroid Build Coastguard Worker  } else if (target_environment == "catalyst") {
80*6777b538SAndroid Build Coastguard Worker    ios_sdk_name = "macosx"
81*6777b538SAndroid Build Coastguard Worker    ios_sdk_platform = "MacOSX"
82*6777b538SAndroid Build Coastguard Worker  } else {
83*6777b538SAndroid Build Coastguard Worker    assert(false, "unsupported environment: $target_environment")
84*6777b538SAndroid Build Coastguard Worker  }
85*6777b538SAndroid Build Coastguard Worker
86*6777b538SAndroid Build Coastguard Worker  ios_sdk_info_args = [
87*6777b538SAndroid Build Coastguard Worker    "--get_sdk_info",
88*6777b538SAndroid Build Coastguard Worker    "--get_machine_info",
89*6777b538SAndroid Build Coastguard Worker  ]
90*6777b538SAndroid Build Coastguard Worker  ios_sdk_info_args += [ ios_sdk_name ]
91*6777b538SAndroid Build Coastguard Worker  if (ios_sdk_developer_dir != "") {
92*6777b538SAndroid Build Coastguard Worker    ios_sdk_info_args += [
93*6777b538SAndroid Build Coastguard Worker      "--developer_dir",
94*6777b538SAndroid Build Coastguard Worker      ios_sdk_developer_dir,
95*6777b538SAndroid Build Coastguard Worker    ]
96*6777b538SAndroid Build Coastguard Worker  }
97*6777b538SAndroid Build Coastguard Worker  if (use_system_xcode && (use_remoteexec || use_siso)) {
98*6777b538SAndroid Build Coastguard Worker    ios_sdk_info_args += [
99*6777b538SAndroid Build Coastguard Worker      "--create_symlink_at",
100*6777b538SAndroid Build Coastguard Worker      "sdk/xcode_links",
101*6777b538SAndroid Build Coastguard Worker      "--root_build_dir",
102*6777b538SAndroid Build Coastguard Worker      root_build_dir,
103*6777b538SAndroid Build Coastguard Worker    ]
104*6777b538SAndroid Build Coastguard Worker  }
105*6777b538SAndroid Build Coastguard Worker  script_name = "//build/config/apple/sdk_info.py"
106*6777b538SAndroid Build Coastguard Worker  _ios_sdk_result = exec_script(script_name, ios_sdk_info_args, "scope")
107*6777b538SAndroid Build Coastguard Worker  ios_bin_path =
108*6777b538SAndroid Build Coastguard Worker      rebase_path("${_ios_sdk_result.toolchains_path}/usr/bin/", root_build_dir)
109*6777b538SAndroid Build Coastguard Worker  ios_sdk_path = _ios_sdk_result.sdk_path
110*6777b538SAndroid Build Coastguard Worker  ios_sdk_platform_path = _ios_sdk_result.sdk_platform_path
111*6777b538SAndroid Build Coastguard Worker  ios_sdk_version = _ios_sdk_result.sdk_version
112*6777b538SAndroid Build Coastguard Worker  ios_sdk_build = _ios_sdk_result.sdk_build
113*6777b538SAndroid Build Coastguard Worker  ios_toolchains_path = _ios_sdk_result.toolchains_path
114*6777b538SAndroid Build Coastguard Worker  xcode_version = _ios_sdk_result.xcode_version
115*6777b538SAndroid Build Coastguard Worker  xcode_version_int = _ios_sdk_result.xcode_version_int
116*6777b538SAndroid Build Coastguard Worker  xcode_build = _ios_sdk_result.xcode_build
117*6777b538SAndroid Build Coastguard Worker  machine_os_build = _ios_sdk_result.machine_os_build
118*6777b538SAndroid Build Coastguard Worker  if (target_environment == "simulator") {
119*6777b538SAndroid Build Coastguard Worker    # This is weird, but Xcode sets DTPlatformBuild to an empty field for
120*6777b538SAndroid Build Coastguard Worker    # simulator builds.
121*6777b538SAndroid Build Coastguard Worker    ios_platform_build = ""
122*6777b538SAndroid Build Coastguard Worker  } else {
123*6777b538SAndroid Build Coastguard Worker    ios_platform_build = ios_sdk_build
124*6777b538SAndroid Build Coastguard Worker  }
125*6777b538SAndroid Build Coastguard Worker}
126*6777b538SAndroid Build Coastguard Worker
127*6777b538SAndroid Build Coastguard Workerif (target_environment == "device" && ios_enable_code_signing) {
128*6777b538SAndroid Build Coastguard Worker  # Automatically select a codesigning identity if no identity is configured.
129*6777b538SAndroid Build Coastguard Worker  # This only applies to device build as simulator builds are not signed.
130*6777b538SAndroid Build Coastguard Worker  if (ios_code_signing_identity == "") {
131*6777b538SAndroid Build Coastguard Worker    find_signing_identity_args = []
132*6777b538SAndroid Build Coastguard Worker    if (ios_code_signing_identity_description != "") {
133*6777b538SAndroid Build Coastguard Worker      find_signing_identity_args = [
134*6777b538SAndroid Build Coastguard Worker        "--matching-pattern",
135*6777b538SAndroid Build Coastguard Worker        ios_code_signing_identity_description,
136*6777b538SAndroid Build Coastguard Worker      ]
137*6777b538SAndroid Build Coastguard Worker    }
138*6777b538SAndroid Build Coastguard Worker    ios_code_signing_identity = exec_script("find_signing_identity.py",
139*6777b538SAndroid Build Coastguard Worker                                            find_signing_identity_args,
140*6777b538SAndroid Build Coastguard Worker                                            "trim string")
141*6777b538SAndroid Build Coastguard Worker  }
142*6777b538SAndroid Build Coastguard Worker}
143*6777b538SAndroid Build Coastguard Worker
144*6777b538SAndroid Build Coastguard Worker# As entitlements are tied to a specific bundle identifier, all the
145*6777b538SAndroid Build Coastguard Worker# test application on iOS share the same identifier. This simplify
146*6777b538SAndroid Build Coastguard Worker# adding new test application (since there is no need to investigate
147*6777b538SAndroid Build Coastguard Worker# which entitlements they need, nor to wait for the mobile provision
148*6777b538SAndroid Build Coastguard Worker# with those entitlements to be generated by Apple and then deployed
149*6777b538SAndroid Build Coastguard Worker# to the infrastructure, ...). The drawback is that since only one
150*6777b538SAndroid Build Coastguard Worker# test application can be installed at a time on a device/simulator
151*6777b538SAndroid Build Coastguard Worker# (as the bundle identifier uniquely identify an application for iOS).
152*6777b538SAndroid Build Coastguard Worker#
153*6777b538SAndroid Build Coastguard Worker# This variable corresponds to the test bundle identifier.
154*6777b538SAndroid Build Coastguard Workershared_bundle_id_for_test_apps =
155*6777b538SAndroid Build Coastguard Worker    "$ios_app_bundle_id_prefix.chrome.unittests.dev"
156