| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "tools/gn/switches.h" |
| |
| namespace switches { |
| |
| const char kArgs[] = "args"; |
| const char kArgs_HelpShort[] = |
| "--args: Specifies build arguments overrides."; |
| const char kArgs_Help[] = |
| "--args: Specifies build arguments overrides.\n" |
| "\n" |
| " See \"gn help buildargs\" for an overview of how build arguments work.\n" |
| "\n" |
| " Most operations take a build directory. The build arguments are taken\n" |
| " from the previous build done in that directory. If a command specifies\n" |
| " --args, it will override the previous arguments stored in the build\n" |
| " directory, and use the specified ones.\n" |
| "\n" |
| " The args specified will be saved to the build directory for subsequent\n" |
| " commands. Specifying --args=\"\" will clear all build arguments.\n" |
| "\n" |
| "Formatting\n" |
| "\n" |
| " The value of the switch is interpreted in GN syntax. For typical usage\n" |
| " of string arguments, you will need to be careful about escaping of\n" |
| " quotes.\n" |
| "\n" |
| "Examples\n" |
| "\n" |
| " gn gen out/Default --args=\"foo=\\\"bar\\\"\"\n" |
| "\n" |
| " gn gen out/Default --args='foo=\"bar\" enable=true blah=7'\n" |
| "\n" |
| " gn check out/Default --args=\"\"\n" |
| " Clears existing build args from the directory.\n" |
| "\n" |
| " gn desc out/Default --args=\"some_list=[1, false, \\\"foo\\\"]\"\n"; |
| |
| #define COLOR_HELP_LONG \ |
| "--[no]color: Forces colored output on or off.\n"\ |
| "\n"\ |
| " Normally GN will try to detect whether it is outputting to a terminal\n"\ |
| " and will enable or disable color accordingly. Use of these switches\n"\ |
| " will override the default.\n"\ |
| "\n"\ |
| "Examples\n"\ |
| "\n"\ |
| " gn gen out/Default --color\n"\ |
| "\n"\ |
| " gn gen out/Default --nocolor\n" |
| const char kColor[] = "color"; |
| const char kColor_HelpShort[] = |
| "--color: Force colored output."; |
| const char kColor_Help[] = COLOR_HELP_LONG; |
| |
| const char kDotfile[] = "dotfile"; |
| const char kDotfile_HelpShort[] = |
| "--dotfile: Override the name of the \".gn\" file."; |
| const char kDotfile_Help[] = |
| "--dotfile: Override the name of the \".gn\" file.\n" |
| "\n" |
| " Normally GN loads the \".gn\"file from the source root for some basic\n" |
| " configuration (see \"gn help dotfile\"). This flag allows you to\n" |
| " use a different file.\n" |
| "\n" |
| " Note that this interacts with \"--root\" in a possibly incorrect way.\n" |
| " It would be nice to test the edge cases and document or fix.\n"; |
| |
| const char kMarkdown[] = "markdown"; |
| const char kMarkdown_HelpShort[] = |
| "--markdown: write the output in the Markdown format."; |
| const char kMarkdown_Help[] = |
| "--markdown: write the output in the Markdown format.\n"; |
| |
| const char kNoColor[] = "nocolor"; |
| const char kNoColor_HelpShort[] = |
| "--nocolor: Force non-colored output."; |
| const char kNoColor_Help[] = COLOR_HELP_LONG; |
| |
| const char kQuiet[] = "q"; |
| const char kQuiet_HelpShort[] = |
| "-q: Quiet mode. Don't print output on success."; |
| const char kQuiet_Help[] = |
| "-q: Quiet mode. Don't print output on success.\n" |
| "\n" |
| " This is useful when running as a part of another script.\n"; |
| |
| const char kRoot[] = "root"; |
| const char kRoot_HelpShort[] = |
| "--root: Explicitly specify source root."; |
| const char kRoot_Help[] = |
| "--root: Explicitly specify source root.\n" |
| "\n" |
| " Normally GN will look up in the directory tree from the current\n" |
| " directory to find a \".gn\" file. The source root directory specifies\n" |
| " the meaning of \"//\" beginning with paths, and the BUILD.gn file\n" |
| " in that directory will be the first thing loaded.\n" |
| "\n" |
| " Specifying --root allows GN to do builds in a specific directory\n" |
| " regardless of the current directory.\n" |
| "\n" |
| "Examples\n" |
| "\n" |
| " gn gen //out/Default --root=/home/baracko/src\n" |
| "\n" |
| " gn desc //out/Default --root=\"C:\\Users\\BObama\\My Documents\\foo\"\n"; |
| |
| const char kRuntimeDepsListFile[] = "runtime-deps-list-file"; |
| const char kRuntimeDepsListFile_HelpShort[] = |
| "--runtime-deps-list-file: Save runtime dependencies for targets in file."; |
| const char kRuntimeDepsListFile_Help[] = |
| "--runtime-deps-list-file: Save runtime dependencies for targets in file.\n" |
| "\n" |
| " --runtime-deps-list-file=<filename>\n" |
| "\n" |
| " Where <filename> is a text file consisting of the labels, one per\n" |
| " line, of the targets for which runtime dependencies are desired.\n" |
| "\n" |
| " See \"gn help runtime_deps\" for a description of how runtime\n" |
| " dependencies are computed.\n" |
| "\n" |
| "Runtime deps output file\n" |
| "\n" |
| " For each target requested, GN will write a separate runtime dependency\n" |
| " file. The runtime dependency file will be in the output directory\n" |
| " alongside the output file of the target, with a \".runtime_deps\"\n" |
| " extension. For example, if the target \"//foo:bar\" is listed in the\n" |
| " input file, and that target produces an output file \"bar.so\", GN\n" |
| " will create a file \"bar.so.runtime_deps\" in the build directory.\n" |
| "\n" |
| " If a source set, action, copy, or group is listed, the runtime deps\n" |
| " file will correspond to the .stamp file corresponding to that target.\n" |
| " This is probably not useful; the use-case for this feature is\n" |
| " generally executable targets.\n" |
| "\n" |
| " The runtime dependency file will list one file per line, with no\n" |
| " escaping. The files will be relative to the root_build_dir. The first\n" |
| " line of the file will be the main output file of the target itself\n" |
| " (in the above example, \"bar.so\").\n"; |
| |
| const char kThreads[] = "threads"; |
| const char kThreads_HelpShort[] = |
| "--threads: Specify number of worker threads."; |
| const char kThreads_Help[] = |
| "--threads: Specify number of worker threads.\n" |
| "\n" |
| " GN runs many threads to load and run build files. This can make\n" |
| " debugging challenging. Or you may want to experiment with different\n" |
| " values to see how it affects performance.\n" |
| "\n" |
| " The parameter is the number of worker threads. This does not count the\n" |
| " main thread (so there are always at least two).\n" |
| "\n" |
| "Examples\n" |
| "\n" |
| " gen gen out/Default --threads=1\n"; |
| |
| const char kTime[] = "time"; |
| const char kTime_HelpShort[] = |
| "--time: Outputs a summary of how long everything took."; |
| const char kTime_Help[] = |
| "--time: Outputs a summary of how long everything took.\n" |
| "\n" |
| " Hopefully self-explanatory.\n" |
| "\n" |
| "Examples\n" |
| "\n" |
| " gn gen out/Default --time\n"; |
| |
| const char kTracelog[] = "tracelog"; |
| const char kTracelog_HelpShort[] = |
| "--tracelog: Writes a Chrome-compatible trace log to the given file."; |
| const char kTracelog_Help[] = |
| "--tracelog: Writes a Chrome-compatible trace log to the given file.\n" |
| "\n" |
| " The trace log will show file loads, executions, scripts, and writes.\n" |
| " This allows performance analysis of the generation step.\n" |
| "\n" |
| " To view the trace, open Chrome and navigate to \"chrome://tracing/\",\n" |
| " then press \"Load\" and specify the file you passed to this parameter.\n" |
| "\n" |
| "Examples\n" |
| "\n" |
| " gn gen out/Default --tracelog=mytrace.trace\n"; |
| |
| const char kVerbose[] = "v"; |
| const char kVerbose_HelpShort[] = |
| "-v: Verbose logging."; |
| const char kVerbose_Help[] = |
| "-v: Verbose logging.\n" |
| "\n" |
| " This will spew logging events to the console for debugging issues.\n" |
| " Good luck!\n"; |
| |
| const char kVersion[] = "version"; |
| const char kVersion_HelpShort[] = |
| "--version: Prints the GN version number and exits."; |
| // It's impossible to see this since gn_main prints the version and exits |
| // immediately if this switch is used. |
| const char kVersion_Help[] = ""; |
| |
| // ----------------------------------------------------------------------------- |
| |
| SwitchInfo::SwitchInfo() |
| : short_help(""), |
| long_help("") { |
| } |
| |
| SwitchInfo::SwitchInfo(const char* short_help, const char* long_help) |
| : short_help(short_help), |
| long_help(long_help) { |
| } |
| |
| #define INSERT_VARIABLE(var) \ |
| info_map[k##var] = SwitchInfo(k##var##_HelpShort, k##var##_Help); |
| |
| const SwitchInfoMap& GetSwitches() { |
| static SwitchInfoMap info_map; |
| if (info_map.empty()) { |
| INSERT_VARIABLE(Args) |
| INSERT_VARIABLE(Color) |
| INSERT_VARIABLE(Dotfile) |
| INSERT_VARIABLE(Markdown) |
| INSERT_VARIABLE(NoColor) |
| INSERT_VARIABLE(Root) |
| INSERT_VARIABLE(Quiet) |
| INSERT_VARIABLE(RuntimeDepsListFile) |
| INSERT_VARIABLE(Threads) |
| INSERT_VARIABLE(Time) |
| INSERT_VARIABLE(Tracelog) |
| INSERT_VARIABLE(Verbose) |
| INSERT_VARIABLE(Version) |
| } |
| return info_map; |
| } |
| |
| #undef INSERT_VARIABLE |
| |
| } // namespace switches |