| 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/android/config.gni") | 5 import("//build/config/android/config.gni") |
| 6 import("//build/config/sysroot.gni") | 6 import("//build/config/sysroot.gni") |
| 7 if (cpu_arch == "arm") { | 7 if (cpu_arch == "arm") { |
| 8 import("//build/config/arm.gni") | 8 import("//build/config/arm.gni") |
| 9 } | 9 } |
| 10 | 10 |
| (...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 "-Wno-error=c++0x-compat", | 574 "-Wno-error=c++0x-compat", |
| 575 # Other things unrelated to -Wextra: | 575 # Other things unrelated to -Wextra: |
| 576 "-Wno-non-virtual-dtor", | 576 "-Wno-non-virtual-dtor", |
| 577 "-Wno-sign-promo", | 577 "-Wno-sign-promo", |
| 578 ] | 578 ] |
| 579 } | 579 } |
| 580 } | 580 } |
| 581 } | 581 } |
| 582 | 582 |
| 583 # Optimization ----------------------------------------------------------------- | 583 # Optimization ----------------------------------------------------------------- |
| 584 # |
| 585 # Note that BUILDCONFIG.gn sets up a variable "default_optimization_config" |
| 586 # which it will assign to the config it implicitly applies to every target. If |
| 587 # you want to override the optimization level for your target, remove this |
| 588 # config (which will expand differently for debug or release builds), and then |
| 589 # add back the one you want to override it with: |
| 590 # |
| 591 # configs -= default_optimization_config |
| 592 # configs += [ "//build/config/compiler/optimize_max" ] |
| 584 | 593 |
| 594 # Default "optimization on" config. On Windows, this favors size over speed. |
| 595 # |
| 596 # IF YOU CHANGE THIS also consider whether optimize_max should be updated. |
| 585 config("optimize") { | 597 config("optimize") { |
| 586 if (is_win) { | 598 if (is_win) { |
| 587 cflags = [ | 599 cflags = [ |
| 588 "/O2", | 600 "/O2", |
| 589 "/Ob2", # Both explicit and auto inlining. | 601 "/Ob2", # Both explicit and auto inlining. |
| 590 "/Oy-", # Disable omitting frame pointers, must be after /O2. | 602 "/Oy-", # Disable omitting frame pointers, must be after /O2. |
| 603 "/Os", # Favor size over speed. |
| 591 ] | 604 ] |
| 592 } else { | 605 } else { |
| 593 if (is_ios) { | 606 if (is_ios) { |
| 594 cflags = [ "-Os" ] | 607 cflags = [ "-Os" ] |
| 595 } else { | 608 } else { |
| 596 cflags = [ "-O2" ] | 609 cflags = [ "-O2" ] |
| 597 } | 610 } |
| 598 } | 611 } |
| 599 } | 612 } |
| 600 | 613 |
| 614 # Turn off optimizations. |
| 601 config("no_optimize") { | 615 config("no_optimize") { |
| 602 if (is_win) { | 616 if (is_win) { |
| 603 cflags = [ | 617 cflags = [ |
| 604 "/Od", # Disable optimization. | 618 "/Od", # Disable optimization. |
| 605 "/Ob0", # Disable all inlining (on by default). | 619 "/Ob0", # Disable all inlining (on by default). |
| 606 "/RTC1", # Runtime checks for stack frame and uninitialized variables. | 620 "/RTC1", # Runtime checks for stack frame and uninitialized variables. |
| 607 ] | 621 ] |
| 608 } else { | 622 } else { |
| 609 cflags = [ "-O0" ] | 623 cflags = [ "-O0" ] |
| 610 } | 624 } |
| 611 } | 625 } |
| 612 | 626 |
| 627 # On Windows, turns up the optimization level. This implies whole program |
| 628 # optimization and link-time code generation which is very expensive and should |
| 629 # be used sparingly. For non-Windows, this is the same as "optimize". |
| 630 config("optimize_max") { |
| 631 if (is_win) { |
| 632 cflags = [ |
| 633 "/O2", |
| 634 "/Ob2", # Both explicit and auto inlining. |
| 635 "/Oy-", # Disable omitting frame pointers, must be after /O2. |
| 636 "/Ot", # Favor speed over size. |
| 637 "/GL", # Whole program optimization. |
| 638 ] |
| 639 } else { |
| 640 if (is_ios) { |
| 641 cflags = [ "-Os" ] |
| 642 } else { |
| 643 cflags = [ "-O2" ] |
| 644 } |
| 645 } |
| 646 } |
| 647 |
| 613 # Symbols ---------------------------------------------------------------------- | 648 # Symbols ---------------------------------------------------------------------- |
| 614 | 649 |
| 615 # TODO(brettw) Since this sets ldflags on Windows which is inherited across | 650 # TODO(brettw) Since this sets ldflags on Windows which is inherited across |
| 616 # static library boundaries, if you want to remove the default symbol config | 651 # static library boundaries, if you want to remove the default symbol config |
| 617 # and set a different one on a target, you also have to do it for all static | 652 # and set a different one on a target, you also have to do it for all static |
| 618 # libraries that go into that target, which is messed up. Either we need a | 653 # libraries that go into that target, which is messed up. Either we need a |
| 619 # more flexible system for defining linker flags, or we need to separate this | 654 # more flexible system for defining linker flags, or we need to separate this |
| 620 # out into a "symbols_linker" config that is only applied to DLLs and EXEs. | 655 # out into a "symbols_linker" config that is only applied to DLLs and EXEs. |
| 621 config("symbols") { | 656 config("symbols") { |
| 622 if (is_win) { | 657 if (is_win) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 634 } else { | 669 } else { |
| 635 cflags = [ "-g1" ] | 670 cflags = [ "-g1" ] |
| 636 } | 671 } |
| 637 } | 672 } |
| 638 | 673 |
| 639 config("no_symbols") { | 674 config("no_symbols") { |
| 640 if (!is_win) { | 675 if (!is_win) { |
| 641 cflags = [ "-g0" ] | 676 cflags = [ "-g0" ] |
| 642 } | 677 } |
| 643 } | 678 } |
| OLD | NEW |