OLD | NEW |
(Empty) | |
| 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 |
| 3 # found in the LICENSE file. |
| 4 |
| 5 # Given a framework, generates a header file declaring the classes from that |
| 6 # framework using class-dump tool. |
| 7 # |
| 8 # Arguments: |
| 9 # |
| 10 # framework_name |
| 11 # string, short name of the framework. |
| 12 # |
| 13 # framework_path |
| 14 # string, location of the framework, usually a sub-directory of |
| 15 # Xcode application bundle. |
| 16 # |
| 17 # framework_version |
| 18 # (optional) string, version of the framework to dump class for, |
| 19 # defaults to "Current" if omitted. |
| 20 # |
| 21 # class_dump_filter |
| 22 # regexp, only display classes matching this regular expression. |
| 23 # |
| 24 # topological_sort |
| 25 # (optional) boolean, sort classes, categories, and protocols by |
| 26 # inheritance, defaults to false if omitted. |
| 27 # |
| 28 # All common target arugments ("visibility", "deps", ...) are forwarded by |
| 29 # the template. |
| 30 template("class_dump") { |
| 31 assert(defined(invoker.framework_name), |
| 32 "framework_name must be defined for $target_name") |
| 33 assert(defined(invoker.framework_path), |
| 34 "framework_path must be defined for $target_name") |
| 35 assert(defined(invoker.class_dump_filter), |
| 36 "class_dump_filter must be defined for $target_name") |
| 37 |
| 38 framework_version = "Current" |
| 39 if (defined(invoker.framework_version)) { |
| 40 framework_version = invoker.framework_version |
| 41 } |
| 42 |
| 43 sort_args = [] |
| 44 if (defined(invoker.topological_sort) && invoker.topological_sort) { |
| 45 sort_args = [ "-I" ] |
| 46 } |
| 47 |
| 48 class_dump = "//third_party/class-dump(${host_toolchain})" |
| 49 class_dump_bin = get_label_info(class_dump, "root_out_dir") + "/class-dump" |
| 50 framework = "${invoker.framework_path}/${invoker.framework_name}.framework" |
| 51 |
| 52 _config_name = target_name + "_config" |
| 53 |
| 54 config(_config_name) { |
| 55 visibility = [ ":$target_name" ] |
| 56 include_dirs = [ "$target_gen_dir" ] |
| 57 } |
| 58 |
| 59 action(target_name) { |
| 60 forward_variables_from(invoker, |
| 61 "*", |
| 62 [ |
| 63 "args", |
| 64 "class_dump_filter", |
| 65 "framework_name", |
| 66 "framework_path", |
| 67 "framework_version", |
| 68 "script", |
| 69 "sources", |
| 70 ]) |
| 71 if (!defined(deps)) { |
| 72 deps = [] |
| 73 } |
| 74 deps += [ class_dump ] |
| 75 public_configs = [ ":$_config_name" ] |
| 76 |
| 77 script = "//third_party/class-dump/class-dump.py" |
| 78 inputs = [ |
| 79 class_dump_bin, |
| 80 ] |
| 81 sources = [ |
| 82 "${framework}/Versions/${framework_version}/${invoker.framework_name}", |
| 83 ] |
| 84 outputs = [ |
| 85 "$target_gen_dir/${invoker.framework_name}.h", |
| 86 ] |
| 87 args = [ |
| 88 "-t=" + rebase_path(class_dump_bin, root_build_dir), |
| 89 "-o=" + rebase_path(outputs[0], root_build_dir), |
| 90 "--", |
| 91 "-C${invoker.class_dump_filter}", |
| 92 "${framework}", |
| 93 ] |
| 94 args += sort_args |
| 95 } |
| 96 } |
OLD | NEW |