Chromium Code Reviews| 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 if (cpu_arch == "arm") { | 6 if (cpu_arch == "arm") { |
| 7 import("//build/config/arm.gni") | 7 import("//build/config/arm.gni") |
| 8 } | 8 } |
| 9 | 9 |
| 10 declare_args() { | |
| 11 # Normally, Android builds are lightly optimized, even for debug builds, to | |
| 12 # keep binary size down. Setting this flag to true disables such optimization | |
| 13 android_full_debug = false | |
| 14 } | |
| 15 | |
| 10 # compiler --------------------------------------------------------------------- | 16 # compiler --------------------------------------------------------------------- |
| 11 # | 17 # |
| 12 # Base compiler configuration. | 18 # Base compiler configuration. |
| 13 # | 19 # |
| 14 # See also "runtime_library" below for related stuff and a discusison about | 20 # See also "runtime_library" below for related stuff and a discusison about |
| 15 # where stuff should go. Put warning related stuff in the "warnings" config. | 21 # where stuff should go. Put warning related stuff in the "warnings" config. |
| 16 | 22 |
| 17 config("compiler") { | 23 config("compiler") { |
| 18 cflags = [] | 24 cflags = [] |
| 19 cflags_c = [] | 25 cflags_c = [] |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 52 # //build/config/gcc:symbol_visibility_hidden. | 58 # //build/config/gcc:symbol_visibility_hidden. |
| 53 "-fvisibility-inlines-hidden", | 59 "-fvisibility-inlines-hidden", |
| 54 ] | 60 ] |
| 55 | 61 |
| 56 # Stack protection. | 62 # Stack protection. |
| 57 if (is_mac) { | 63 if (is_mac) { |
| 58 cflags += [ "-fstack-protector-all" ] | 64 cflags += [ "-fstack-protector-all" ] |
| 59 } else if (is_linux) { | 65 } else if (is_linux) { |
| 60 cflags += [ "-fstack-protector", "--param=ssp-buffer-size=4" ] | 66 cflags += [ "-fstack-protector", "--param=ssp-buffer-size=4" ] |
| 61 } | 67 } |
| 68 | |
| 69 # Linker warnings. | |
| 70 if (!is_chromeos || cpu_arch != "arm") { | |
|
awong
2014/05/12 19:23:02
de morgan's?
!(is_chromeos && cpu_arch == "arm")
| |
| 71 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 | |
| 72 ldflags += [ "-Wl,--fatal-warnings" ] | |
| 73 } | |
| 62 } | 74 } |
| 63 | 75 |
| 64 # Mac-specific compiler flags setup. | 76 # Mac-specific compiler flags setup. |
| 65 # ---------------------------------- | 77 # ---------------------------------- |
| 66 if (is_mac || is_ios) { | 78 if (is_mac || is_ios) { |
| 67 # These flags are shared between the C compiler and linker. | 79 # These flags are shared between the C compiler and linker. |
| 68 common_mac_flags = [] | 80 common_mac_flags = [] |
| 69 | 81 |
| 70 # CPU architecture. | 82 # CPU architecture. |
| 71 if (cpu_arch == "x64") { | 83 if (cpu_arch == "x64") { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 124 if (is_chrome_branded && is_official_build) { | 136 if (is_chrome_branded && is_official_build) { |
| 125 cflags += [ | 137 cflags += [ |
| 126 "-fno-unwind-tables", | 138 "-fno-unwind-tables", |
| 127 "-fno-asynchronous-unwind-tables", | 139 "-fno-asynchronous-unwind-tables", |
| 128 ] | 140 ] |
| 129 } else { | 141 } else { |
| 130 cflags += [ "-funwind-tables" ] | 142 cflags += [ "-funwind-tables" ] |
| 131 } | 143 } |
| 132 } | 144 } |
| 133 | 145 |
| 146 # Linux/Android common flags setup. | |
|
scottmg
2014/05/12 16:33:58
or any of this
| |
| 147 # --------------------------------- | |
| 148 if (is_linux || is_android) { | |
| 149 cflags += [ | |
| 150 "-fPIC", | |
|
awong
2014/05/12 19:23:02
Huh...do we actually build -fPIC for a static link
brettw
2014/05/12 21:00:08
Yes, I verified that this matches the GYP build.
cjhopman
2014/05/12 21:04:19
IDK about linux, but android doesn't build executa
awong
2014/05/12 21:34:23
Gotcha. I was worried about -fPIE more for the is_
| |
| 151 "-pipe", # Use pipes for communicating between sub-processes. Faster. | |
| 152 ] | |
| 153 | |
| 154 ldflags += [ | |
| 155 "-fPIC", | |
| 156 "-Wl,-z,noexecstack", | |
| 157 "-Wl,-z,now", | |
|
awong
2014/05/12 19:23:02
Can we track down why we force immediate binding o
brettw
2014/05/12 21:00:08
I actually know very little about Linux dynamic lo
| |
| 158 "-Wl,-z,relro", | |
| 159 ] | |
| 160 } | |
| 161 | |
| 134 # Linux-specific compiler flags setup. | 162 # Linux-specific compiler flags setup. |
| 135 # ------------------------------------ | 163 # ------------------------------------ |
| 136 if (is_linux) { | 164 if (is_linux) { |
| 137 cflags += [ | 165 cflags += [ "-pthread" ] |
| 138 "-fPIC", | |
| 139 "-pipe", # Use pipes for communicating between sub-processes. Faster. | |
| 140 ] | |
| 141 if (!is_android) { | |
| 142 cflags += [ "-pthread" ] | |
| 143 } | |
| 144 | 166 |
| 145 if (cpu_arch == "x64") { | 167 if (cpu_arch == "x64") { |
| 146 # Use gold for linking on 64-bit Linux only (on 32-bit it runs out of | 168 # Use gold for linking on 64-bit Linux only (on 32-bit it runs out of |
| 147 # address space, and it doesn't support cross-compiling). | 169 # address space, and it doesn't support cross-compiling). |
|
awong
2014/05/12 19:23:02
Is there a bug for this? We should get this fixed.
brettw
2014/05/12 21:00:08
I thought the whole point of Gold is that it's fas
awong
2014/05/12 21:34:23
That wasn't my understanding, but I could be wrong
| |
| 148 gold_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", | 170 gold_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", |
| 149 root_build_dir) | 171 root_build_dir) |
| 150 ldflags += [ | 172 ldflags += [ |
| 151 "-B$gold_path", | 173 "-B$gold_path", |
| 152 | 174 |
| 153 # There seems to be a conflict of --icf and -pie in gold which can | 175 # There seems to be a conflict of --icf and -pie in gold which can |
| 154 # generate crashy binaries. As a security measure, -pie takes | 176 # generate crashy binaries. As a security measure, -pie takes |
| 155 # precendence for now. | 177 # precendence for now. |
| 156 # TODO(brettw) common.gypi has this only for target toolset. | 178 # TODO(brettw) common.gypi has this only for target toolset. |
| 157 #"-Wl,--icf=safe", | 179 #"-Wl,--icf=safe", |
| 158 "-Wl,--icf=none", | 180 "-Wl,--icf=none", |
| 159 | 181 |
| 160 # Experimentation found that using four linking threads | 182 # Experimentation found that using four linking threads |
| 161 # saved ~20% of link time. | 183 # saved ~20% of link time. |
| 162 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thr ead/thread/281527606915bb36 | 184 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thr ead/thread/281527606915bb36 |
| 163 # Only apply this to the target linker, since the host | 185 # Only apply this to the target linker, since the host |
| 164 # linker might not be gold, but isn't used much anyway. | 186 # linker might not be gold, but isn't used much anyway. |
| 165 # TODO(raymes): Disable threading because gold is frequently | 187 # TODO(raymes): Disable threading because gold is frequently |
| 166 # crashing on the bots: crbug.com/161942. | 188 # crashing on the bots: crbug.com/161942. |
| 167 #"-Wl,--threads", | 189 #"-Wl,--threads", |
| 168 #"-Wl,--thread-count=4", | 190 #"-Wl,--thread-count=4", |
| 169 ] | 191 ] |
| 170 } | 192 } |
| 171 | 193 |
| 172 ldflags += [ | 194 ldflags += [ |
| 173 "-fPIC", | |
| 174 "-pthread", | 195 "-pthread", |
| 175 "-Wl,-z,noexecstack", | |
| 176 "-Wl,-z,now", | |
| 177 "-Wl,-z,relro", | |
| 178 ] | 196 ] |
| 179 } | 197 } |
| 180 | 198 |
| 181 # Clang-specific compiler flags setup. | 199 # Clang-specific compiler flags setup. |
| 182 # ------------------------------------ | 200 # ------------------------------------ |
| 183 if (is_clang) { | 201 if (is_clang) { |
| 184 cflags += [ | 202 cflags += [ |
| 185 "-fcolor-diagnostics", | 203 "-fcolor-diagnostics", |
| 186 ] | 204 ] |
| 187 cflags_cc += [ | 205 cflags_cc += [ |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 218 cflags += [ "-mllvm -asan-globals=0" ] | 236 cflags += [ "-mllvm -asan-globals=0" ] |
| 219 } | 237 } |
| 220 | 238 |
| 221 defines += [ "ANDROID" ] | 239 defines += [ "ANDROID" ] |
| 222 if (!is_android_webview_build) { | 240 if (!is_android_webview_build) { |
| 223 # The NDK has these things, but doesn't define the constants | 241 # The NDK has these things, but doesn't define the constants |
| 224 # to say that it does. Define them here instead. | 242 # to say that it does. Define them here instead. |
| 225 defines += [ "HAVE_SYS_UIO_H" ] | 243 defines += [ "HAVE_SYS_UIO_H" ] |
| 226 } | 244 } |
| 227 | 245 |
| 246 # Use gold for Android for most CPU architectures. | |
| 247 if (cpu_arch == "x86" || cpu_arch == "x64" || | |
| 248 (cpu_arch == "arm" && !is_clang)) { | |
| 249 # These architectures support gold for linking. Apparently Clang has not | |
| 250 # been made to work on x86 yet or we would probably need a -B option like | |
| 251 # we do below for Clang-on-arm. | |
|
awong
2014/05/12 19:23:02
Do you mean Clang has not been make to work on arm
brettw
2014/05/12 21:00:08
This matches the GYP file, but I changed it to mat
| |
| 252 ldflags += [ "-fuse-ld=gold" ] | |
| 253 } else if (cpu_arch == "arm") { | |
| 254 # Clang does not support -fuse-ld to invoke the built-in gold linker, | |
| 255 # so use the -B option which requires us to specify the path. | |
|
awong
2014/05/12 19:23:02
Is this the long-term expected approach? Having fl
brettw
2014/05/12 21:00:08
I did some googleing and it seems clang doesn't su
| |
| 256 ldflags += [ | |
| 257 "-B" + rebase_path("//build/android/arm-linux-androideabi-gold", | |
| 258 root_build_dir) | |
| 259 ] | |
| 260 } | |
| 261 | |
| 228 ldflags += [ | 262 ldflags += [ |
| 229 "-Wl,--no-undefined", | 263 "-Wl,--no-undefined", |
| 230 # Don't export symbols from statically linked libraries. | 264 # Don't export symbols from statically linked libraries. |
| 231 "-Wl,--exclude-libs=ALL", | 265 "-Wl,--exclude-libs=ALL", |
| 232 ] | 266 ] |
| 233 if (cpu_arch == "arm") { | 267 if (cpu_arch == "arm") { |
| 234 ldflags += [ | 268 ldflags += [ |
| 235 # Enable identical code folding to reduce size. | 269 # Enable identical code folding to reduce size. |
| 236 "-Wl,--icf=safe", | 270 "-Wl,--icf=safe", |
| 237 ] | 271 ] |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 315 ] | 349 ] |
| 316 } | 350 } |
| 317 | 351 |
| 318 defines += [ | 352 defines += [ |
| 319 "USE_STLPORT=1", | 353 "USE_STLPORT=1", |
| 320 "_STLP_USE_PTR_SPECIALIZATIONS=1", | 354 "_STLP_USE_PTR_SPECIALIZATIONS=1", |
| 321 "__GNU_SOURCE=1", # Necessary for clone(). | 355 "__GNU_SOURCE=1", # Necessary for clone(). |
| 322 ] | 356 ] |
| 323 | 357 |
| 324 ldflags += [ | 358 ldflags += [ |
| 359 "-Wl,--warn-shared-textrel", | |
| 325 "-nostdlib", | 360 "-nostdlib", |
| 326 ] | 361 ] |
| 327 | 362 |
| 328 | |
| 329 # NOTE: The stlport header include paths below are specified in cflags | 363 # NOTE: The stlport header include paths below are specified in cflags |
| 330 # rather than include_dirs because they need to come after include_dirs. | 364 # rather than include_dirs because they need to come after include_dirs. |
| 331 # Think of them like system headers, but don't use '-isystem' because the | 365 # Think of them like system headers, but don't use '-isystem' because the |
| 332 # arm-linux-androideabi-4.4.3 toolchain (circa Gingerbread) will exhibit | 366 # arm-linux-androideabi-4.4.3 toolchain (circa Gingerbread) will exhibit |
| 333 # strange errors. The include ordering here is important; change with | 367 # strange errors. The include ordering here is important; change with |
| 334 # caution. | 368 # caution. |
| 335 if (use_system_stlport) { | 369 if (use_system_stlport) { |
| 336 cflags += [ | 370 cflags += [ |
| 337 # For libstdc++/include, which is used by stlport. | 371 # For libstdc++/include, which is used by stlport. |
| 338 "-I$android_src/bionic", | 372 "-I" + rebase_path("$android_src/bionic", root_build_dir), |
|
awong
2014/05/12 19:23:02
I'm unconvinced this makes sense and the comment a
brettw
2014/05/12 21:00:08
I believe this is only the case on the WebView bui
cjhopman
2014/05/12 21:04:19
Bionic is the Android c library, stlport is the c+
awong
2014/05/12 21:34:23
Yep...so I've been messing a lot with the NDK c++
| |
| 339 "-I$android_src/external/stlport/stlport", | 373 "-I" + rebase_path("$android_src/external/stlport/stlport", |
| 374 root_build_dir), | |
| 340 ] | 375 ] |
| 341 libs += [ | 376 libs += [ |
| 342 "stlport", | 377 "stlport", |
| 343 ] | 378 ] |
| 344 } else { | 379 } else { |
| 345 android_stlport_root = "$android_ndk_root/sources/cxx-stl/stlport" | 380 android_stlport_root = "$android_ndk_root/sources/cxx-stl/stlport" |
| 346 | 381 |
| 347 cflags += [ "-I$android_stlport_root/stlport" ] | 382 cflags += [ |
| 383 "-I" + rebase_path("$android_stlport_root/stlport", root_build_dir) | |
| 384 ] | |
| 348 lib_dirs += [ "$android_stlport_root/libs/$android_app_abi" ] | 385 lib_dirs += [ "$android_stlport_root/libs/$android_app_abi" ] |
| 349 | 386 |
| 350 if (component_mode == "shared_library") { | 387 if (component_mode == "shared_library") { |
| 351 libs += [ "stlport_shared" ] | 388 libs += [ "stlport_shared" ] |
| 352 } else { | 389 } else { |
| 353 libs += [ "stlport_static" ] | 390 libs += [ "stlport_static" ] |
| 354 } | 391 } |
| 355 } | 392 } |
| 393 | |
| 394 libs += [ | |
| 395 # Manually link the libgcc.a that the cross compiler uses. This is | |
| 396 # absolute because the linker will look inside the sysroot if it's not. | |
| 397 rebase_path(android_libgcc_file), | |
| 398 "c", | |
|
awong
2014/05/12 19:23:02
This seems incorrect to me. I think it's being cau
brettw
2014/05/12 21:00:08
GYP build does nostdlib and adds these libraries.
| |
| 399 "dl", | |
| 400 "m", | |
| 401 ] | |
| 402 | |
| 356 } | 403 } |
| 357 } | 404 } |
| 358 | 405 |
| 359 # chromium_code --------------------------------------------------------------- | 406 # chromium_code --------------------------------------------------------------- |
| 360 # | 407 # |
| 361 # Toggles between higher and lower warnings for code that is (or isn't) | 408 # Toggles between higher and lower warnings for code that is (or isn't) |
| 362 # part of Chromium. | 409 # part of Chromium. |
| 363 | 410 |
| 364 config("chromium_code") { | 411 config("chromium_code") { |
| 365 if (is_win) { | 412 if (is_win) { |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 580 # | 627 # |
| 581 # Note that BUILDCONFIG.gn sets up a variable "default_optimization_config" | 628 # Note that BUILDCONFIG.gn sets up a variable "default_optimization_config" |
| 582 # which it will assign to the config it implicitly applies to every target. If | 629 # which it will assign to the config it implicitly applies to every target. If |
| 583 # you want to override the optimization level for your target, remove this | 630 # you want to override the optimization level for your target, remove this |
| 584 # config (which will expand differently for debug or release builds), and then | 631 # config (which will expand differently for debug or release builds), and then |
| 585 # add back the one you want to override it with: | 632 # add back the one you want to override it with: |
| 586 # | 633 # |
| 587 # configs -= default_optimization_config | 634 # configs -= default_optimization_config |
| 588 # configs += [ "//build/config/compiler/optimize_max" ] | 635 # configs += [ "//build/config/compiler/optimize_max" ] |
| 589 | 636 |
| 590 # Default "optimization on" config. On Windows, this favors size over speed. | 637 # Shared settings for both "optimize" and "optimize_max" configs. |
| 591 # | 638 if (is_win) { |
| 592 # IF YOU CHANGE THIS also consider whether optimize_max should be updated. | 639 common_optimize_on_cflags = [ |
| 593 config("optimize") { | 640 "/o2", |
| 594 if (is_win) { | 641 "/ob2", # both explicit and auto inlining. |
| 595 cflags = [ | 642 "/oy-", # disable omitting frame pointers, must be after /o2. |
| 596 "/O2", | 643 "/os", # favor size over speed. |
| 597 "/Ob2", # Both explicit and auto inlining. | 644 ] |
| 598 "/Oy-", # Disable omitting frame pointers, must be after /O2. | 645 common_optimize_on_ldflags = [] |
| 599 "/Os", # Favor size over speed. | 646 } else { |
| 647 common_optimize_on_cflags = [ | |
| 648 # Don't emit the GCC version ident directives, they just end up in the | |
| 649 # .comment section taking up binary size. | |
| 650 "-fno-ident", | |
| 651 # Put data and code in their own sections, so that unused symbols | |
| 652 # can be removed at link time with --gc-sections. | |
| 653 "-fdata-sections", | |
| 654 "-ffunction-sections", | |
| 655 ] | |
| 656 | |
| 657 common_optimize_on_ldflags = [] | |
| 658 if (is_mac) { | |
| 659 if (symbol_level == 2) { | |
| 660 # Mac dead code stripping requires symbols. | |
| 661 common_optimize_on_ldflags += [ | |
| 662 "-Wl,-dead_strip", | |
| 663 ] | |
| 664 } | |
| 665 } else { | |
| 666 # Non-Mac Posix linker flags. | |
| 667 common_optimize_on_ldflags += [ | |
| 668 # Specifically tell the linker to perform optimizations. | |
| 669 # See http://lwn.net/Articles/192624/ . | |
| 670 "-Wl,-O1", | |
| 671 "-Wl,--as-needed", | |
| 672 "-Wl,--gc-sections", | |
| 600 ] | 673 ] |
| 674 } | |
| 675 | |
| 676 if (is_ios) { | |
| 677 common_optimize_on_cflags += [ "-os" ] | |
|
scottmg
2014/05/12 16:33:58
are these really lower case 'O's on iOS?
brettw
2014/05/12 18:06:41
Nope, I think an errant vi command lower-cased eve
awong
2014/05/12 19:23:02
Strange...does Android not compile -Os?
| |
| 601 } else { | 678 } else { |
| 602 if (is_ios) { | 679 common_optimize_on_cflags += [ "-o2" ] |
| 603 cflags = [ "-Os" ] | |
| 604 } else { | |
| 605 cflags = [ "-O2" ] | |
| 606 } | |
| 607 } | 680 } |
| 608 } | 681 } |
| 609 | 682 |
| 683 # Default "optimization on" config. On Windows, this favors size over speed. | |
| 684 config("optimize") { | |
| 685 cflags = common_optimize_on_cflags | |
| 686 ldflags = common_optimize_on_ldflags | |
| 687 if (is_win) { | |
| 688 cflags += [ | |
| 689 "/os", # favor size over speed. | |
|
scottmg
2014/05/12 16:33:58
/Os
| |
| 690 ] | |
| 691 } | |
| 692 } | |
| 693 | |
| 610 # Turn off optimizations. | 694 # Turn off optimizations. |
| 611 config("no_optimize") { | 695 config("no_optimize") { |
| 612 if (is_win) { | 696 if (is_win) { |
| 613 cflags = [ | 697 cflags = [ |
| 614 "/Od", # Disable optimization. | 698 "/Od", # Disable optimization. |
| 615 "/Ob0", # Disable all inlining (on by default). | 699 "/Ob0", # Disable all inlining (on by default). |
| 616 "/RTC1", # Runtime checks for stack frame and uninitialized variables. | 700 "/RTC1", # Runtime checks for stack frame and uninitialized variables. |
| 617 ] | 701 ] |
| 702 } else if (is_android && !android_full_debug) { | |
| 703 # On Android we kind of optimize some things that don't affect debugging | |
| 704 # much even when optimization is disabled to get the binary size down. | |
| 705 cflags = [ | |
| 706 "-O1", | |
| 707 "-fomit-frame-pointer", | |
| 708 "-fdata-sections", | |
| 709 "-ffunction-sections", | |
| 710 ] | |
| 711 ldflags = [ | |
| 712 "-Wl,-O1", | |
|
awong
2014/05/12 19:23:02
This blob of linker flags is the same here as in 6
brettw
2014/05/12 21:00:08
I didn't do that because I didn't feel like this l
awong
2014/05/12 21:34:23
I think the fact that these 4 flags are used in co
brettw
2014/05/13 17:39:21
Will do this in a followup. I have green tries and
| |
| 713 "-Wl,--as-needed", | |
| 714 "-Wl,--gc-sections", | |
| 715 ] | |
| 618 } else { | 716 } else { |
| 619 cflags = [ "-O0" ] | 717 cflags = [ "-O0" ] |
| 620 } | 718 } |
| 621 } | 719 } |
| 622 | 720 |
| 623 # On Windows, turns up the optimization level. This implies whole program | 721 # On Windows, turns up the optimization level. This implies whole program |
| 624 # optimization and link-time code generation which is very expensive and should | 722 # optimization and link-time code generation which is very expensive and should |
| 625 # be used sparingly. For non-Windows, this is the same as "optimize". | 723 # be used sparingly. For non-Windows, this is the same as "optimize". |
| 626 config("optimize_max") { | 724 config("optimize_max") { |
| 725 cflags = common_optimize_on_cflags | |
| 726 ldflags = common_optimize_on_ldflags | |
| 627 if (is_win) { | 727 if (is_win) { |
| 628 cflags = [ | 728 cflags += [ |
| 629 "/O2", | |
| 630 "/Ob2", # Both explicit and auto inlining. | |
| 631 "/Oy-", # Disable omitting frame pointers, must be after /O2. | |
| 632 "/Ot", # Favor speed over size. | 729 "/Ot", # Favor speed over size. |
| 633 "/GL", # Whole program optimization. | 730 "/GL", # Whole program optimization. |
| 634 ] | 731 ] |
| 635 } else { | |
| 636 if (is_ios) { | |
| 637 cflags = [ "-Os" ] | |
| 638 } else { | |
| 639 cflags = [ "-O2" ] | |
| 640 } | |
| 641 } | 732 } |
| 642 } | 733 } |
| 643 | 734 |
| 644 # Symbols ---------------------------------------------------------------------- | 735 # Symbols ---------------------------------------------------------------------- |
| 645 | 736 |
| 646 # TODO(brettw) Since this sets ldflags on Windows which is inherited across | |
| 647 # static library boundaries, if you want to remove the default symbol config | |
| 648 # and set a different one on a target, you also have to do it for all static | |
| 649 # libraries that go into that target, which is messed up. Either we need a | |
| 650 # more flexible system for defining linker flags, or we need to separate this | |
| 651 # out into a "symbols_linker" config that is only applied to DLLs and EXEs. | |
| 652 config("symbols") { | 737 config("symbols") { |
| 653 if (is_win) { | 738 if (is_win) { |
| 654 cflags = [ "/Zi" ] # Produce PDB file, no edit and continue. | 739 cflags = [ "/Zi" ] # Produce PDB file, no edit and continue. |
| 655 ldflags = [ "/DEBUG" ] | 740 ldflags = [ "/DEBUG" ] |
| 656 } else { | 741 } else { |
| 657 cflags = [ "-g2" ] | 742 cflags = [ "-g2" ] |
| 658 } | 743 } |
| 659 } | 744 } |
| 660 | 745 |
| 661 config("minimal_symbols") { | 746 config("minimal_symbols") { |
| 662 if (is_win) { | 747 if (is_win) { |
| 663 # Linker symbols for backtraces only. | 748 # Linker symbols for backtraces only. |
| 664 ldflags = [ "/DEBUG" ] | 749 ldflags = [ "/DEBUG" ] |
| 665 } else { | 750 } else { |
| 666 cflags = [ "-g1" ] | 751 cflags = [ "-g1" ] |
| 667 } | 752 } |
| 668 } | 753 } |
| 669 | 754 |
| 670 config("no_symbols") { | 755 config("no_symbols") { |
| 671 if (!is_win) { | 756 if (!is_win) { |
| 672 cflags = [ "-g0" ] | 757 cflags = [ "-g0" ] |
| 673 } | 758 } |
| 674 } | 759 } |
| 675 | 760 |
| OLD | NEW |