| 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/crypto.gni") | 7 import("//build/config/crypto.gni") |
| 8 import("//build/config/features.gni") | 8 import("//build/config/features.gni") |
| 9 import("//build/config/sanitizers/sanitizers.gni") | 9 import("//build/config/sanitizers/sanitizers.gni") |
| 10 import("//build/config/ui.gni") | 10 import("//build/config/ui.gni") |
| 11 import("//build/module_args/v8.gni") | 11 import("//build/module_args/v8.gni") |
| 12 import("//build/toolchain/goma.gni") | 12 import("//build/toolchain/goma.gni") |
| 13 | 13 |
| 14 declare_args() { | 14 declare_args() { |
| 15 # When set, turns off the (normally-on) iterator debugging and related stuff | 15 # When set (the default) enables C++ iterator debugging in debug builds. |
| 16 # that is normally turned on for Debug builds. These are generally useful for | 16 # Iterator debugging is always off in release builds (technically, this flag |
| 17 # catching bugs but in some cases may cause conflicts or excessive slowness. | 17 # affects the "debug" config, which is always available but applied by |
| 18 disable_iterator_debugging = false | 18 # default only in debug builds). |
| 19 # |
| 20 # Iterator debugging is generally useful for catching bugs. But it can |
| 21 # introduce extra locking to check the state of an iterator against the state |
| 22 # of the current object. For iterator- and thread-heavy code, this can |
| 23 # significantly slow execution. |
| 24 enable_iterator_debugging = true |
| 19 | 25 |
| 20 # Set to true to not store any build metadata, e.g. ifdef out all __DATE__ | 26 # Set to true to not store any build metadata, e.g. ifdef out all __DATE__ |
| 21 # and __TIME__. Set to 0 to reenable the use of these macros in the code | 27 # and __TIME__. Set to 0 to reenable the use of these macros in the code |
| 22 # base. See http://crbug.com/314403. | 28 # base. See http://crbug.com/314403. |
| 23 # | 29 # |
| 24 # Continue to embed build meta data in Official builds, basically the | 30 # Continue to embed build meta data in Official builds, basically the |
| 25 # time it was built. | 31 # time it was built. |
| 26 # TODO(maruel): This decision should be revisited because having an | 32 # TODO(maruel): This decision should be revisited because having an |
| 27 # official deterministic build has high value too but MSVC toolset can't | 33 # official deterministic build has high value too but MSVC toolset can't |
| 28 # generate anything deterministic with WPO enabled AFAIK. | 34 # generate anything deterministic with WPO enabled AFAIK. |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 "_DEBUG", | 298 "_DEBUG", |
| 293 "DYNAMIC_ANNOTATIONS_ENABLED=1", | 299 "DYNAMIC_ANNOTATIONS_ENABLED=1", |
| 294 "WTF_USE_DYNAMIC_ANNOTATIONS=1", | 300 "WTF_USE_DYNAMIC_ANNOTATIONS=1", |
| 295 ] | 301 ] |
| 296 | 302 |
| 297 if (is_nacl) { | 303 if (is_nacl) { |
| 298 defines += [ "DYNAMIC_ANNOTATIONS_PREFIX=NACL_" ] | 304 defines += [ "DYNAMIC_ANNOTATIONS_PREFIX=NACL_" ] |
| 299 } | 305 } |
| 300 | 306 |
| 301 if (is_win) { | 307 if (is_win) { |
| 302 if (disable_iterator_debugging) { | 308 if (!enable_iterator_debugging) { |
| 303 # Iterator debugging is enabled by the compiler on debug builds, and we | 309 # Iterator debugging is enabled by default by the compiler on debug |
| 304 # have to tell it to turn it off. | 310 # builds, and we have to tell it to turn it off. |
| 305 defines += [ "_HAS_ITERATOR_DEBUGGING=0" ] | 311 defines += [ "_HAS_ITERATOR_DEBUGGING=0" ] |
| 306 } | 312 } |
| 307 } else if (is_linux && !is_android && current_cpu == "x64" && | 313 } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) { |
| 308 !disable_iterator_debugging) { | |
| 309 # Enable libstdc++ debugging facilities to help catch problems early, see | 314 # Enable libstdc++ debugging facilities to help catch problems early, see |
| 310 # http://crbug.com/65151 . | 315 # http://crbug.com/65151 . |
| 311 # TODO(phajdan.jr): Should we enable this for all of POSIX? | 316 # TODO(phajdan.jr): Should we enable this for all of POSIX? |
| 312 defines += [ "_GLIBCXX_DEBUG=1" ] | 317 defines += [ "_GLIBCXX_DEBUG=1" ] |
| 313 } | 318 } |
| 314 } | 319 } |
| 315 | 320 |
| 316 config("release") { | 321 config("release") { |
| 317 defines = [ "NDEBUG" ] | 322 defines = [ "NDEBUG" ] |
| 318 | 323 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 # with precompiled headers since the source file that's "compiled" for | 442 # with precompiled headers since the source file that's "compiled" for |
| 438 # making the precompiled header is empty. | 443 # making the precompiled header is empty. |
| 439 # | 444 # |
| 440 # This error doesn't happen every time. In VS2013, it seems if the .pch | 445 # This error doesn't happen every time. In VS2013, it seems if the .pch |
| 441 # file doesn't exist, no error will be generated (probably MS tested this | 446 # file doesn't exist, no error will be generated (probably MS tested this |
| 442 # case but forgot the other one?). To reproduce this error, do a build, | 447 # case but forgot the other one?). To reproduce this error, do a build, |
| 443 # then delete the precompile.c.obj file, then build again. | 448 # then delete the precompile.c.obj file, then build again. |
| 444 cflags_c = [ "/wd4206" ] | 449 cflags_c = [ "/wd4206" ] |
| 445 } | 450 } |
| 446 } | 451 } |
| OLD | NEW |