OLD | NEW |
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import("//build/config/allocator.gni") | 5 import("//build/config/allocator.gni") |
6 import("//build/config/chrome_build.gni") | 6 import("//build/config/chrome_build.gni") |
7 import("//build/config/chromecast_build.gni") | 7 import("//build/config/chromecast_build.gni") |
8 import("//build/config/crypto.gni") | 8 import("//build/config/crypto.gni") |
9 import("//build/config/features.gni") | 9 import("//build/config/features.gni") |
10 import("//build/config/sanitizers/sanitizers.gni") | 10 import("//build/config/sanitizers/sanitizers.gni") |
(...skipping 15 matching lines...) Expand all Loading... |
26 # default only in debug builds). | 26 # default only in debug builds). |
27 # | 27 # |
28 # Iterator debugging is generally useful for catching bugs. But it can | 28 # Iterator debugging is generally useful for catching bugs. But it can |
29 # introduce extra locking to check the state of an iterator against the state | 29 # introduce extra locking to check the state of an iterator against the state |
30 # of the current object. For iterator- and thread-heavy code, this can | 30 # of the current object. For iterator- and thread-heavy code, this can |
31 # significantly slow execution. | 31 # significantly slow execution. |
32 enable_iterator_debugging = true | 32 enable_iterator_debugging = true |
33 | 33 |
34 # Set to true to enable dcheck in Release builds. | 34 # Set to true to enable dcheck in Release builds. |
35 dcheck_always_on = false | 35 dcheck_always_on = false |
| 36 |
| 37 # Normally we try to decide whether to use precompiled headers or |
| 38 # not based on the other build arguments, but in some cases it is |
| 39 # easiest to force them off explicitly. |
| 40 disable_precompiled_headers = false |
36 } | 41 } |
37 | 42 |
38 # TODO(brettw) Most of these should be removed. Instead of global feature | 43 # TODO(brettw) Most of these should be removed. Instead of global feature |
39 # flags, we should have more modular flags that apply only to a target and its | 44 # flags, we should have more modular flags that apply only to a target and its |
40 # dependents. For example, depending on the "x11" meta-target should define | 45 # dependents. For example, depending on the "x11" meta-target should define |
41 # USE_X11 for all dependents so that everything that could use X11 gets the | 46 # USE_X11 for all dependents so that everything that could use X11 gets the |
42 # define, but anything that doesn't depend on X11 doesn't see it. | 47 # define, but anything that doesn't depend on X11 doesn't see it. |
43 # | 48 # |
44 # For now we define these globally to match the current GYP build. | 49 # For now we define these globally to match the current GYP build. |
45 config("feature_flags") { | 50 config("feature_flags") { |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 | 436 |
432 # Add this config to your target to enable precompiled headers. | 437 # Add this config to your target to enable precompiled headers. |
433 # | 438 # |
434 # Precompiled headers are done on a per-target basis. If you have just a couple | 439 # Precompiled headers are done on a per-target basis. If you have just a couple |
435 # of files, the time it takes to precompile (~2 seconds) can actually be longer | 440 # of files, the time it takes to precompile (~2 seconds) can actually be longer |
436 # than the time saved. On a Z620, a 100 file target compiles about 2 seconds | 441 # than the time saved. On a Z620, a 100 file target compiles about 2 seconds |
437 # faster with precompiled headers, with greater savings for larger targets. | 442 # faster with precompiled headers, with greater savings for larger targets. |
438 # | 443 # |
439 # Recommend precompiled headers for targets with more than 50 .cc files. | 444 # Recommend precompiled headers for targets with more than 50 .cc files. |
440 config("precompiled_headers") { | 445 config("precompiled_headers") { |
441 if (is_win && !is_official_build && !use_goma) { | 446 if (!is_official_build && !use_goma && !disable_precompiled_headers) { |
442 # This is a string rather than a file GN knows about. It has to match | 447 if (is_win) { |
443 # exactly what's in the /FI flag below, and what might appear in the source | 448 # This is a string rather than a file GN knows about. It has to match |
444 # code in quotes for an #include directive. | 449 # exactly what's in the /FI flag below, and what might appear in the |
445 precompiled_header = "build/precompile.h" | 450 # source code in quotes for an #include directive. |
| 451 precompiled_header = "build/precompile.h" |
446 | 452 |
447 # This is a file that GN will compile with the above header. It will be | 453 # This is a file that GN will compile with the above header. It will be |
448 # implicitly added to the sources (potentially multiple times, with one | 454 # implicitly added to the sources (potentially multiple times, with one |
449 # variant for each language used in the target). | 455 # variant for each language used in the target). |
450 precompiled_source = "//build/precompile.cc" | 456 precompiled_source = "//build/precompile.cc" |
451 | 457 |
452 # Force include the header. | 458 # Force include the header. |
453 cflags = [ "/FI$precompiled_header" ] | 459 cflags = [ "/FI$precompiled_header" ] |
454 | 460 |
455 # Disable warning for "this file was empty after preprocessing". This | 461 # Disable warning for "this file was empty after preprocessing". This |
456 # error is generated only in C mode for ANSI compatibility. It conflicts | 462 # error is generated only in C mode for ANSI compatibility. It conflicts |
457 # with precompiled headers since the source file that's "compiled" for | 463 # with precompiled headers since the source file that's "compiled" for |
458 # making the precompiled header is empty. | 464 # making the precompiled header is empty. |
459 # | 465 # |
460 # This error doesn't happen every time. In VS2013, it seems if the .pch | 466 # This error doesn't happen every time. In VS2013, it seems if the .pch |
461 # file doesn't exist, no error will be generated (probably MS tested this | 467 # file doesn't exist, no error will be generated (probably MS tested this |
462 # case but forgot the other one?). To reproduce this error, do a build, | 468 # case but forgot the other one?). To reproduce this error, do a build, |
463 # then delete the precompile.c.obj file, then build again. | 469 # then delete the precompile.c.obj file, then build again. |
464 cflags_c = [ "/wd4206" ] | 470 cflags_c = [ "/wd4206" ] |
465 } else if (is_mac && !is_official_build && !use_goma) { | 471 } else if (is_mac) { |
466 precompiled_header = "build/precompile.h" | 472 precompiled_header = "build/precompile.h" |
467 precompiled_source = "//build/precompile.h" | 473 precompiled_source = "//build/precompile.h" |
| 474 } |
468 } | 475 } |
469 } | 476 } |
OLD | NEW |