| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "tools/gn/functions.h" | 5 #include "tools/gn/functions.h" |
| 6 | 6 |
| 7 #include "tools/gn/config_values_generator.h" | 7 #include "tools/gn/config_values_generator.h" |
| 8 #include "tools/gn/err.h" | 8 #include "tools/gn/err.h" |
| 9 #include "tools/gn/parse_tree.h" | 9 #include "tools/gn/parse_tree.h" |
| 10 #include "tools/gn/scope.h" | 10 #include "tools/gn/scope.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 " handling. If you want to pass the sources to your script, you must do\n" | 101 " handling. If you want to pass the sources to your script, you must do\n" |
| 102 " so explicitly by including them in the \"args\". Note also that this\n" | 102 " so explicitly by including them in the \"args\". Note also that this\n" |
| 103 " means there is no special handling of paths since GN doesn't know\n" | 103 " means there is no special handling of paths since GN doesn't know\n" |
| 104 " which of the args are paths and not. You will want to use\n" | 104 " which of the args are paths and not. You will want to use\n" |
| 105 " rebase_path() to convert paths to be relative to the root_build_dir.\n" | 105 " rebase_path() to convert paths to be relative to the root_build_dir.\n" |
| 106 "\n" | 106 "\n" |
| 107 " You can dynamically write input dependencies (for incremental rebuilds\n" | 107 " You can dynamically write input dependencies (for incremental rebuilds\n" |
| 108 " if an input file changes) by writing a depfile when the script is run\n" | 108 " if an input file changes) by writing a depfile when the script is run\n" |
| 109 " (see \"gn help depfile\"). This is more flexible than \"inputs\".\n" | 109 " (see \"gn help depfile\"). This is more flexible than \"inputs\".\n" |
| 110 "\n" | 110 "\n" |
| 111 " If the command line length is very long, you can use response files\n" |
| 112 " to pass args to your script. See \"gn help response_file_contents\".\n" |
| 113 "\n" |
| 111 " It is recommended you put inputs to your script in the \"sources\"\n" | 114 " It is recommended you put inputs to your script in the \"sources\"\n" |
| 112 " variable, and stuff like other Python files required to run your\n" | 115 " variable, and stuff like other Python files required to run your\n" |
| 113 " script in the \"inputs\" variable.\n" | 116 " script in the \"inputs\" variable.\n" |
| 114 "\n" | 117 "\n" |
| 115 ACTION_DEPS | 118 ACTION_DEPS |
| 116 "\n" | 119 "\n" |
| 117 "Outputs\n" | 120 "Outputs\n" |
| 118 "\n" | 121 "\n" |
| 119 " You should specify files created by your script by specifying them in\n" | 122 " You should specify files created by your script by specifying them in\n" |
| 120 " the \"outputs\".\n" | 123 " the \"outputs\".\n" |
| 121 "\n" | 124 "\n" |
| 122 SCRIPT_EXECUTION_CONTEXT | 125 SCRIPT_EXECUTION_CONTEXT |
| 123 "\n" | 126 "\n" |
| 124 "File name handling\n" | 127 "File name handling\n" |
| 125 "\n" | 128 "\n" |
| 126 SCRIPT_EXECUTION_OUTPUTS | 129 SCRIPT_EXECUTION_OUTPUTS |
| 127 "\n" | 130 "\n" |
| 128 "Variables\n" | 131 "Variables\n" |
| 129 "\n" | 132 "\n" |
| 130 " args, console, data, data_deps, depfile, deps, outputs*, script*,\n" | 133 " args, console, data, data_deps, depfile, deps, inputs, outputs*,\n" |
| 131 " inputs, sources\n" | 134 " response_file_contents, script*, sources\n" |
| 132 " * = required\n" | 135 " * = required\n" |
| 133 "\n" | 136 "\n" |
| 134 "Example\n" | 137 "Example\n" |
| 135 "\n" | 138 "\n" |
| 136 " action(\"run_this_guy_once\") {\n" | 139 " action(\"run_this_guy_once\") {\n" |
| 137 " script = \"doprocessing.py\"\n" | 140 " script = \"doprocessing.py\"\n" |
| 138 " sources = [ \"my_configuration.txt\" ]\n" | 141 " sources = [ \"my_configuration.txt\" ]\n" |
| 139 " outputs = [ \"$target_gen_dir/insightful_output.txt\" ]\n" | 142 " outputs = [ \"$target_gen_dir/insightful_output.txt\" ]\n" |
| 140 "\n" | 143 "\n" |
| 141 " # Our script imports this Python file so we want to rebuild if it\n" | 144 " # Our script imports this Python file so we want to rebuild if it\n" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 " \"outputs\" variable should specify one or more files with a source\n" | 178 " \"outputs\" variable should specify one or more files with a source\n" |
| 176 " expansion pattern in it (see \"gn help source_expansion\"). The output\n" | 179 " expansion pattern in it (see \"gn help source_expansion\"). The output\n" |
| 177 " file(s) for each script invocation should be unique. Normally you\n" | 180 " file(s) for each script invocation should be unique. Normally you\n" |
| 178 " use \"{{source_name_part}}\" in each output file.\n" | 181 " use \"{{source_name_part}}\" in each output file.\n" |
| 179 "\n" | 182 "\n" |
| 180 " If your script takes additional data as input, such as a shared\n" | 183 " If your script takes additional data as input, such as a shared\n" |
| 181 " configuration file or a Python module it uses, those files should be\n" | 184 " configuration file or a Python module it uses, those files should be\n" |
| 182 " listed in the \"inputs\" variable. These files are treated as\n" | 185 " listed in the \"inputs\" variable. These files are treated as\n" |
| 183 " dependencies of each script invocation.\n" | 186 " dependencies of each script invocation.\n" |
| 184 "\n" | 187 "\n" |
| 188 " If the command line length is very long, you can use response files\n" |
| 189 " to pass args to your script. See \"gn help response_file_contents\".\n" |
| 190 "\n" |
| 185 " You can dynamically write input dependencies (for incremental rebuilds\n" | 191 " You can dynamically write input dependencies (for incremental rebuilds\n" |
| 186 " if an input file changes) by writing a depfile when the script is run\n" | 192 " if an input file changes) by writing a depfile when the script is run\n" |
| 187 " (see \"gn help depfile\"). This is more flexible than \"inputs\".\n" | 193 " (see \"gn help depfile\"). This is more flexible than \"inputs\".\n" |
| 188 "\n" | 194 "\n" |
| 189 ACTION_DEPS | 195 ACTION_DEPS |
| 190 "\n" | 196 "\n" |
| 191 "Outputs\n" | 197 "Outputs\n" |
| 192 "\n" | 198 "\n" |
| 193 SCRIPT_EXECUTION_CONTEXT | 199 SCRIPT_EXECUTION_CONTEXT |
| 194 "\n" | 200 "\n" |
| 195 "File name handling\n" | 201 "File name handling\n" |
| 196 "\n" | 202 "\n" |
| 197 SCRIPT_EXECUTION_OUTPUTS | 203 SCRIPT_EXECUTION_OUTPUTS |
| 198 "\n" | 204 "\n" |
| 199 "Variables\n" | 205 "Variables\n" |
| 200 "\n" | 206 "\n" |
| 201 " args, console, data, data_deps, depfile, deps, outputs*, script*,\n" | 207 " args, console, data, data_deps, depfile, deps, inputs, outputs*,\n" |
| 202 " inputs, sources*\n" | 208 " response_file_contents, script*, sources*\n" |
| 203 " * = required\n" | 209 " * = required\n" |
| 204 "\n" | 210 "\n" |
| 205 "Example\n" | 211 "Example\n" |
| 206 "\n" | 212 "\n" |
| 207 " # Runs the script over each IDL file. The IDL script will generate\n" | 213 " # Runs the script over each IDL file. The IDL script will generate\n" |
| 208 " # both a .cc and a .h file for each input.\n" | 214 " # both a .cc and a .h file for each input.\n" |
| 209 " action_foreach(\"my_idl\") {\n" | 215 " action_foreach(\"my_idl\") {\n" |
| 210 " script = \"idl_processor.py\"\n" | 216 " script = \"idl_processor.py\"\n" |
| 211 " sources = [ \"foo.idl\", \"bar.idl\" ]\n" | 217 " sources = [ \"foo.idl\", \"bar.idl\" ]\n" |
| 212 "\n" | 218 "\n" |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 const Template* templ = scope->GetTemplate(target_type); | 557 const Template* templ = scope->GetTemplate(target_type); |
| 552 if (templ) | 558 if (templ) |
| 553 return templ->Invoke(scope, function, sub_args, block, err); | 559 return templ->Invoke(scope, function, sub_args, block, err); |
| 554 | 560 |
| 555 // Otherwise, assume the target is a built-in target type. | 561 // Otherwise, assume the target is a built-in target type. |
| 556 return ExecuteGenericTarget(target_type.c_str(), scope, function, sub_args, | 562 return ExecuteGenericTarget(target_type.c_str(), scope, function, sub_args, |
| 557 block, err); | 563 block, err); |
| 558 } | 564 } |
| 559 | 565 |
| 560 } // namespace functions | 566 } // namespace functions |
| OLD | NEW |