blob: df167b30aa56b36113541eabe109f892f920870f [file] [log] [blame]
// 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