Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: build/config/ios/rules.gni

Issue 2187343003: Embeds the entitlements file in the binary in simulator builds. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix typo breaking code signing (not exercised by the bots). Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/ios/entitlements.plist ('k') | build/config/mac/base_rules.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/ios/rules.gni
diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni
index 1c2ce941a1123dc523bfd87abe88a8bb3e60b48c..4f01ddc21229e74d884a188d3462b93cb0aa5674 100644
--- a/build/config/ios/rules.gni
+++ b/build/config/ios/rules.gni
@@ -151,6 +151,53 @@ template("ios_app_bundle") {
_is_fat_build_main_target = current_toolchain == default_toolchain
}
+ _executable_extra_deps = []
+ _executable_extra_inputs = []
+ _executable_extra_ldflags = []
+
+ # Embeds the entitlements file if building for simulator. This is optional
+ # with Xcode 7 or older but required with Xcode 8. This is not necessary for
+ # device build as the entitlement is embedded via the codesigning step.
+ #
+ # As the generation of the entitlement depends on the
+ if (use_ios_simulator) {
+ _toolchain_suffix = ""
+ if (_is_fat_build && !_is_fat_build_main_target) {
+ _toolchain_suffix = "($default_toolchain)"
+ }
+
+ _generate_entitlements_target = _target_name + "_gen_entitlements"
+ _generate_entitlements_target_with_toolchain_suffix =
+ "$_generate_entitlements_target$_toolchain_suffix"
+
+ # TODO: the correct way to generate _generate_entitlements_output would
+ # be the following, but get_label_info() ignores the toolchain specifier
+ # so use a workaround.
+ #
+ # _generate_entitlements_output =
+ # get_label_info(
+ # _generate_entitlements_target_with_toolchain_suffix,
+ # "target_gen_dir") +
+ # "/$_output_name.xcent"
+ _generate_entitlements_output = "$root_build_dir/gen" + get_label_info(
+ _generate_entitlements_target,
+ "dir") + "/" + "$_output_name.xcent"
+
+ _executable_extra_inputs += [ _generate_entitlements_output ]
+ _executable_extra_deps +=
+ [ ":$_generate_entitlements_target_with_toolchain_suffix" ]
+ _executable_extra_ldflags += [
+ "-Xlinker",
+ "-sectcreate",
+ "-Xlinker",
+ "__TEXT",
+ "-Xlinker",
+ "__entitlements",
+ "-Xlinker",
+ rebase_path(_generate_entitlements_output, root_build_dir),
+ ]
+ }
+
if (_is_fat_build && !_is_fat_build_main_target) {
# For the non-default toolchain of a fat-build, the template expands to a
# single "executable" target that creates "$root_out_dir/$_output_name".
@@ -173,6 +220,21 @@ template("ios_app_bundle") {
visibility += [ ":*($default_toolchain)" ]
}
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += _executable_extra_deps
+
+ if (!defined(ldflags)) {
+ ldflags = []
+ }
+ ldflags += _executable_extra_ldflags
+
+ if (!defined(inputs)) {
+ inputs = []
+ }
+ inputs += _executable_extra_inputs
+
output_name = _output_name
if (!defined(libs)) {
libs = []
@@ -186,8 +248,23 @@ template("ios_app_bundle") {
_generate_info_plist = target_name + "_generate_info_plist"
_bundle_data_info_plist = target_name + "_bundle_data_info_plist"
+ if (use_ios_simulator || ios_enable_code_signing) {
+ if (defined(invoker.entitlements_path)) {
+ _entitlements_path = invoker.entitlements_path
+ } else {
+ if (use_ios_simulator) {
+ _entitlements_path = "//build/config/ios/entitlements.plist"
+ } else {
+ _entitlements_path = "$ios_sdk_path/Entitlements.plist"
+ }
+ }
+ }
+
ios_info_plist(_generate_info_plist) {
visibility = [ ":$_bundle_data_info_plist" ]
+ if (use_ios_simulator) {
+ visibility += [ ":$_generate_entitlements_target" ]
+ }
executable_name = _output_name
forward_variables_from(invoker,
[
@@ -209,6 +286,31 @@ template("ios_app_bundle") {
]
}
+ if (use_ios_simulator) {
+ action(_generate_entitlements_target) {
+ _gen_info_plist_target = ":$_generate_info_plist"
+ _gen_info_plist_outputs = get_target_outputs(_gen_info_plist_target)
+ _info_plist_path = _gen_info_plist_outputs[0]
+
+ script = "//build/config/ios/codesign.py"
+ deps = [
+ _gen_info_plist_target,
+ ]
+ sources = [
+ _entitlements_path,
+ _info_plist_path,
+ ]
+ outputs = [
+ _generate_entitlements_output,
+ ]
+ args = [
+ "-e=" + rebase_path(_entitlements_path, root_build_dir),
+ "generate-entitlements",
+ "-p=" + rebase_path(_info_plist_path, root_build_dir),
+ ] + rebase_path(outputs, root_build_dir)
+ }
+ }
+
_link_executable = _target_name + "_executable"
if (ios_enable_code_signing) {
@@ -258,6 +360,21 @@ template("ios_app_bundle") {
output_dir = target_out_dir
}
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += _executable_extra_deps
+
+ if (!defined(ldflags)) {
+ ldflags = []
+ }
+ ldflags += _executable_extra_ldflags
+
+ if (!defined(inputs)) {
+ inputs = []
+ }
+ inputs += _executable_extra_inputs
+
if (!defined(libs)) {
libs = []
}
@@ -423,11 +540,6 @@ template("ios_app_bundle") {
bundle_plugins_dir = "$bundle_root_dir/PlugIns"
if (ios_enable_code_signing) {
- _entitlements_path = "$ios_sdk_path/Entitlements.plist"
- if (defined(invoker.entitlements_path)) {
- _entitlements_path = invoker.entitlements_path
- }
-
code_signing_script = "//build/config/ios/codesign.py"
code_signing_sources = [
_entitlements_path,
@@ -445,9 +557,10 @@ template("ios_app_bundle") {
}
}
code_signing_args = [
+ "-e=" + rebase_path(_entitlements_path, root_build_dir),
+ "code-sign-bundle",
"-i=" + ios_code_signing_identity,
"-b=" + rebase_path("$target_out_dir/$_output_name", root_build_dir),
- "-e=" + rebase_path(_entitlements_path, root_build_dir),
rebase_path(bundle_root_dir, root_build_dir),
]
if (defined(invoker.extra_system_frameworks)) {
@@ -1146,10 +1259,11 @@ template("ios_xctest_test") {
"$bundle_root_dir/embedded.mobileprovision",
]
code_signing_args = [
+ "-e=" + rebase_path(_entitlements_path, root_build_dir),
+ "code-sign-bundle",
"-i=" + ios_code_signing_identity,
"-b=" +
rebase_path("$target_out_dir/$_xctest_output", root_build_dir),
- "-e=" + rebase_path(_entitlements_path, root_build_dir),
rebase_path(bundle_root_dir, root_build_dir),
]
}
« no previous file with comments | « build/config/ios/entitlements.plist ('k') | build/config/mac/base_rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698