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

Side by Side Diff: build/config/mac/rules.gni

Issue 1910133002: [iOS/Mac/GN] The framework_bundle template should not force dependencies to link it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/toolchain/toolchain.gni") 5 import("//build/toolchain/toolchain.gni")
6 import("//build/config/mac/mac_sdk.gni") 6 import("//build/config/mac/mac_sdk.gni")
7 7
8 # This is used as the base template for both iOS and Mac frameworks.. 8 # This is used as the base template for both iOS and Mac frameworks.
9 #
10 # By default, the bundle target this template generates does not link the
brettw 2016/04/21 20:27:55 This seems like it would work in the other place.
Robert Sesek 2016/04/22 15:27:06 Done.
11 # resulting framework into anything that depends on it. If a dependency wants
12 # a link-time (as well as build-time) dependency on the framework bundle,
13 # depend against "$target_name+link". If only the build-time dependency is
14 # required (e.g., for copying into another bundle), then use "$target_name".
9 # 15 #
10 # Arguments 16 # Arguments
11 # 17 #
12 # output_name: 18 # output_name:
13 # (optional) string, name of the generated framework without the 19 # (optional) string, name of the generated framework without the
14 # .framework suffix. If omitted, defaults to target_name. 20 # .framework suffix. If omitted, defaults to target_name.
15 # 21 #
16 # framework_version: 22 # framework_version:
17 # (optional) string, version of the framework. Typically this is a 23 # (optional) string, version of the framework. Typically this is a
18 # single letter, like "A". If omitted, the Versions/ subdirectory 24 # single letter, like "A". If omitted, the Versions/ subdirectory
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 public_deps = [ 79 public_deps = [
74 ":$_shared_library_target", 80 ":$_shared_library_target",
75 ] 81 ]
76 } 82 }
77 83
78 _framework_public_config = _target_name + "_public_config" 84 _framework_public_config = _target_name + "_public_config"
79 config(_framework_public_config) { 85 config(_framework_public_config) {
80 # TODO(sdefresne): should we have a framework_dirs similar to lib_dirs 86 # TODO(sdefresne): should we have a framework_dirs similar to lib_dirs
81 # and include_dirs to avoid duplicate values on the command-line. 87 # and include_dirs to avoid duplicate values on the command-line.
82 visibility = [ ":$_framework_target" ] 88 visibility = [ ":$_framework_target" ]
83 common_flags = [ "-F" + rebase_path("$root_out_dir/.", root_out_dir) ] 89 ldflags = [ "-F" + rebase_path("$root_out_dir/.", root_out_dir) ]
84 cflags_objc = common_flags
sdefresne 2016/04/22 07:59:48 I think we need -F in cflags_objc/cflags_objcc whe
Robert Sesek 2016/04/22 15:27:06 I moved that to the ios/rules.gni config since Mac
85 cflags_objcc = common_flags
86 ldflags = common_flags
87 lib_dirs = [ root_out_dir ] 90 lib_dirs = [ root_out_dir ]
88 libs = [ _framework_name ] 91 libs = [ _framework_name ]
89 } 92 }
90 93
91 create_bundle(_framework_target) { 94 create_bundle(_framework_target) {
92 forward_variables_from(invoker, 95 forward_variables_from(invoker,
93 [ 96 [
94 "data_deps", 97 "data_deps",
95 "deps", 98 "deps",
96 "public_deps", 99 "public_deps",
97 "testonly", 100 "testonly",
98 ]) 101 ])
99 102
100 if (defined(_framework_version)) { 103 if (defined(_framework_version)) {
101 visibility = [ ":$_target_name" ] 104 visibility = [ ":$_target_name" ]
102 } else { 105 } else {
103 forward_variables_from(invoker, [ "visibility" ]) 106 if (defined(invoker.visibility)) {
107 visibility = invoker.visibility
108 visibility += [ ":$_target_name+link" ]
109 }
104 } 110 }
105 111
106 if (!defined(public_deps)) { 112 if (!defined(public_deps)) {
107 public_deps = [] 113 public_deps = []
108 } 114 }
109 public_deps += [ ":$_shared_library_bundle_data" ] 115 public_deps += [ ":$_shared_library_bundle_data" ]
110 116
111 public_configs = [ ":$_framework_public_config" ]
112
113 bundle_root_dir = _framework_root_dir 117 bundle_root_dir = _framework_root_dir
114 bundle_resources_dir = "$bundle_root_dir/Resources" 118 bundle_resources_dir = "$bundle_root_dir/Resources"
115 bundle_executable_dir = "$bundle_root_dir" 119 bundle_executable_dir = "$bundle_root_dir"
116 } 120 }
117 121
118 if (defined(_framework_version)) { 122 if (defined(_framework_version)) {
119 action(_target_name) { 123 action(_target_name) {
120 forward_variables_from(invoker, 124 forward_variables_from(invoker, [ "testonly" ])
121 [ 125
122 "visibility", 126 if (defined(invoker.visibility)) {
123 "testonly", 127 visibility = invoker.visibility
124 ]) 128 visibility += [ ":$_target_name+link" ]
129 }
130
125 script = "$root_out_dir/gyp-mac-tool" 131 script = "$root_out_dir/gyp-mac-tool"
126 outputs = [ 132 outputs = [
127 "$root_out_dir/$_framework_name/Versions/Current", 133 "$root_out_dir/$_framework_name/Versions/Current",
128 ] 134 ]
129 args = [ 135 args = [
130 "package-framework", 136 "package-framework",
131 "$_framework_name", 137 "$_framework_name",
132 "$_framework_version", 138 "$_framework_version",
133 ] 139 ]
134 public_deps = [ 140 public_deps = [
135 ":$_framework_target", 141 ":$_framework_target",
136 ] 142 ]
137 } 143 }
138 } 144 }
145
146 group(_target_name + "+link") {
147 forward_variables_from(invoker,
148 [
149 "visibility",
150 "testonly",
151 ])
152 public_deps = [
153 ":$_target_name",
154 ]
155 public_configs = [ ":$_framework_public_config" ]
156 }
139 } 157 }
140 158
141 # Template to combile .xib or .storyboard files. 159 # Template to combile .xib or .storyboard files.
142 # 160 #
143 # 161 #
144 # Arguments 162 # Arguments
145 # 163 #
146 # sources: 164 # sources:
147 # list of string, sources to compile 165 # list of string, sources to compile
148 # 166 #
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 ]) 433 ])
416 if (!defined(deps)) { 434 if (!defined(deps)) {
417 deps = [] 435 deps = []
418 } 436 }
419 deps += [ ":$_loadable_module_bundle_data" ] 437 deps += [ ":$_loadable_module_bundle_data" ]
420 438
421 bundle_root_dir = "$root_out_dir/$_target_name.plugin/Contents" 439 bundle_root_dir = "$root_out_dir/$_target_name.plugin/Contents"
422 bundle_executable_dir = "$bundle_root_dir/MacOS" 440 bundle_executable_dir = "$bundle_root_dir/MacOS"
423 } 441 }
424 } 442 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698