Chromium Code Reviews| Index: tools/gn/variables.cc |
| diff --git a/tools/gn/variables.cc b/tools/gn/variables.cc |
| index 3b60c903557eb603c1f035f63c0d34ce87f28e66..66460e98341587eacea8303f39fb06ac1608efcc 100644 |
| --- a/tools/gn/variables.cc |
| +++ b/tools/gn/variables.cc |
| @@ -1451,18 +1451,31 @@ const char kPrecompiledHeader_Help[] = |
| config applying to this target specifies this value. In addition, the tool |
| corresponding to the source files must also specify precompiled headers (see |
| "gn help tool"). The tool will also specify what type of precompiled headers |
| - to use. |
| + to use, by setting precompiled_header_type to either "gcc" or "msvc". |
| The precompiled header/source variables can be specified on a target or a |
| config, but must be the same for all configs applying to a given target since |
| a target can only have one precompiled header. |
| + If you use both C and C++ sources, the precompiled header and source file |
| + will be compiled once per language. You will want to make sure to wrap C++ |
| + includes in __cplusplus #ifdefs so the file will compile in C mode. |
| + |
| +GCC precompiled headers |
| + |
| + When using GCC-style precompiled headers, "precompiled_source" contains the |
| + path of a .h file that is precompiled and then included by all source files |
| + in targets that set "precompiled_source". |
| + |
| + The value of "precompiled_header" is not used with GCC-style precompiled |
| + headers. |
|
Nico
2017/03/03 20:24:34
Fairly inconsistent with how MSVC-stype PCH works
|
| + |
| MSVC precompiled headers |
| When using MSVC-style precompiled headers, the "precompiled_header" value is |
| a string corresponding to the header. This is NOT a path to a file that GN |
| - recognises, but rather the exact string that appears in quotes after an |
| - #include line in source code. The compiler will match this string against |
| + recognises, but rather the exact string that appears in quotes after |
| + an #include line in source code. The compiler will match this string against |
|
Nico
2017/03/03 20:24:34
The motivation behind this CL was that the #includ
|
| includes or forced includes (/FI). |
| MSVC also requires a source file to compile the header with. This must be |
| @@ -1470,10 +1483,6 @@ MSVC precompiled headers |
| this IS a GN-style file name, and tells GN which source file to compile to |
| make the .pch file used for subsequent compiles. |
| - If you use both C and C++ sources, the precompiled header and source file |
| - will be compiled using both tools. You will want to make sure to wrap C++ |
| - includes in __cplusplus #ifdefs so the file will compile in C mode. |
| - |
| For example, if the toolchain specifies MSVC headers: |
| toolchain("vc_x64") { |
| @@ -1500,6 +1509,15 @@ MSVC precompiled headers |
| ... |
| )"; |
| +const char kPrecompiledHeaderType[] = "precompiled_header_type"; |
| +const char kPrecompiledHeaderType_HelpShort[] = |
| + "precompiled_header_type: [string] \"gcc\" or \"msvc\"."; |
| +const char kPrecompiledHeaderType_Help[] = |
| + R"(precompiled_header_type: [string] "gcc" or "msvc". |
| + |
| + See "gn help precompiled_header". |
| +)"; |
| + |
| const char kPrecompiledSource[] = "precompiled_source"; |
| const char kPrecompiledSource_HelpShort[] = |
| "precompiled_source: [file name] Source file to precompile."; |
| @@ -1904,6 +1922,7 @@ const VariableInfoMap& GetTargetVariables() { |
| INSERT_VARIABLE(OutputPrefixOverride) |
| INSERT_VARIABLE(Outputs) |
| INSERT_VARIABLE(PrecompiledHeader) |
| + INSERT_VARIABLE(PrecompiledHeaderType) |
| INSERT_VARIABLE(PrecompiledSource) |
| INSERT_VARIABLE(ProductType) |
| INSERT_VARIABLE(Public) |