Chromium Code Reviews| Index: build/config/BUILD.gn |
| diff --git a/build/config/BUILD.gn b/build/config/BUILD.gn |
| index 907dff696244ee11687f243de5f0ae66c5836ae4..b6c2faf7bd0551378c33467c1b53558e7fc5bcbd 100644 |
| --- a/build/config/BUILD.gn |
| +++ b/build/config/BUILD.gn |
| @@ -33,6 +33,11 @@ declare_args() { |
| # Set to true to enable dcheck in Release builds. |
| dcheck_always_on = false |
| + |
| + # Normally we try to decide whether to use precompiled headers or |
| + # not based on the other build arguments, but in some cases it is |
| + # easiest to force them off explicitly. |
| + disable_precompiled_headers = false |
| } |
| # TODO(brettw) Most of these should be removed. Instead of global feature |
| @@ -438,32 +443,33 @@ config("shared_library_config") { |
| # |
| # Recommend precompiled headers for targets with more than 50 .cc files. |
| config("precompiled_headers") { |
| - if (is_win && !is_official_build && !use_goma) { |
| - # This is a string rather than a file GN knows about. It has to match |
| - # exactly what's in the /FI flag below, and what might appear in the source |
| - # code in quotes for an #include directive. |
| - precompiled_header = "build/precompile.h" |
| + if (!is_official_build && !use_goma && !disable_precompiled_headers) { |
| + if (is_win) { |
| + # This is a string rather than a file GN knows about. It has to match |
| + # exactly what's in the /FI flag below, and what might appear in the source |
|
brucedawson
2016/03/23 00:22:41
Fix the line length here?
Dirk Pranke
2016/03/23 00:42:19
ah, good catch.
|
| + # code in quotes for an #include directive. |
| + precompiled_header = "build/precompile.h" |
| - # This is a file that GN will compile with the above header. It will be |
| - # implicitly added to the sources (potentially multiple times, with one |
| - # variant for each language used in the target). |
| - precompiled_source = "//build/precompile.cc" |
| + # This is a file that GN will compile with the above header. It will be |
| + # implicitly added to the sources (potentially multiple times, with one |
| + # variant for each language used in the target). |
| + precompiled_source = "//build/precompile.cc" |
| - # Force include the header. |
| - cflags = [ "/FI$precompiled_header" ] |
| + # Force include the header. |
| + cflags = [ "/FI$precompiled_header" ] |
| - # Disable warning for "this file was empty after preprocessing". This |
| - # error is generated only in C mode for ANSI compatibility. It conflicts |
| - # with precompiled headers since the source file that's "compiled" for |
| - # making the precompiled header is empty. |
| - # |
| - # This error doesn't happen every time. In VS2013, it seems if the .pch |
| - # file doesn't exist, no error will be generated (probably MS tested this |
| - # case but forgot the other one?). To reproduce this error, do a build, |
| - # then delete the precompile.c.obj file, then build again. |
| - cflags_c = [ "/wd4206" ] |
| - } else if (is_mac && !is_official_build && !use_goma) { |
| - precompiled_header = "build/precompile.h" |
| - precompiled_source = "//build/precompile.h" |
| - } |
| + # Disable warning for "this file was empty after preprocessing". This |
| + # error is generated only in C mode for ANSI compatibility. It conflicts |
| + # with precompiled headers since the source file that's "compiled" for |
| + # making the precompiled header is empty. |
| + # |
| + # This error doesn't happen every time. In VS2013, it seems if the .pch |
| + # file doesn't exist, no error will be generated (probably MS tested this |
| + # case but forgot the other one?). To reproduce this error, do a build, |
| + # then delete the precompile.c.obj file, then build again. |
| + cflags_c = [ "/wd4206" ] |
| + } else if (is_mac) { |
| + precompiled_header = "build/precompile.h" |
| + precompiled_source = "//build/precompile.h" |
| + } |
| } |