| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 introduces two related templates that act like action and | 5 # This file introduces two related templates that act like action and |
| 6 # action_foreach but instead of running a Python script, it will compile a | 6 # action_foreach but instead of running a Python script, it will compile a |
| 7 # given tool in the host toolchain and run that (either once or over the list | 7 # given tool in the host toolchain and run that (either once or over the list |
| 8 # of inputs, depending on the variant). | 8 # of inputs, depending on the variant). |
| 9 # | 9 # |
| 10 # Parameters | 10 # Parameters |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 # if (host_toolchain == current_toolchain) { | 59 # if (host_toolchain == current_toolchain) { |
| 60 # executable("mytool") { | 60 # executable("mytool") { |
| 61 # ... | 61 # ... |
| 62 # } | 62 # } |
| 63 # } | 63 # } |
| 64 # The if statement around the executable is optional. That says "I only care | 64 # The if statement around the executable is optional. That says "I only care |
| 65 # about this target in the host toolchain". Usually this is what you want, and | 65 # about this target in the host toolchain". Usually this is what you want, and |
| 66 # saves unnecessarily compiling your tool for the target platform. But if you | 66 # saves unnecessarily compiling your tool for the target platform. But if you |
| 67 # need a target build of your tool as well, just leave off the if statement. | 67 # need a target build of your tool as well, just leave off the if statement. |
| 68 | 68 |
| 69 import("dart_host_toolchain.gni") |
| 70 |
| 69 if (host_os == "win") { | 71 if (host_os == "win") { |
| 70 _host_executable_suffix = ".exe" | 72 _host_executable_suffix = ".exe" |
| 71 } else { | 73 } else { |
| 72 _host_executable_suffix = "" | 74 _host_executable_suffix = "" |
| 73 } | 75 } |
| 74 | 76 |
| 75 _dart_root = rebase_path("..") | 77 _dart_root = rebase_path("..") |
| 76 | 78 |
| 77 template("compiled_action") { | 79 template("compiled_action") { |
| 78 assert(defined(invoker.tool), "tool must be defined for $target_name") | 80 assert(defined(invoker.tool), "tool must be defined for $target_name") |
| (...skipping 11 matching lines...) Expand all Loading... |
| 90 script = "$_dart_root/build/gn_run_binary.py" | 92 script = "$_dart_root/build/gn_run_binary.py" |
| 91 | 93 |
| 92 if (defined(invoker.inputs)) { | 94 if (defined(invoker.inputs)) { |
| 93 inputs = invoker.inputs | 95 inputs = invoker.inputs |
| 94 } else { | 96 } else { |
| 95 inputs = [] | 97 inputs = [] |
| 96 } | 98 } |
| 97 outputs = invoker.outputs | 99 outputs = invoker.outputs |
| 98 | 100 |
| 99 # Constuct the host toolchain version of the tool. | 101 # Constuct the host toolchain version of the tool. |
| 100 host_tool = invoker.tool + "($host_toolchain)" | 102 host_tool = invoker.tool + "($dart_host_toolchain)" |
| 101 | 103 |
| 102 # Get the path to the executable. Currently, this assumes that the tool | 104 # Get the path to the executable. Currently, this assumes that the tool |
| 103 # does not specify output_name so that the target name is the name to use. | 105 # does not specify output_name so that the target name is the name to use. |
| 104 # If that's not the case, we'll need another argument to the script to | 106 # If that's not the case, we'll need another argument to the script to |
| 105 # specify this, since we can't know what the output name is (it might be in | 107 # specify this, since we can't know what the output name is (it might be in |
| 106 # another file not processed yet). | 108 # another file not processed yet). |
| 107 host_executable = | 109 host_executable = |
| 108 get_label_info(host_tool, "root_out_dir") + "/" + | 110 get_label_info(host_tool, "root_out_dir") + "/" + |
| 109 get_label_info(host_tool, "name") + _host_executable_suffix | 111 get_label_info(host_tool, "name") + _host_executable_suffix |
| 110 | 112 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 sources = invoker.sources | 145 sources = invoker.sources |
| 144 | 146 |
| 145 if (defined(invoker.inputs)) { | 147 if (defined(invoker.inputs)) { |
| 146 inputs = invoker.inputs | 148 inputs = invoker.inputs |
| 147 } else { | 149 } else { |
| 148 inputs = [] | 150 inputs = [] |
| 149 } | 151 } |
| 150 outputs = invoker.outputs | 152 outputs = invoker.outputs |
| 151 | 153 |
| 152 # Constuct the host toolchain version of the tool. | 154 # Constuct the host toolchain version of the tool. |
| 153 host_tool = invoker.tool + "($host_toolchain)" | 155 host_tool = invoker.tool + "($dart_host_toolchain)" |
| 154 | 156 |
| 155 # Get the path to the executable. Currently, this assumes that the tool | 157 # Get the path to the executable. Currently, this assumes that the tool |
| 156 # does not specify output_name so that the target name is the name to use. | 158 # does not specify output_name so that the target name is the name to use. |
| 157 # If that's not the case, we'll need another argument to the script to | 159 # If that's not the case, we'll need another argument to the script to |
| 158 # specify this, since we can't know what the output name is (it might be in | 160 # specify this, since we can't know what the output name is (it might be in |
| 159 # another file not processed yet). | 161 # another file not processed yet). |
| 160 host_executable = | 162 host_executable = |
| 161 get_label_info(host_tool, "root_out_dir") + "/" + | 163 get_label_info(host_tool, "root_out_dir") + "/" + |
| 162 get_label_info(host_tool, "name") + _host_executable_suffix | 164 get_label_info(host_tool, "name") + _host_executable_suffix |
| 163 | 165 |
| 164 # Add the executable itself as an input. | 166 # Add the executable itself as an input. |
| 165 inputs += [ host_executable ] | 167 inputs += [ host_executable ] |
| 166 | 168 |
| 167 deps = [ | 169 deps = [ |
| 168 host_tool, | 170 host_tool, |
| 169 ] | 171 ] |
| 170 if (defined(invoker.deps)) { | 172 if (defined(invoker.deps)) { |
| 171 deps += invoker.deps | 173 deps += invoker.deps |
| 172 } | 174 } |
| 173 | 175 |
| 174 # The script takes as arguments the binary to run, and then the arguments | 176 # The script takes as arguments the binary to run, and then the arguments |
| 175 # to pass it. | 177 # to pass it. |
| 176 args = [ | 178 args = [ |
| 177 "compiled_action", | 179 "compiled_action", |
| 178 rebase_path(host_executable, root_build_dir) | 180 rebase_path(host_executable, root_build_dir) |
| 179 ] + invoker.args | 181 ] + invoker.args |
| 180 } | 182 } |
| 181 } | 183 } |
| OLD | NEW |