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

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

Issue 1871413002: [iOS/OSX] Refactor mac_framework so that it can be shared with iOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/ios/rules.gni ('k') | ios/web/shell/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/mac/rules.gni
diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni
index cca8f6da44e8f3b6be95f62cc71f3164d881d459..5d616049cb886322ca77ca6de3f570d118b422a2 100644
--- a/build/config/mac/rules.gni
+++ b/build/config/mac/rules.gni
@@ -4,13 +4,10 @@
import("//build/toolchain/toolchain.gni")
-# Template to package a shared library into a Mac framework bundle.
+# This is used as the base template for both iOS and Mac frameworks..
#
# Arguments
#
-# info_plist:
-# string, path to the Info.plist file that will be used for the bundle.
-#
# output_name:
# (optional) string, name of the generated framework without the
# .framework suffix. If omitted, defaults to target_name.
@@ -20,23 +17,28 @@ import("//build/toolchain/toolchain.gni")
# single letter, like "A". If omitted, the Versions/ subdirectory
# structure will not be created, and build output will go directly
# into the framework subdirectory.
-template("mac_framework") {
- assert(defined(invoker.deps),
- "Dependencies must be specified for $target_name")
- assert(defined(invoker.info_plist),
- "The Info.plist file must be specified for $target_name")
-
+#
+# See "gn help shared_library" for more information on arguments supported
+# by shared library target.
+template("framework_bundle") {
_target_name = target_name
_output_name = target_name
if (defined(invoker.output_name)) {
_output_name = invoker.output_name
}
+
+ # If the framework is unversionned, the final _target_name will be the
+ # create_bundle(_framework_target), otherwise an action with the name
+ # _target_name will depends on the the create_bundle() in order to prepare
+ # the versioned directory structure.
+ _framework_target = _target_name
_framework_name = _output_name + ".framework"
- _framework_version = ""
- if (defined(invoker.framework_version)) {
+ _framework_root_dir = "$root_out_dir/$_framework_name"
+ if (defined(invoker.framework_version) && invoker.framework_version != "") {
_framework_version = invoker.framework_version
+ _framework_root_dir += "/Versions/$_framework_version"
+ _framework_target = _target_name + "_create_bundle"
}
- _framework_target = _output_name + "_framework"
_shared_library_target = target_name + "_shared_library"
_shared_library_bundle_data = _shared_library_target + "_bundle_data"
@@ -68,51 +70,32 @@ template("mac_framework") {
]
}
- _info_plist_target = target_name + "_info_plist"
-
- # TODO(rsesek): Process Info.plist variables.
-
- _info_plist_bundle_data = _info_plist_target + "_bundle_data"
-
- bundle_data(_info_plist_bundle_data) {
- visibility = [ ":$_framework_target" ]
- forward_variables_from(invoker, [ "testonly" ])
- sources = [
- invoker.info_plist,
- ]
- outputs = [
- "{{bundle_root_dir}}/Info.plist",
- ]
- }
-
create_bundle(_framework_target) {
- visibility = [ ":$_target_name" ]
forward_variables_from(invoker,
[
"data_deps",
"deps",
"public_deps",
"testonly",
- "visibility",
])
+ if (defined(_framework_version)) {
+ visibility = [ ":$_target_name" ]
+ } else {
+ forward_variables_from(invoker, [ "visibility" ])
+ }
+
if (!defined(deps)) {
deps = []
}
- deps += [
- ":$_info_plist_bundle_data",
- ":$_shared_library_bundle_data",
- ]
+ deps += [ ":$_shared_library_bundle_data" ]
- bundle_root_dir = "$root_out_dir/$_framework_name"
- if (_framework_version != "") {
- bundle_root_dir += "/Versions/$_framework_version"
- }
+ bundle_root_dir = _framework_root_dir
bundle_resources_dir = "$bundle_root_dir/Resources"
bundle_executable_dir = "$bundle_root_dir"
}
- if (_framework_version != "") {
+ if (defined(_framework_version)) {
action(_target_name) {
forward_variables_from(invoker,
[
@@ -132,16 +115,56 @@ template("mac_framework") {
":$_framework_target",
]
}
- } else {
- group(_target_name) {
- forward_variables_from(invoker,
- [
- "visibility",
- "testonly",
- ])
- deps = [
- ":$_framework_target",
- ]
+ }
+}
+
+# Template to package a shared library into a Mac framework bundle.
+#
+# Arguments
+#
+# info_plist:
+# string, path to the Info.plist file that will be used for the bundle.
+#
+# output_name:
+# (optional) string, name of the generated framework without the
+# .framework suffix. If omitted, defaults to target_name.
+#
+# framework_version:
+# (optional) string, version of the framework. Typically this is a
+# single letter, like "A". If omitted, the Versions/ subdirectory
+# structure will not be created, and build output will go directly
+# into the framework subdirectory.
+#
+# See "gn help shared_library" for more information on arguments supported
+# by shared library target.
+template("mac_framework_bundle") {
+ assert(defined(invoker.deps),
+ "Dependencies must be specified for $target_name")
+ assert(defined(invoker.info_plist),
+ "The Info.plist file must be specified for $target_name")
+
+ _info_plist_target = target_name + "_info_plist"
+
+ # TODO(rsesek): Process Info.plist variables.
+
+ _info_plist_bundle_data = _info_plist_target + "_bundle_data"
+
+ bundle_data(_info_plist_bundle_data) {
+ forward_variables_from(invoker, [ "testonly" ])
+ sources = [
+ invoker.info_plist,
+ ]
+ outputs = [
+ "{{bundle_root_dir}}/Info.plist",
+ ]
+ }
+
+ framework_bundle(target_name) {
+ forward_variables_from(invoker, "*", [ "info_plist" ])
+
+ if (!defined(deps)) {
+ deps = []
}
+ deps += [ ":$_info_plist_bundle_data" ]
}
}
« no previous file with comments | « build/config/ios/rules.gni ('k') | ios/web/shell/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698