| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 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 # This file contains rules that are shared between Mac and iOS. | 5 # This file contains rules that are shared between Mac and iOS. |
| 6 | 6 |
| 7 import("//build/toolchain/toolchain.gni") | 7 import("//build/toolchain/toolchain.gni") |
| 8 import("//build/config/mac/symbols.gni") | 8 import("//build/config/mac/symbols.gni") |
| 9 | 9 |
| 10 if (is_mac) { | 10 if (is_mac) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 "plutil", | 49 "plutil", |
| 50 "-convert", | 50 "-convert", |
| 51 invoker.format, | 51 invoker.format, |
| 52 "-o", | 52 "-o", |
| 53 rebase_path(invoker.output, root_build_dir), | 53 rebase_path(invoker.output, root_build_dir), |
| 54 rebase_path(invoker.source, root_build_dir), | 54 rebase_path(invoker.source, root_build_dir), |
| 55 ] | 55 ] |
| 56 } | 56 } |
| 57 } | 57 } |
| 58 | 58 |
| 59 # The base template used to generate Info.plist files for iOS and Mac apps and | 59 # Template to merge multiple plist files and perform variable substitutions. |
| 60 # frameworks. | |
| 61 # | 60 # |
| 62 # Arguments | 61 # Arguments |
| 63 # | 62 # |
| 64 # plist_templates: | 63 # plist_templates: |
| 65 # string array, paths to plist files which will be used for the bundle. | 64 # string array, paths to plist files which will be used for the bundle. |
| 66 # | 65 # |
| 67 # executable_name: | |
| 68 # string, name of the generated target used for the product | |
| 69 # and executable name as specified in the output Info.plist. | |
| 70 # | |
| 71 # format: | 66 # format: |
| 72 # string, the format to `plutil -convert` the plist to when | 67 # string, the format to `plutil -convert` the plist to when |
| 73 # generating the output. | 68 # generating the output. |
| 74 # | 69 # |
| 75 # extra_substitutions: | 70 # substitutions: |
| 76 # (optional) string array, 'key=value' pairs for extra fields which are | 71 # string array, 'key=value' pairs used to replace ${key} by value |
| 77 # specified in a source Info.plist template. | 72 # when generating the output plist file. |
| 78 # | 73 # |
| 79 # output_name: | 74 # output_name: |
| 80 # (optional) string, name of the generated plist file, default to | 75 # string, name of the generated plist file. |
| 81 # "$target_gen_dir/$target_name.plist". | 76 template("compile_plist") { |
| 82 template("info_plist") { | |
| 83 assert(defined(invoker.plist_templates), | 77 assert(defined(invoker.plist_templates), |
| 84 "A list of template plist files must be specified for $target_name") | 78 "A list of template plist files must be specified for $target_name") |
| 85 assert(defined(invoker.executable_name), | |
| 86 "The executable_name must be specified for $target_name") | |
| 87 assert(defined(invoker.format), | 79 assert(defined(invoker.format), |
| 88 "The plist format must be specified for $target_name") | 80 "The plist format must be specified for $target_name") |
| 89 executable_name = invoker.executable_name | 81 assert(defined(invoker.substitutions), |
| 82 "A list of key=value pairs must be specified for $target_name") |
| 83 assert(defined(invoker.output_name), |
| 84 "The name of the output file must be specified for $target_name") |
| 90 | 85 |
| 91 _output_name = "$target_gen_dir/$target_name.plist" | 86 _output_name = invoker.output_name |
| 92 if (defined(invoker.output_name)) { | |
| 93 _output_name = invoker.output_name | |
| 94 } | |
| 95 | |
| 96 _merged_name = get_path_info(_output_name, "dir") + "/" + | 87 _merged_name = get_path_info(_output_name, "dir") + "/" + |
| 97 get_path_info(_output_name, "name") + "_merged" + | 88 get_path_info(_output_name, "name") + "_merged." + |
| 98 get_path_info(_output_name, "extension") | 89 get_path_info(_output_name, "extension") |
| 99 | 90 |
| 100 action(target_name + "_merge_templates") { | 91 _merge_target = target_name + "_merge" |
| 92 |
| 93 action(_merge_target) { |
| 101 forward_variables_from(invoker, | 94 forward_variables_from(invoker, |
| 102 [ | 95 [ |
| 103 "deps", | 96 "deps", |
| 104 "testonly", | 97 "testonly", |
| 105 ]) | 98 ]) |
| 106 | 99 |
| 107 script = "//build/config/mac/plist_util.py" | 100 script = "//build/config/mac/plist_util.py" |
| 108 sources = invoker.plist_templates | 101 sources = invoker.plist_templates |
| 109 outputs = [ | 102 outputs = [ |
| 110 _merged_name, | 103 _merged_name, |
| 111 ] | 104 ] |
| 112 args = [ | 105 args = [ |
| 113 "merge", | 106 "merge", |
| 114 "-f=" + invoker.format, | 107 "-f=" + invoker.format, |
| 115 "-o=" + rebase_path(_merged_name, root_build_dir), | 108 "-o=" + rebase_path(_merged_name, root_build_dir), |
| 116 ] + rebase_path(sources, root_build_dir) | 109 ] + rebase_path(invoker.plist_templates, root_build_dir) |
| 117 } | 110 } |
| 118 | 111 |
| 119 action(target_name) { | 112 action(target_name) { |
| 120 forward_variables_from(invoker, | 113 forward_variables_from(invoker, |
| 121 [ | 114 [ |
| 122 "testonly", | 115 "testonly", |
| 123 "visibility", | 116 "visibility", |
| 124 ]) | 117 ]) |
| 125 script = "//build/config/mac/plist_util.py" | 118 script = "//build/config/mac/plist_util.py" |
| 126 sources = [ | 119 sources = [ |
| 127 _merged_name, | 120 _merged_name, |
| 128 ] | 121 ] |
| 129 outputs = [ | 122 outputs = [ |
| 130 _output_name, | 123 _output_name, |
| 131 ] | 124 ] |
| 132 args = [ "substitute" ] | 125 args = [ |
| 133 if (defined(invoker.extra_substitutions)) { | 126 "substitute", |
| 134 foreach(substitution, invoker.extra_substitutions) { | 127 "-f=" + invoker.format, |
| 135 args += [ "-s=$substitution" ] | |
| 136 } | |
| 137 } | |
| 138 args += [ | |
| 139 "-s=BUILD_MACHINE_OS_BUILD=$machine_os_build", | |
| 140 "-s=EXECUTABLE_NAME=$executable_name", | |
| 141 "-s=GCC_VERSION=com.apple.compilers.llvm.clang.1_0", | |
| 142 "-s=PRODUCT_NAME=$executable_name", | |
| 143 "-s=XCODE_BUILD=$xcode_build", | |
| 144 "-s=XCODE_VERSION=$xcode_version", | |
| 145 "-o=" + rebase_path(_output_name, root_build_dir), | 128 "-o=" + rebase_path(_output_name, root_build_dir), |
| 146 "-t=" + rebase_path(_merged_name, root_build_dir), | 129 "-t=" + rebase_path(_merged_name, root_build_dir), |
| 147 "-f=" + invoker.format, | |
| 148 ] | 130 ] |
| 131 foreach(_substitution, invoker.substitutions) { |
| 132 args += [ "-s=$_substitution" ] |
| 133 } |
| 149 deps = [ | 134 deps = [ |
| 150 ":" + target_name + "_merge_templates", | 135 ":$_merge_target", |
| 151 ] | 136 ] |
| 152 } | 137 } |
| 153 } | 138 } |
| 154 | 139 |
| 140 # The base template used to generate Info.plist files for iOS and Mac apps and |
| 141 # frameworks. |
| 142 # |
| 143 # Arguments |
| 144 # |
| 145 # plist_templates: |
| 146 # string array, paths to plist files which will be used for the bundle. |
| 147 # |
| 148 # executable_name: |
| 149 # string, name of the generated target used for the product |
| 150 # and executable name as specified in the output Info.plist. |
| 151 # |
| 152 # format: |
| 153 # string, the format to `plutil -convert` the plist to when |
| 154 # generating the output. |
| 155 # |
| 156 # extra_substitutions: |
| 157 # (optional) string array, 'key=value' pairs for extra fields which are |
| 158 # specified in a source Info.plist template. |
| 159 # |
| 160 # output_name: |
| 161 # (optional) string, name of the generated plist file, default to |
| 162 # "$target_gen_dir/$target_name.plist". |
| 163 template("info_plist") { |
| 164 assert(defined(invoker.executable_name), |
| 165 "The executable_name must be specified for $target_name") |
| 166 executable_name = invoker.executable_name |
| 167 |
| 168 compile_plist(target_name) { |
| 169 forward_variables_from(invoker, |
| 170 [ |
| 171 "plist_templates", |
| 172 "testonly", |
| 173 "deps", |
| 174 "visibility", |
| 175 "format", |
| 176 ]) |
| 177 |
| 178 if (defined(invoker.output_name)) { |
| 179 output_name = invoker.output_name |
| 180 } else { |
| 181 output_name = "$target_gen_dir/$target_name.plist" |
| 182 } |
| 183 |
| 184 substitutions = [ |
| 185 "BUILD_MACHINE_OS_BUILD=$machine_os_build", |
| 186 "EXECUTABLE_NAME=$executable_name", |
| 187 "GCC_VERSION=com.apple.compilers.llvm.clang.1_0", |
| 188 "PRODUCT_NAME=$executable_name", |
| 189 "XCODE_BUILD=$xcode_build", |
| 190 "XCODE_VERSION=$xcode_version", |
| 191 ] |
| 192 if (defined(invoker.extra_substitutions)) { |
| 193 substitutions += invoker.extra_substitutions |
| 194 } |
| 195 } |
| 196 } |
| 197 |
| 155 # Template to combile .xib or .storyboard files. | 198 # Template to combile .xib or .storyboard files. |
| 156 # | 199 # |
| 157 # Arguments | 200 # Arguments |
| 158 # | 201 # |
| 159 # sources: | 202 # sources: |
| 160 # list of string, sources to compile | 203 # list of string, sources to compile |
| 161 # | 204 # |
| 162 # ibtool_flags: | 205 # ibtool_flags: |
| 163 # (optional) list of string, additional flags to pass to the ibtool | 206 # (optional) list of string, additional flags to pass to the ibtool |
| 164 template("compile_xibs") { | 207 template("compile_xibs") { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 189 ] | 232 ] |
| 190 if (!use_system_xcode) { | 233 if (!use_system_xcode) { |
| 191 args += [ | 234 args += [ |
| 192 "--developer_dir", | 235 "--developer_dir", |
| 193 hermetic_xcode_path, | 236 hermetic_xcode_path, |
| 194 ] | 237 ] |
| 195 } | 238 } |
| 196 args += ibtool_flags | 239 args += ibtool_flags |
| 197 } | 240 } |
| 198 } | 241 } |
| OLD | NEW |