| Index: tools/gn/variables.cc
|
| diff --git a/tools/gn/variables.cc b/tools/gn/variables.cc
|
| index 51a68d5728779ad5039c6847b5e2a9c5e3c5704a..472554ae964f57c484f687bafbc14e249c50533d 100644
|
| --- a/tools/gn/variables.cc
|
| +++ b/tools/gn/variables.cc
|
| @@ -854,6 +854,76 @@ const char kOutputs_Help[] =
|
| " file(s). For actions, the outputs should be the list of files\n"
|
| " generated by the script.\n";
|
|
|
| +const char kPrecompiledHeader[] = "precompiled_header";
|
| +const char kPrecompiledHeader_HelpShort[] =
|
| + "precompiled_header: [string] Header file to precompile.";
|
| +const char kPrecompiledHeader_Help[] =
|
| + "precompiled_header: [string] Header file to precompile.\n"
|
| + "\n"
|
| + " Precompiled headers will be used when a target specifies this\n"
|
| + " value, or a config applying to this target specifies this value.\n"
|
| + " In addition, the tool corresponding to the source files must also\n"
|
| + " specify precompiled headers (see \"gn help tool\"). The tool\n"
|
| + " will also specify what type of precompiled headers to use.\n"
|
| + "\n"
|
| + " The precompiled header/source variables can be specified on a target\n"
|
| + " or a config, but must be the same for all configs applying to a given\n"
|
| + " target since a target can only have one precompiled header.\n"
|
| + "\n"
|
| + "MSVC precompiled headers\n"
|
| + "\n"
|
| + " When using MSVC-style precompiled headers, the \"precompiled_header\"\n"
|
| + " value is a string corresponding to the header. This is NOT a path\n"
|
| + " to a file that GN recognises, but rather the exact string that appears\n"
|
| + " in quotes after an #include line in source code. The compiler will\n"
|
| + " match this string against includes or forced includes (/FI).\n"
|
| + "\n"
|
| + " MSVC also requires a source file to compile the header with. This must\n"
|
| + " be specified by the \"precompiled_source\" value. In contrast to the\n"
|
| + " header value, this IS a GN-style file name, and tells GN which source\n"
|
| + " file to compile to make the .pch file used for subsequent compiles.\n"
|
| + "\n"
|
| + " If you use both C and C++ sources, the precompiled header and source\n"
|
| + " file will be compiled using both tools. You will want to make sure\n"
|
| + " to wrap C++ includes in __cplusplus #ifdefs so the file will compile\n"
|
| + " in C mode.\n"
|
| + "\n"
|
| + " For example, if the toolchain specifies MSVC headers:\n"
|
| + "\n"
|
| + " toolchain(\"vc_x64\") {\n"
|
| + " ...\n"
|
| + " tool(\"cxx\") {\n"
|
| + " precompiled_header_type = \"msvc\"\n"
|
| + " ...\n"
|
| + "\n"
|
| + " You might make a config like this:\n"
|
| + "\n"
|
| + " config(\"use_precompiled_headers\") {\n"
|
| + " precompiled_header = \"build/precompile.h\"\n"
|
| + " precompiled_source = \"//build/precompile.cc\"\n"
|
| + "\n"
|
| + " # Either your source files should #include \"build/precompile.h\"\n"
|
| + " # first, or you can do this to force-include the header.\n"
|
| + " cflags = [ \"/FI$precompiled_header\" ]\n"
|
| + " }\n"
|
| + "\n"
|
| + " And then define a target that uses the config:\n"
|
| + "\n"
|
| + " executable(\"doom_melon\") {\n"
|
| + " configs += [ \":use_precompiled_headers\" ]\n"
|
| + " ...\n"
|
| + "\n";
|
| +
|
| +const char kPrecompiledSource[] = "precompiled_source";
|
| +const char kPrecompiledSource_HelpShort[] =
|
| + "precompiled_source: [file name] Source file to precompile.";
|
| +const char kPrecompiledSource_Help[] =
|
| + "precompiled_source: [file name] Source file to precompile.\n"
|
| + "\n"
|
| + " The source file that goes along with the precompiled_header when\n"
|
| + " using \"msvc\"-style precompiled headers. It will be implicitly added\n"
|
| + " to the sources of the target. See \"gn help precompiled_header\".\n";
|
| +
|
| const char kPublic[] = "public";
|
| const char kPublic_HelpShort[] =
|
| "public: [file list] Declare public header files for a target.";
|
| @@ -1121,6 +1191,8 @@ const VariableInfoMap& GetTargetVariables() {
|
| INSERT_VARIABLE(OutputExtension)
|
| INSERT_VARIABLE(OutputName)
|
| INSERT_VARIABLE(Outputs)
|
| + INSERT_VARIABLE(PrecompiledHeader)
|
| + INSERT_VARIABLE(PrecompiledSource)
|
| INSERT_VARIABLE(Public)
|
| INSERT_VARIABLE(PublicConfigs)
|
| INSERT_VARIABLE(PublicDeps)
|
|
|