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

Side by Side Diff: tools/gn/function_toolchain.cc

Issue 23970005: Add GN help for toolchain commands. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments Created 7 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/err.h" 5 #include "tools/gn/err.h"
6 #include "tools/gn/functions.h" 6 #include "tools/gn/functions.h"
7 #include "tools/gn/parse_tree.h" 7 #include "tools/gn/parse_tree.h"
8 #include "tools/gn/scheduler.h" 8 #include "tools/gn/scheduler.h"
9 #include "tools/gn/scope.h" 9 #include "tools/gn/scope.h"
10 #include "tools/gn/settings.h" 10 #include "tools/gn/settings.h"
(...skipping 19 matching lines...) Expand all
30 *dest = v->string_value(); 30 *dest = v->string_value();
31 return true; 31 return true;
32 } 32 }
33 33
34 } // namespace 34 } // namespace
35 35
36 // toolchain ------------------------------------------------------------------- 36 // toolchain -------------------------------------------------------------------
37 37
38 const char kToolchain[] = "toolchain"; 38 const char kToolchain[] = "toolchain";
39 const char kToolchain_Help[] = 39 const char kToolchain_Help[] =
40 "TODO(brettw) write this."; 40 "toolchain: Defines a toolchain.\n"
41 "\n"
42 " A toolchain is a set of commands and build flags used to compile the\n"
43 " source code. You can have more than one toolchain in use at once in\n"
44 " a build.\n"
45 "\n"
46 " A toolchain specifies the commands to run for various input file\n"
47 " types via the \"tool\" call (see \"gn help tool\") and specifies\n"
48 " arguments to be passed to the toolchain build via the\n"
49 " \"toolchain_args\" call (see \"gn help toolchain_args\").\n"
50 "\n"
51 "Invoking targets in toolchains:\n"
52 "\n"
53 " By default, when a target depends on another, there is an implicit\n"
54 " toolchain label that is inherited, so the dependee has the same one\n"
55 " as the dependant.\n"
56 "\n"
57 " You can override this and refer to any other toolchain by explicitly\n"
58 " labeling the toolchain to use. For example:\n"
59 " datadeps = [ \"//plugins:mine(//toolchains:plugin_toolchain)\" ]\n"
60 " The string \"//build/toolchains:plugin_toolchain\" is a label that\n"
61 " identifies the toolchain declaration for compiling the sources.\n"
62 "\n"
63 " To load a file in an alternate toolchain, GN does the following:\n"
64 "\n"
65 " 1. Loads the file with the toolchain definition in it (as determined\n"
66 " by the toolchain label).\n"
67 " 2. Re-runs the master build configuration file, applying the\n"
68 " arguments specified by the toolchain_args section of the toolchain\n"
69 " definition (see \"gn help toolchain_args\").\n"
70 " 3. Loads the destination build file in the context of the\n"
71 " configuration file in the previous step.\n"
72 "\n"
73 "Example:\n"
74 " toolchain(\"plugin_toolchain\") {\n"
75 " tool(\"cc\") {\n"
76 " command = \"gcc $in\""
77 " }\n"
78 "\n"
79 " toolchain_args() {\n"
80 " is_plugin = true\n"
81 " is_32bit = true\n"
82 " is_64bit = false\n"
83 " }\n"
84 " }\n";
41 85
42 Value RunToolchain(Scope* scope, 86 Value RunToolchain(Scope* scope,
43 const FunctionCallNode* function, 87 const FunctionCallNode* function,
44 const std::vector<Value>& args, 88 const std::vector<Value>& args,
45 BlockNode* block, 89 BlockNode* block,
46 Err* err) { 90 Err* err) {
47 if (!EnsureNotProcessingImport(function, scope, err) || 91 if (!EnsureNotProcessingImport(function, scope, err) ||
48 !EnsureNotProcessingBuildConfig(function, scope, err)) 92 !EnsureNotProcessingBuildConfig(function, scope, err))
49 return Value(); 93 return Value();
50 94
(...skipping 29 matching lines...) Expand all
80 build_settings->item_tree().MarkItemDefinedLocked(build_settings, label, 124 build_settings->item_tree().MarkItemDefinedLocked(build_settings, label,
81 err); 125 err);
82 } 126 }
83 return Value(); 127 return Value();
84 } 128 }
85 129
86 // tool ------------------------------------------------------------------------ 130 // tool ------------------------------------------------------------------------
87 131
88 const char kTool[] = "tool"; 132 const char kTool[] = "tool";
89 const char kTool_Help[] = 133 const char kTool_Help[] =
90 "TODO(brettw) write this."; 134 "tool: Specify arguments to a toolchain tool.\n"
135 "\n"
136 " tool(<command type>) { <command flags> }\n"
137 "\n"
138 " Used inside a toolchain definition to define a command to run for a\n"
139 " given file type. See also \"gn help toolchain\".\n"
140 "\n"
141 "Command types:\n"
142 " The following values may be passed to the tool() function for the type\n"
143 " of the command:\n"
144 "\n"
145 " \"cc\", \"cxx\", \"objc\", \"objcxx\", \"asm\", \"alink\", \"solink\",\n"
146 " \"link\", \"stamp\", \"copy\"\n"
147 "\n"
148 "Command flags:\n"
149 "\n"
150 " These variables may be specified in the { } block after the tool call.\n"
151 " They are passed directly to Ninja. See the ninja documentation for how\n"
152 " they work. Don't forget to backslash-escape $ required by Ninja to\n"
153 " prevent GN from doing variable expansion.\n"
154 "\n"
155 " command, depfile, deps, description, pool, restat, rspfile,\n"
156 " rspfile_content\n"
157 "\n"
158 "Example:\n"
159 " toolchain(\"my_toolchain\") {\n"
160 " tool(\"cc\") {\n"
161 " command = \"gcc \\$in -o \\$out\"\n"
162 " description = \"GCC \\$in\"\n"
163 " }\n"
164 " tool(\"cxx\") {\n"
165 " command = \"g++ \\$in -o \\$out\"\n"
166 " description = \"G++ \\$in\"\n"
167 " }\n"
168 " }\n";
91 169
92 Value RunTool(Scope* scope, 170 Value RunTool(Scope* scope,
93 const FunctionCallNode* function, 171 const FunctionCallNode* function,
94 const std::vector<Value>& args, 172 const std::vector<Value>& args,
95 BlockNode* block, 173 BlockNode* block,
96 Err* err) { 174 Err* err) {
97 // Find the toolchain definition we're executing inside of. The toolchain 175 // Find the toolchain definition we're executing inside of. The toolchain
98 // function will set a property pointing to it that we'll pick up. 176 // function will set a property pointing to it that we'll pick up.
99 Toolchain* toolchain = reinterpret_cast<Toolchain*>( 177 Toolchain* toolchain = reinterpret_cast<Toolchain*>(
100 scope->GetProperty(&kToolchainPropertyKey, NULL)); 178 scope->GetProperty(&kToolchainPropertyKey, NULL));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 toolchain->SetTool(tool_type, t); 217 toolchain->SetTool(tool_type, t);
140 return Value(); 218 return Value();
141 } 219 }
142 220
143 // toolchain_args -------------------------------------------------------------- 221 // toolchain_args --------------------------------------------------------------
144 222
145 extern const char kToolchainArgs[] = "toolchain_args"; 223 extern const char kToolchainArgs[] = "toolchain_args";
146 extern const char kToolchainArgs_Help[] = 224 extern const char kToolchainArgs_Help[] =
147 "toolchain_args: Set build arguments for toolchain build setup.\n" 225 "toolchain_args: Set build arguments for toolchain build setup.\n"
148 "\n" 226 "\n"
227 " Used inside a toolchain definition to pass arguments to an alternate\n"
228 " toolchain's invocation of the build.\n"
229 "\n"
149 " When you specify a target using an alternate toolchain, the master\n" 230 " When you specify a target using an alternate toolchain, the master\n"
150 " build configuration file is re-interpreted in the context of that\n" 231 " build configuration file is re-interpreted in the context of that\n"
151 " toolchain. This function allows you to control the arguments passed\n" 232 " toolchain (see \"gn help toolchain\"). The toolchain_args function\n"
152 " into this alternate invocation of the build.\n" 233 " allows you to control the arguments passed into this alternate\n"
234 " invocation of the build.\n"
153 "\n" 235 "\n"
154 " Any default system arguments or arguments passed in on the command-\n" 236 " Any default system arguments or arguments passed in on the command-\n"
155 " line will also be passed to the alternate invocation unless explicitly\n" 237 " line will also be passed to the alternate invocation unless explicitly\n"
156 " overriddey by toolchain_args.\n" 238 " overridden by toolchain_args.\n"
157 "\n" 239 "\n"
158 " The toolchain_args will be ignored when the toolchain being defined\n" 240 " The toolchain_args will be ignored when the toolchain being defined\n"
159 " is the default. In this case, it's expected you want the default\n" 241 " is the default. In this case, it's expected you want the default\n"
160 " argument values.\n" 242 " argument values.\n"
161 "\n" 243 "\n"
162 " See also \"gn help buildargs\" for an overview of these arguments.\n" 244 " See also \"gn help buildargs\" for an overview of these arguments.\n"
163 "\n" 245 "\n"
164 "Example:\n" 246 "Example:\n"
165 " toolchain(\"my_weird_toolchain\") {\n" 247 " toolchain(\"my_weird_toolchain\") {\n"
166 " ...\n" 248 " ...\n"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 return Value(); 286 return Value();
205 287
206 Scope::KeyValueMap values; 288 Scope::KeyValueMap values;
207 block_scope.GetCurrentScopeValues(&values); 289 block_scope.GetCurrentScopeValues(&values);
208 toolchain->args() = values; 290 toolchain->args() = values;
209 291
210 return Value(); 292 return Value();
211 } 293 }
212 294
213 } // namespace functions 295 } // namespace functions
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698