| 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 (current_cpu == "arm") { | 6 if (current_cpu == "arm") { |
| 7 import("//build/config/arm.gni") | 7 import("//build/config/arm.gni") |
| 8 } | 8 } |
| 9 if (current_cpu == "mipsel" || current_cpu == "mips64el") { | 9 if (current_cpu == "mipsel" || current_cpu == "mips64el") { |
| 10 import("//build/config/mips.gni") | 10 import("//build/config/mips.gni") |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 # Else building libyuv gives clang's register allocator issues, | 239 # Else building libyuv gives clang's register allocator issues, |
| 240 # see llvm.org/PR15798 / crbug.com/233709 | 240 # see llvm.org/PR15798 / crbug.com/233709 |
| 241 "-momit-leaf-frame-pointer", | 241 "-momit-leaf-frame-pointer", |
| 242 | 242 |
| 243 # Align the stack on 16-byte boundaries, http://crbug.com/418554. | 243 # Align the stack on 16-byte boundaries, http://crbug.com/418554. |
| 244 "-mstack-alignment=16", | 244 "-mstack-alignment=16", |
| 245 "-mstackrealign", | 245 "-mstackrealign", |
| 246 ] | 246 ] |
| 247 } | 247 } |
| 248 } else if (current_cpu == "arm") { | 248 } else if (current_cpu == "arm") { |
| 249 # Don't set the compiler flags for the WebView build. These will come | 249 cflags += [ |
| 250 # from the Android build system. | 250 "-march=$arm_arch", |
| 251 if (!is_android_webview_build) { | 251 "-mfloat-abi=$arm_float_abi", |
| 252 ] |
| 253 if (arm_tune != "") { |
| 254 cflags += [ "-mtune=$arm_tune" ] |
| 255 } |
| 256 if (arm_use_thumb) { |
| 257 cflags += [ "-mthumb" ] |
| 258 if (is_android && !is_clang) { # Clang doesn't support this option. |
| 259 cflags += [ "-mthumb-interwork" ] |
| 260 } |
| 261 } |
| 262 if (!is_clang) { |
| 263 # Clang doesn't support these flags. |
| 252 cflags += [ | 264 cflags += [ |
| 253 "-march=$arm_arch", | 265 # The tree-sra optimization (scalar replacement for |
| 254 "-mfloat-abi=$arm_float_abi", | 266 # aggregates enabling subsequent optimizations) leads to |
| 267 # invalid code generation when using the Android NDK's |
| 268 # compiler (r5-r7). This can be verified using |
| 269 # webkit_unit_tests' WTF.Checked_int8_t test. |
| 270 "-fno-tree-sra", |
| 271 |
| 272 # The following option is disabled to improve binary |
| 273 # size and performance in gcc 4.9. |
| 274 "-fno-caller-saves", |
| 255 ] | 275 ] |
| 256 if (arm_tune != "") { | 276 } |
| 257 cflags += [ "-mtune=$arm_tune" ] | 277 } else if (current_cpu == "mipsel") { |
| 258 } | 278 if (mips_arch_variant == "r6") { |
| 259 if (arm_use_thumb) { | 279 cflags += [ |
| 260 cflags += [ "-mthumb" ] | 280 "-mips32r6", |
| 261 if (is_android && !is_clang) { # Clang doesn't support this option. | 281 "-Wa,-mips32r6", |
| 262 cflags += [ "-mthumb-interwork" ] | 282 ] |
| 263 } | 283 if (is_android) { |
| 264 } | 284 ldflags += [ |
| 265 if (!is_clang) { | 285 "-mips32r6", |
| 266 # Clang doesn't support these flags. | 286 "-Wl,-melf32ltsmip", |
| 267 cflags += [ | |
| 268 # The tree-sra optimization (scalar replacement for | |
| 269 # aggregates enabling subsequent optimizations) leads to | |
| 270 # invalid code generation when using the Android NDK's | |
| 271 # compiler (r5-r7). This can be verified using | |
| 272 # webkit_unit_tests' WTF.Checked_int8_t test. | |
| 273 "-fno-tree-sra", | |
| 274 | |
| 275 # The following option is disabled to improve binary | |
| 276 # size and performance in gcc 4.9. | |
| 277 "-fno-caller-saves", | |
| 278 ] | 287 ] |
| 279 } | 288 } |
| 289 } else if (mips_arch_variant == "r2") { |
| 290 cflags += [ |
| 291 "-mips32r2", |
| 292 "-Wa,-mips32r2", |
| 293 ] |
| 294 if (mips_float_abi == "hard" && mips_fpu_mode != "") { |
| 295 cflags += [ "-m$mips_fpu_mode" ] |
| 296 } |
| 297 } else if (mips_arch_variant == "r1") { |
| 298 cflags += [ |
| 299 "-mips32", |
| 300 "-Wa,-mips32", |
| 301 ] |
| 280 } | 302 } |
| 281 } else if (current_cpu == "mipsel") { | |
| 282 # Don't set the compiler flags for the WebView build. These will come | |
| 283 # from the Android build system. | |
| 284 if (!is_android_webview_build) { | |
| 285 if (mips_arch_variant == "r6") { | |
| 286 cflags += [ | |
| 287 "-mips32r6", | |
| 288 "-Wa,-mips32r6", | |
| 289 ] | |
| 290 if (is_android) { | |
| 291 ldflags += [ | |
| 292 "-mips32r6", | |
| 293 "-Wl,-melf32ltsmip", | |
| 294 ] | |
| 295 } | |
| 296 } else if (mips_arch_variant == "r2") { | |
| 297 cflags += [ | |
| 298 "-mips32r2", | |
| 299 "-Wa,-mips32r2", | |
| 300 ] | |
| 301 if (mips_float_abi == "hard" && mips_fpu_mode != "") { | |
| 302 cflags += [ "-m$mips_fpu_mode" ] | |
| 303 } | |
| 304 } else if (mips_arch_variant == "r1") { | |
| 305 cflags += [ | |
| 306 "-mips32", | |
| 307 "-Wa,-mips32", | |
| 308 ] | |
| 309 } | |
| 310 | 303 |
| 311 if (mips_dsp_rev == 1) { | 304 if (mips_dsp_rev == 1) { |
| 312 cflags += [ "-mdsp" ] | 305 cflags += [ "-mdsp" ] |
| 313 } else if (mips_dsp_rev == 2) { | 306 } else if (mips_dsp_rev == 2) { |
| 314 cflags += [ "-mdspr2" ] | 307 cflags += [ "-mdspr2" ] |
| 315 } | 308 } |
| 316 | 309 |
| 317 cflags += [ "-m${mips_float_abi}-float" ] | 310 cflags += [ "-m${mips_float_abi}-float" ] |
| 318 } | |
| 319 } else if (current_cpu == "mips64el") { | 311 } else if (current_cpu == "mips64el") { |
| 320 # Don't set the compiler flags for the WebView build. These will come | 312 if (mips_arch_variant == "r6") { |
| 321 # from the Android build system. | 313 cflags += [ |
| 322 if (!is_android_webview_build) { | 314 "-mips64r6", |
| 323 if (mips_arch_variant == "r6") { | 315 "-Wa,-mips64r6", |
| 324 cflags += [ | 316 ] |
| 325 "-mips64r6", | 317 ldflags += [ "-mips64r6" ] |
| 326 "-Wa,-mips64r6", | 318 } else if (mips_arch_variant == "r2") { |
| 327 ] | 319 cflags += [ |
| 328 ldflags += [ "-mips64r6" ] | 320 "-mips64r2", |
| 329 } else if (mips_arch_variant == "r2") { | 321 "-Wa,-mips64r2", |
| 330 cflags += [ | 322 ] |
| 331 "-mips64r2", | 323 ldflags += [ "-mips64r2" ] |
| 332 "-Wa,-mips64r2", | |
| 333 ] | |
| 334 ldflags += [ "-mips64r2" ] | |
| 335 } | |
| 336 } | 324 } |
| 337 } | 325 } |
| 338 | 326 |
| 339 defines += [ "_FILE_OFFSET_BITS=64" ] | 327 defines += [ "_FILE_OFFSET_BITS=64" ] |
| 340 | 328 |
| 341 # Omit unwind support in official builds to save space. We can use breakpad | 329 # Omit unwind support in official builds to save space. We can use breakpad |
| 342 # for these builds. | 330 # for these builds. |
| 343 if (is_chrome_branded && is_official_build) { | 331 if (is_chrome_branded && is_official_build) { |
| 344 cflags += [ | 332 cflags += [ |
| 345 "-fno-unwind-tables", | 333 "-fno-unwind-tables", |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 if (is_android) { | 414 if (is_android) { |
| 427 cflags += [ | 415 cflags += [ |
| 428 "-ffunction-sections", | 416 "-ffunction-sections", |
| 429 "-funwind-tables", | 417 "-funwind-tables", |
| 430 "-fno-short-enums", | 418 "-fno-short-enums", |
| 431 ] | 419 ] |
| 432 if (!is_clang) { | 420 if (!is_clang) { |
| 433 # Clang doesn't support these flags. | 421 # Clang doesn't support these flags. |
| 434 cflags += [ "-finline-limit=64" ] | 422 cflags += [ "-finline-limit=64" ] |
| 435 } | 423 } |
| 436 if (is_android_webview_build) { | |
| 437 # Android predefines this as 1; undefine it here so Chromium can redefine | |
| 438 # it later to be 2 for chromium code and unset for third party code. This | |
| 439 # works because cflags are added before defines. | |
| 440 # TODO(brettw) the above comment seems incorrect. We specify defines | |
| 441 # before cflags on our compiler command lines. | |
| 442 cflags += [ "-U_FORTIFY_SOURCE" ] | |
| 443 } | |
| 444 | |
| 445 if (is_asan) { | 424 if (is_asan) { |
| 446 # Android build relies on -Wl,--gc-sections removing unreachable code. | 425 # Android build relies on -Wl,--gc-sections removing unreachable code. |
| 447 # ASan instrumentation for globals inhibits this and results in a library | 426 # ASan instrumentation for globals inhibits this and results in a library |
| 448 # with unresolvable relocations. | 427 # with unresolvable relocations. |
| 449 # TODO(eugenis): find a way to reenable this. | 428 # TODO(eugenis): find a way to reenable this. |
| 450 cflags += [ "-mllvm -asan-globals=0" ] | 429 cflags += [ "-mllvm -asan-globals=0" ] |
| 451 } | 430 } |
| 452 | 431 |
| 453 defines += [ "ANDROID" ] | 432 defines += [ "ANDROID" ] |
| 454 if (!is_android_webview_build) { | 433 |
| 455 # The NDK has these things, but doesn't define the constants | 434 # The NDK has these things, but doesn't define the constants |
| 456 # to say that it does. Define them here instead. | 435 # to say that it does. Define them here instead. |
| 457 defines += [ "HAVE_SYS_UIO_H" ] | 436 defines += [ "HAVE_SYS_UIO_H" ] |
| 458 } | |
| 459 | 437 |
| 460 # Use gold for Android for most CPU architectures. | 438 # Use gold for Android for most CPU architectures. |
| 461 if (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm") { | 439 if (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm") { |
| 462 ldflags += [ "-fuse-ld=gold" ] | 440 ldflags += [ "-fuse-ld=gold" ] |
| 463 if (is_clang) { | 441 if (is_clang) { |
| 464 # Let clang find the ld.gold in the NDK. | 442 # Let clang find the ld.gold in the NDK. |
| 465 ldflags += [ "--gcc-toolchain=" + | 443 ldflags += [ "--gcc-toolchain=" + |
| 466 rebase_path(android_toolchain_root, root_build_dir) ] | 444 rebase_path(android_toolchain_root, root_build_dir) ] |
| 467 } | 445 } |
| 468 } | 446 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 493 ldflags += [ "-target arm-linux-androideabi" ] | 471 ldflags += [ "-target arm-linux-androideabi" ] |
| 494 } else if (current_cpu == "x86") { | 472 } else if (current_cpu == "x86") { |
| 495 cflags += [ "-target x86-linux-androideabi" ] | 473 cflags += [ "-target x86-linux-androideabi" ] |
| 496 ldflags += [ "-target x86-linux-androideabi" ] | 474 ldflags += [ "-target x86-linux-androideabi" ] |
| 497 } | 475 } |
| 498 } | 476 } |
| 499 } | 477 } |
| 500 } | 478 } |
| 501 | 479 |
| 502 config("compiler_arm_fpu") { | 480 config("compiler_arm_fpu") { |
| 503 if (current_cpu == "arm" && !is_android_webview_build) { | 481 if (current_cpu == "arm") { |
| 504 cflags = [ "-mfpu=$arm_fpu" ] | 482 cflags = [ "-mfpu=$arm_fpu" ] |
| 505 } | 483 } |
| 506 } | 484 } |
| 507 | 485 |
| 508 # runtime_library ------------------------------------------------------------- | 486 # runtime_library ------------------------------------------------------------- |
| 509 # | 487 # |
| 510 # Sets the runtime library and associated options. | 488 # Sets the runtime library and associated options. |
| 511 # | 489 # |
| 512 # How do you determine what should go in here vs. "compiler" above? Consider if | 490 # How do you determine what should go in here vs. "compiler" above? Consider if |
| 513 # a target might choose to use a different runtime library (ignore for a moment | 491 # a target might choose to use a different runtime library (ignore for a moment |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 cflags += [ | 655 cflags += [ |
| 678 # Don't warn about printf format problems. This is off by default in gcc | 656 # Don't warn about printf format problems. This is off by default in gcc |
| 679 # but on in Ubuntu's gcc(!). | 657 # but on in Ubuntu's gcc(!). |
| 680 "-Wno-format", | 658 "-Wno-format", |
| 681 ] | 659 ] |
| 682 cflags_cc += [ | 660 cflags_cc += [ |
| 683 # Don't warn about hash_map in third-party code. | 661 # Don't warn about hash_map in third-party code. |
| 684 "-Wno-deprecated", | 662 "-Wno-deprecated", |
| 685 ] | 663 ] |
| 686 } | 664 } |
| 687 | |
| 688 if (is_android_webview_build) { | |
| 689 # There is a class of warning which: | |
| 690 # 1) Android always enables and also treats as errors | |
| 691 # 2) Chromium ignores in third party code | |
| 692 # So we re-enable those warnings when building Android. | |
| 693 cflags += [ | |
| 694 "-Wno-address", | |
| 695 "-Wno-format-security", | |
| 696 "-Wno-return-type", | |
| 697 "-Wno-sequence-point", | |
| 698 ] | |
| 699 cflags_cc += [ "-Wno-non-virtual-dtor" ] | |
| 700 } | |
| 701 } | 665 } |
| 702 | 666 |
| 703 # rtti ------------------------------------------------------------------------ | 667 # rtti ------------------------------------------------------------------------ |
| 704 # | 668 # |
| 705 # Allows turning Run-Time Type Identification on or off. | 669 # Allows turning Run-Time Type Identification on or off. |
| 706 | 670 |
| 707 config("rtti") { | 671 config("rtti") { |
| 708 if (is_win) { | 672 if (is_win) { |
| 709 cflags_cc = [ "/GR" ] | 673 cflags_cc = [ "/GR" ] |
| 710 } | 674 } |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1110 cflags += [ "-gsplit-dwarf" ] | 1074 cflags += [ "-gsplit-dwarf" ] |
| 1111 } | 1075 } |
| 1112 } | 1076 } |
| 1113 } | 1077 } |
| 1114 | 1078 |
| 1115 config("no_symbols") { | 1079 config("no_symbols") { |
| 1116 if (!is_win) { | 1080 if (!is_win) { |
| 1117 cflags = [ "-g0" ] | 1081 cflags = [ "-g0" ] |
| 1118 } | 1082 } |
| 1119 } | 1083 } |
| OLD | NEW |