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

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

Issue 2627983002: Avoid propagating configs across toolchain. (Closed)
Patch Set: Created 3 years, 11 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 | « no previous file | no next file » | 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 7dad6aa04121c91a80bc8671771de5389cf82b89..8611e5a4cd6bcad98f38b2ad8e5c87a191824e41 100644
--- a/build/config/ios/rules.gni
+++ b/build/config/ios/rules.gni
@@ -997,15 +997,53 @@ template("ios_framework_bundle") {
_has_public_headers =
defined(invoker.public_headers) && invoker.public_headers != []
+ # Public configs are not propagated across toolchain (see crbug.com/675224)
+ # so some configs have to be defined for both default_toolchain and all others
+ # toolchains when performing a fat build. Use "get_label_info" to construct
+ # the path since they need to be relative to the default_toolchain.
+
+ _default_toolchain_root_out_dir =
+ get_label_info("$_target_name($default_toolchain)", "root_out_dir")
+ _default_toolchain_target_gen_dir =
+ get_label_info("$_target_name($default_toolchain)", "target_gen_dir")
+
if (_has_public_headers) {
_framework_headers_target = _target_name + "_framework_headers"
_framework_headers_config = _target_name + "_framework_headers_config"
+ config(_framework_headers_config) {
+ # The link settings are inherited from the framework_bundle config.
+ cflags = [
+ "-F",
+ rebase_path("$_default_toolchain_root_out_dir/.", root_build_dir),
+ ]
+ }
+
_headers_map_config = _target_name + "_headers_map"
+ _header_map_filename =
+ "$_default_toolchain_target_gen_dir/$_output_name.headers.hmap"
+ config(_headers_map_config) {
+ visibility = [ ":$_target_name" ]
+ include_dirs = [ _header_map_filename ]
+ }
}
_arch_shared_library_source = _target_name + "_arch_shared_library_sources"
_arch_shared_library_target = _target_name + "_arch_shared_library"
_lipo_shared_library_target = _target_name + "_shared_library"
+ _link_target_name = _target_name + "+link"
+
+ _framework_public_config = _target_name + "_public_config"
+ config(_framework_public_config) {
+ # TODO(sdefresne): should we have a framework_dirs similar to lib_dirs
+ # and include_dirs to avoid duplicate values on the command-line.
+ visibility = [ ":$_target_name" ]
+ ldflags = [
+ "-F",
+ rebase_path("$_default_toolchain_root_out_dir/.", root_build_dir),
+ ]
+ lib_dirs = [ root_out_dir ]
+ libs = [ "$_output_name.framework" ]
+ }
source_set(_arch_shared_library_source) {
forward_variables_from(invoker,
@@ -1025,8 +1063,8 @@ template("ios_framework_bundle") {
if (_has_public_headers) {
configs += [
- ":$_framework_headers_config($default_toolchain)",
- ":$_headers_map_config($default_toolchain)",
+ ":$_framework_headers_config",
+ ":$_headers_map_config",
]
if (!defined(deps)) {
@@ -1097,15 +1135,24 @@ template("ios_framework_bundle") {
]
}
- group(_target_name + "+link") {
+ group(_link_target_name) {
forward_variables_from(invoker,
[
+ "public_configs",
"visibility",
"testonly",
])
public_deps = [
- ":$_target_name+link($default_toolchain)",
+ ":$_link_target_name($default_toolchain)",
]
+
+ if (!defined(public_configs)) {
+ public_configs = []
+ }
+ public_configs += [ ":$_framework_public_config" ]
+ if (_has_public_headers) {
+ public_configs += [ ":$_framework_headers_config" ]
+ }
}
if (defined(invoker.bundle_deps)) {
@@ -1116,8 +1163,6 @@ template("ios_framework_bundle") {
_public_headers = invoker.public_headers
_framework_root = "$root_out_dir/$_output_name.framework"
- _header_map_filename = "$target_gen_dir/$_output_name.headers.hmap"
-
_compile_headers_map_target = _target_name + "_compile_headers_map"
action(_compile_headers_map_target) {
visibility = [ ":$_framework_headers_target" ]
@@ -1165,11 +1210,6 @@ template("ios_framework_bundle") {
]
}
- config(_headers_map_config) {
- visibility = [ ":$_target_name" ]
- include_dirs = [ _header_map_filename ]
- }
-
group(_framework_headers_target) {
deps = [
":$_compile_headers_map_target",
@@ -1177,14 +1217,6 @@ template("ios_framework_bundle") {
":$_create_module_map_target",
]
}
-
- config(_framework_headers_config) {
- # The link settings are inherited from the framework_bundle config.
- cflags = [
- "-F",
- rebase_path("$root_out_dir/.", root_build_dir),
- ]
- }
}
lipo_binary(_lipo_shared_library_target) {
@@ -1200,19 +1232,6 @@ template("ios_framework_bundle") {
arch_binary_output = _output_name
}
- _framework_public_config = _target_name + "_public_config"
- config(_framework_public_config) {
- # TODO(sdefresne): should we have a framework_dirs similar to lib_dirs
- # and include_dirs to avoid duplicate values on the command-line.
- visibility = [ ":$_target_name" ]
- ldflags = [
- "-F",
- rebase_path("$root_out_dir/.", root_build_dir),
- ]
- lib_dirs = [ root_out_dir ]
- libs = [ "$_output_name.framework" ]
- }
-
_info_plist_target = _target_name + "_info_plist"
_info_plist_bundle = _target_name + "_info_plist_bundle"
ios_info_plist(_info_plist_target) {
@@ -1265,11 +1284,11 @@ template("ios_framework_bundle") {
deps += [ ":$_info_plist_bundle" ]
}
- group(_target_name + "+link") {
+ group(_link_target_name) {
forward_variables_from(invoker,
[
- "public_deps",
"public_configs",
+ "public_deps",
"testonly",
"visibility",
])
@@ -1277,11 +1296,11 @@ template("ios_framework_bundle") {
public_deps = []
}
public_deps += [ ":$_target_name" ]
+
if (!defined(public_configs)) {
public_configs = []
}
public_configs += [ ":$_framework_public_config" ]
-
if (_has_public_headers) {
public_configs += [ ":$_framework_headers_config" ]
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698